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 中的str_replace 函数总结
Apr 27 PHP
Smarty安装配置方法
Apr 10 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
PHP删除数组中特定元素的两种方法
Feb 28 PHP
php快速导入大量数据的实例方法
Sep 23 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
php获取随机数组列表的方法
2014/11/13 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
JavaScript类库D
2010/10/24 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
Python 列表list使用介绍
2014/11/30 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
如何把python项目部署到linux服务器
2020/08/26 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
元旦晚会邀请函
2014/02/01 职场文书
平安建设实施方案
2014/03/19 职场文书
小学教师师德承诺书
2014/05/23 职场文书
农村门前三包责任书
2014/07/25 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
婚礼家长致辞
2015/07/27 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python