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 各种排序算法实现代码
Aug 20 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
Jun 13 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
php格式化日期实例分析
Nov 12 PHP
php绘制一个扇形的方法
Jan 24 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
Laravel5中Cookie的使用详解
May 03 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
thinkPHP事务操作简单案例分析
Oct 17 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实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
vue.js项目nginx部署教程
2018/04/05 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
浅析Python中的join()方法的使用
2015/05/19 Python
python自动化生成IOS的图标
2018/11/13 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
python绘制直方图和密度图的实例
2019/07/08 Python
python实现批量文件重命名
2019/10/31 Python
Python xlwt模块使用代码实例
2020/06/10 Python
python 写一个水果忍者游戏
2021/01/13 Python
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
.NET面试问题集
2015/12/08 面试题
计算机系毕业生推荐信
2013/11/06 职场文书
简短的公司员工自我评价分享
2013/11/13 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
市场营销专业求职信
2014/06/17 职场文书
党校个人总结
2015/03/04 职场文书