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 相关文章推荐
phpMyadmin 用户权限中英对照
Apr 02 PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP abstract 抽象类定义与用法示例
May 29 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
php新建文件的方法实例
Sep 26 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
jQuery Ajax 全解析
2009/02/08 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python计算一个序列的平均值的方法
2015/07/11 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
python实现邮件发送功能
2019/08/10 Python
Python如何实现邮件功能
2020/05/27 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
程序员机试试题汇总
2012/03/07 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
关爱留守儿童捐款倡议书
2015/04/27 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技