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 相关文章推荐
PHP个人网站架设连环讲(二)
Oct 09 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
May 07 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
Yii2 中实现单点登录的方法
Mar 09 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
pdo中使用参数化查询sql
2011/08/11 PHP
php实现简单洗牌算法
2013/06/18 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
javascript测试题练习代码
2012/10/10 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
详解python3百度指数抓取实例
2016/12/12 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
Python类继承和多态原理解析
2020/02/05 Python
python实现查找所有程序的安装信息
2020/02/18 Python
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
法学专业自我鉴定
2014/02/05 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
经营场所使用证明
2015/06/19 职场文书
采购员工作总结范文
2015/08/12 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
JavaScript的Set数据结构详解
2022/02/18 Javascript
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript