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 相关文章推荐
Discuz! Passport 通行证整合
Mar 27 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
解析thinkphp中的M()与D()方法的区别
Jun 22 PHP
10 个经典PHP函数
Oct 17 PHP
php跨域cookie共享使用方法
Feb 20 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 PHP
Linux安装配置php环境的方法
Jan 14 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 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调用三种数据库的方法(2)
2006/10/09 PHP
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
javascript的几种写法总结
2016/09/30 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
python生成式的send()方法(详解)
2017/05/08 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
解除同居协议书
2015/01/29 职场文书
雷锋的观后感
2015/06/10 职场文书
小学主题班会教案
2015/08/17 职场文书
Python Socket编程详解
2021/04/25 Python