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&amp;java(三)
Oct 09 PHP
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
php 之 没有mysql支持时的替代方案
Oct 09 PHP
扩展你的 PHP 之入门篇
Dec 04 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
PHP生成树的方法
Jul 28 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
PHP二维数组去重算法
Dec 17 PHP
php实现查询功能(数据访问)
May 23 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 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
PL-880隐藏功能
2021/03/01 无线电
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
JS前端框架关于重构的失败经验分享
2013/03/17 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
整理Python中的赋值运算符
2015/05/13 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
股东合作协议书
2014/04/14 职场文书
领导参观欢迎词
2015/01/26 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python