PHP微信企业号开发之回调模式开启与用法示例


Posted in PHP onNovember 25, 2017

本文实例讲述了PHP微信企业号开发之回调模式开启与用法。分享给大家供大家参考,具体如下:

暑假实习,领导安排开发微信企业号。在此对遇到的问题进行记录,分享给遇到同样问题的小伙伴,希望对小伙伴们有帮助。微信企业号注册部分就不用多说了,今天记录微信企业号--回调模式开启php部分。

其实微信开发文档说的确实十分详细了,而且使用官方给的demo,只要做稍稍的改变就可以直接用了。但是为什么总是提示错误呢?

下面我先贴出我验证成功的回调模式开启的代码

<?php
//回调开启
include_once "WXBizMsgCrypt.php";
// 假设企业号在公众平台上设置的参数如下
$encodingAesKey = "xxx";
$token = "xxx";
$corpId = "xxx";//填写自己的相关参数,与微信公众平台一致
/*
------------使用示例一:验证回调URL---------------
*企业开启回调模式时,企业号会向验证url发送一个get请求
假设点击验证时,企业收到类似请求:
* GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3×tamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D
* HTTP/1.1 Host: qy.weixin.qq.com
接收到该请求时,企业应
1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及公众平台推送过来的随机加密字符串(echostr),
这一步注意作URL解码。
2.验证消息体签名的正确性
3. 解密出echostr原文,将原文当作Get请求的response,返回给公众平台
第2,3步可以用公众平台提供的库函数VerifyURL来实现。
*/
// $sVerifyMsgSig = HttpUtils.ParseUrl("msg_signature");
$sVerifyMsgSig = $_GET["msg_signature"] ;//"5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3";
// $sVerifyTimeStamp = HttpUtils.ParseUrl("timestamp");
$sVerifyTimeStamp = $_GET["timestamp"];//"1409659589";
// $sVerifyNonce = HttpUtils.ParseUrl("nonce");
$sVerifyNonce = $_GET["nonce"];//"263014780";
// $sVerifyEchoStr = HttpUtils.ParseUrl("echostr");
$sVerifyEchoStr = $_GET["echostr"];//"P9nAzCzyDtyTWESHep1vC5X9xho/qYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp+4RPcs8TgAE7OaBO+FZXvnaqQ==";
// 需要返回的明文
$EchoStr = "";
$wxcpt = new WXBizMsgCrypt($token, $encodingAesKey, $corpId);
$errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
if ($errCode == 0) {
  echo $sEchoStr;
  //
  // 验证URL成功,将sEchoStr返回
  // HttpUtils.SetResponce($sEchoStr);
} else {
  print("ERR: " . $errCode . "\n\n");
}

可见以上代码和demo给的基本一致,在一天前相同的代码也验证不成功的,经过研究发现:验证url时的域名必须是可信域名。ps:我用的是新浪云,但是我没有进行实名认证,所以存在风险,当我实名认证后,就开启成功了。

感悟:官方文档什么时候都不会错,好好研读官方文档很有必要。在微信企业号--回调模式开启的过程中,域名必须是可信域名,这点也非常重要

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
WHOIS类的修改版
Oct 09 PHP
PHP 中英文混合排版中处理字符串常用的函数
Apr 12 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
php实现singleton()单例模式实例
Nov 06 PHP
PHP实现的简单日历类
Nov 29 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 #PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 #PHP
php图片合成方法(多张图片合成一张)
Nov 25 #PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 #PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 #PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 #PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 #PHP
You might like
header跳转和include包含问题详解
2012/09/08 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
软件测试面试题
2015/10/21 面试题
建筑安全责任书范本
2014/07/24 职场文书
学习考察心得体会
2014/09/04 职场文书
委托证明模板
2014/09/16 职场文书
庆祝国庆节标语
2014/10/09 职场文书
2014年档案室工作总结
2014/12/01 职场文书
就业意向协议书
2015/01/29 职场文书
离婚财产分割协议书
2015/08/11 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技