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+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
php中session定期自动清理的方法
Nov 12 PHP
Thinkphp3.2实用篇之计算型验证码示例
Feb 09 PHP
php四种定界符详解
Feb 16 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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中的CMS的涵义
2007/03/11 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
javascript Array.remove() 数组删除
2009/08/06 Javascript
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
js实现购物车功能
2018/06/12 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
python爬虫常用的模块分析
2014/08/29 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
python开发游戏的前期准备
2019/05/05 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
深入了解Python 方法之类方法 &amp; 静态方法
2020/08/17 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
多媒体专业自我鉴定
2014/02/28 职场文书
项目建议书模板
2014/05/12 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
高中生逃课检讨书
2014/10/10 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS