博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用php开启企业微信开发的回调模式
阅读量:5096 次
发布时间:2019-06-13

本文共 2514 字,大约阅读时间需要 8 分钟。

猜想:

懵逼

 

实践:

微信公众号开发的手册中甚至给出了只需要修改几个参数就能使用的范例.企业微信开发中在一个很不显眼的地方放了一个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;    }
View Code

相当于在函数内部声明了一个外部可以访问的变量

 

最后献上完整的代码,其实就是根据sample文件改了那么一丢丢的内容,关键在于理解..网上发布的各种版本的开启回调模式的文件思路都一个意思..关键在于理解..

1 
test1(); 7 $qy->valid(); 8 9 10 11 12 class Qy_wechat{13 private $token;14 private $encodingAesKey;15 private $corpId;16 17 function __construct()18 {19 $this->token='heTIurA65In';20 $this->encodingAesKey='k8UmbddUc83SC3sGEyafepiycJNBj6Iw0JGXmkp1weh';21 $this->corpId='WW4e37698eeb6f73c5';22 }23 24 public function valid(){25 $sVerifyMsgSig =$_GET["msg_signature"];26 $sVerifyTimeStamp =$_GET["timestamp"];27 $sVerifyNonce = $_GET["nonce"];28 $sVerifyEchoStr = $_GET["echostr"];// 需要返回的明文29 30 $wxcpt = new WXBizMsgCrypt($this->token, $this->encodingAesKey, $this->corpId);31 32 $errCode = $wxcpt -> VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);33 if ($errCode == 0) {34 //35 // 验证URL成功,将sEchoStr返回36 echo $sEchoStr;37 } else {38 print("ERR: " . $errCode . "\n\n");39 }40 41 }42 }
View Code

 

猜想:

那么,开启了回调模式,之后我应该做什么呢?

转载于:https://www.cnblogs.com/josefa/p/6074382.html

你可能感兴趣的文章
js实现无缝滚动
查看>>
最新32位和64位xp,win7,win8,win10系统大全(电脑装机版)
查看>>
如何向非技术人(程序猿)解释SQL注入?
查看>>
Convolutional_LSTM论文
查看>>
struts2笔记
查看>>
【NOIP模拟赛】就 反悔贪心
查看>>
vue的插槽slot
查看>>
ernd
查看>>
substring
查看>>
Uva 1625 - Color Length(DP)
查看>>
PHP 图片操作(按照指定尺寸压缩,按照比例裁剪)
查看>>
day-22模块的使用
查看>>
[JLOI2012]时间流逝 树上高斯消元 概率期望
查看>>
(笨方法)利用stat函数实现ls -l filename
查看>>
Python Tornado
查看>>
Testbench
查看>>
在线表情包制作网站
查看>>
在新岗位的自动化运维第一步
查看>>
学习ES7+ES8
查看>>
基于Redis的分布式锁到底安全吗(上)?
查看>>