php微信开发接入


Posted in PHP onAugust 27, 2016

微信,想必大家都不陌生,像支付宝一样在悄悄的改变大家的生活方式。伴随着这种新的生活方式,越来越多的微服务也开始进入我们的生活,我们可以使用微信查询信用卡帐单、还款、支付,在最近的一次微信合作伙伴大会上,腾讯向公众服务号开放支付功能与九大高级接口,透过这些接口,开发者可以实现使用利用微信摇控电视、冰箱、洗衣机甚至电饭煲,使用微信的微支付功能,还能方便地在线购买电影票、手机充值、收看互联网电视付费节目等。

下面,就我个人的了解,简单讲述一下微信开发的第一步,如何与微信服务器对接。

想要涉足微信开发,第一步就是要申请一个微信公众号。公众号分为服务号和订阅号。服务号,故名思义,主要是对用户提供服务的,一般是企业或是服务行业用的比较多,功能相对订阅号要强大一些,可以自定义用户菜单;但也有不方便的地方,就是服务号一个月只允许发送一条群消息。订阅号,主要是提供信息和资讯,一般是媒体用的比较多,功能相对服务号要弱一些,但可以每天发送一条群消息。以下的讲述,都是以服务号为基础。

微信公众号申请好之后,我们还需要一个对外的WEB服务器,方便和微信服务器进行数据交互。这一步我就不细讲了,百度和新浪都提供这个服务。

登录微信公众平台,在左侧的导航菜单中选择“功能”--> “高级功能”, 微信为我们提供了两种“编辑模式”和“开发模式”,这两种模式互斥,即如果开启了“编辑模式”,则需要将“开发模式”关闭,反之亦然。“编辑模式”又称傻瓜模式,开发者可以直接在平台上定义菜单,设置自动回复等功能。这里定义的菜单功能比较弱,用户点击自定义菜单后,只能够回复信息或是打开一个网页,如果需要根据用户点击的菜单做一些其他动作,则需要使用到“开发模式”。

使用”开发模式“的前提是您必须申请成为开发者。

         第一步需要指定接收微信服务器数据的URL,同时还需要指定一个TOKEN(由开发者任意填写,用于生成签名),用于接入时的验证。 

        第二步要验证您指定的URL的有效性,微信服务器会像您指定的URL发送一个GET请求,该请求携带四个参数。

php微信开发接入

开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 

PHP检验代码如下。 

<?php

  $wechatObj = new wechatCallbackAPI();
  $wechatObj->valid(); 


  class wechatCallbackAPI {

    private $token = "WEIXIN";

    private $appId = "APPID";

    private $appSecret = "APPSECRET";
    
    private function checkSignature() {
      $signature = $_GET["signature"];
      $timestamp = $_GET["timestamp"];
      $nonce = $_GET["nonce"];  
          
      $tmpArr = array($this->token, $timestamp, $nonce);
      sort($tmpArr);
      $tmpStr = implode($tmpArr);
      $tmpStr = sha1($tmpStr);
      
      if($tmpStr == $signature) {
        return true;
      } else {
        return false;
      }
    }

    public function valid() {
      $echoStr = $_GET["echostr"];
      
      //valid signature, option
      if($this->checkSignature()){
        echo $echoStr;
        exit;
      }
    }
  }
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php 高性能书写
Dec 11 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
php将金额数字转化为中文大写
Jul 09 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
php中用unset销毁变量并释放内存
May 10 PHP
php微信开发自定义菜单
Aug 27 #PHP
PHP7新特性foreach 修改示例介绍
Aug 26 #PHP
简单的自定义php模板引擎
Aug 26 #PHP
PHP flush 函数使用注意事项
Aug 26 #PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 #PHP
简单的pgsql pdo php操作类实现代码
Aug 25 #PHP
php mongodb操作类 带几个简单的例子
Aug 25 #PHP
You might like
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
PHP数据过滤的方法
2013/10/30 PHP
CI框架常用方法小结
2016/05/17 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
python中sys模块是做什么用的
2020/08/16 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
毕业生个人的求职信范文
2013/12/03 职场文书
大家检讨书5000字
2014/02/03 职场文书
机关办公室岗位职责
2014/04/16 职场文书
个人委托书如何写
2014/09/25 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
经理助理岗位职责
2015/02/02 职场文书
停水通知
2015/04/16 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
2021/11/11 HTML / CSS