如何用php开启企业微信开发的回调模式
猜想:
懵逼
实践:
微信公众号开发的手册中甚至给出了只需要修改几个参数就能使用的范例.企业微信开发中在一个很不显眼的地方放了一个sample.
https://work.weixin.qq.com/api/doc#10128
看似很好理解(并不,背后封装了不算简单的加密方法)
获取参数->解密->输出解密后的参数
然而却因为一个函数引用传参知识点的缺失而困扰了许久
public function VerifyURL($sMsgSignature, $sTimeStamp, $sNonce, $sEchoStr, &$sReplyEchoStr)
我苦苦寻找着这第五个参数到底是什么.基础啊..
自己试着去引用传递了一下,手册中是通过方法改变外部变量的值,我这里在外部输出内部的值,发现都是可以实现的..
public function test(&$a)
{
$a=10;
return 'test';
} public function test1(){
$this->test($a);
echo $a;// 10
}
那么VerifyURL这样写也不奇怪了
public function VerifyURL($sMsgSignature, $sTimeStamp, $sNonce, $sEchoStr, &$sReplyEchoStr)
{
if (strlen($this->m_sEncodingAesKey) != 43) {
return ErrorCode::$IllegalAesKey;
} $pc = new Prpcrypt($this->m_sEncodingAesKey);
//verify msg_signature
$sha1 = new SHA1;
$array = $sha1->getSHA1($this->m_sToken, $sTimeStamp, $sNonce, $sEchoStr);
$ret = $array[0]; if ($ret != 0) {
return $ret;
} $signature = $array[1];
if ($signature != $sMsgSignature) {
return ErrorCode::$ValidateSignatureError;
} $result = $pc->decrypt($sEchoStr, $this->m_sCorpid);
if ($result[0] != 0) {
return $result[0];
}
$sReplyEchoStr = $result[1]; return ErrorCode::$OK;
}
相当于在函数内部声明了一个外部可以访问的变量
最后献上完整的代码,其实就是根据sample文件改了那么一丢丢的内容,关键在于理解..网上发布的各种版本的开启回调模式的文件思路都一个意思..关键在于理解..
<?php include_once "WXBizMsgCrypt.php"; $qy= new Qy_wechat();
$qy->test1();
$qy->valid(); class Qy_wechat{
private $token;
private $encodingAesKey;
private $corpId; function __construct()
{
$this->token='heTIurA65In';
$this->encodingAesKey='k8UmbddUc83SC3sGEyafepiycJNBj6Iw0JGXmkp1weh';
$this->corpId='WW4e37698eeb6f73c5';
} public function valid(){
$sVerifyMsgSig =$_GET["msg_signature"];
$sVerifyTimeStamp =$_GET["timestamp"];
$sVerifyNonce = $_GET["nonce"];
$sVerifyEchoStr = $_GET["echostr"];// 需要返回的明文 $wxcpt = new WXBizMsgCrypt($this->token, $this->encodingAesKey, $this->corpId); $errCode = $wxcpt -> VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
if ($errCode == 0) {
//
// 验证URL成功,将sEchoStr返回
echo $sEchoStr;
} else {
print("ERR: " . $errCode . "\n\n");
} }
}
猜想:
那么,开启了回调模式,之后我应该做什么呢?
如何用php开启企业微信开发的回调模式的更多相关文章
- Java企业微信开发_03_通讯录同步
一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步” ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取 ...
- Java企业微信开发_02_通讯录同步
一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步” ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取 ...
- Java企业微信开发_01_接收消息服务器配置
一.准备阶段 需要准备事项: 1.一个能在公网上访问的项目: 见:Java微信公众平台开发_01_本地服务器映射外网 2.一个企业微信账号: 去注册:(https://work.weixin.qq.c ...
- Java企业微信开发_07_素材管理之上传本地临时素材文件
一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要 ...
- Java企业微信开发_05_消息推送之发送消息(主动)
一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接 ...
- Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)
注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先 ...
- Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器
一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要 ...
- Java企业微信开发_05_消息推送之被动回复消息
一.本节要点 1.消息的加解密 微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip ,此包中封装好了AES加解密方法,直接调用方法即可. 其中,解 ...
- Java企业微信开发_04_消息推送之发送消息(主动)
源码请见: Java企业微信开发_00_源码及资源汇总贴 一.本节要点 1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息 ...
随机推荐
- location的使用
<script language="javascript" type="text/javascript"> function setUrl(){ ...
- DSP TMS320C6000基础学习(7)—— Bootloader与VectorTable
本文主要简单记录C6000在启动装载过程和中断向量表的配置. 1. Bootloader 如上图, (1)在Device Reset阶段: 设备初始化为默认状态,大部分三态输出都配置为高阻态. (2) ...
- Linq无聊练习系列6--Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习
/*********************Any/All/Contains/Concat/Union/Intersect/Except/take/skip/SqlMethods操作练习******* ...
- SZU:B85 Alec's Eggs
Description Eggs Alec has a lot of eggs. One day, he want to sort them in a ascending sequence by we ...
- Spectral Clustering
谱聚类算法(Spectral Clustering)优化与扩展 谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在 ...
- Nginx反向代理实现Tomcat多个应用80端口访问
应用背景 一般我们在开发时,一个工程里会有多个Web应用,比如一个前台一个后台,那我们就需要配置2个Tomcat服务器,比如一个是http://localhost:8080,一个是http://loc ...
- ELF二进制目标文件详解
以下内容为<<linux内核编程>>笔记 链接程序 找出所有引用的外部模块并链接起来,这些外部模块或函数库一般来自于开发者,操作系统和C运行库. 链接程序取出这些函数库,修订指 ...
- RTB撕开黑盒子 Part 4: Shady Bidding
在这篇文章中,我将告诉你"真实的出价"比你想的微妙,并且你可以使用基于ROI的pacing策略,不需要构建一个期望扣费的模型,你就可以得到完美的期望扣费模型. Same Same ...
- 搜索广告与广告网络Demand技术-流式计算平台
流式计算平台-Storm 我们以Storm为例来看流式计算的功能是什么. 下面内容引用自大圆的博客.在Storm中,一个实时应用的计算任务被打包作为Topology发布,这同Hadoop的MapRed ...
- 终于说再见了!Google Reader
终于说再见了!Google Reader 投递人 itwriter 发布于 2013-07-02 13:28 评论(5) 有760人阅读 原文链接 [收藏] « » 今天 15:00 左右,Go ...