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公用函数列表[正则]
Feb 22 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
提高PHP编程效率的方法
Nov 07 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
php用户注册时常用的检验函数实例总结
Dec 22 PHP
php开发微信支付获取用户地址
Oct 04 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP大文件分块上传功能实例详解
Jul 22 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php debug 安装技巧
2011/04/30 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
js中less常用的方法小结
2017/08/09 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
Python实现基于HTTP文件传输实例
2014/11/08 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
什么是数据抽象
2016/11/26 面试题
招商经理岗位职责
2013/11/16 职场文书
零件设计自荐信范文
2013/11/27 职场文书
单位刻章介绍信范文
2014/01/11 职场文书
《社戏》教学反思
2014/04/15 职场文书
小学生读书活动总结
2014/06/30 职场文书
超市理货员岗位职责
2014/07/04 职场文书
门市房租房协议书
2014/12/04 职场文书
部门经理迟到检讨书
2015/02/16 职场文书