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 相关文章推荐
dedecms中常见问题修改方法总结
Mar 21 PHP
用PHP实现的生成静态HTML速度快类库
Mar 31 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
详解Laravel制作API接口
May 31 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
快速了解Python相对导入
2018/01/12 Python
Tornado 多进程实现分析详解
2018/01/12 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
环保建议书
2014/03/12 职场文书
供货协议书范本
2014/04/22 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
学党史心得体会
2014/09/05 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
第二次离婚起诉书
2015/05/18 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android