如何用php开启企业微信开发的回调模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用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;
    }
View Code

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

 

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

技术分享
 1 <?php
 2 
 3 include_once "WXBizMsgCrypt.php";
 4 
 5 $qy= new Qy_wechat();
 6 $qy->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

 

猜想:

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

以上是关于如何用php开启企业微信开发的回调模式的主要内容,如果未能解决你的问题,请参考以下文章

微信企业号:python 利用itchatmp开启回调模式/判断信息--回复指定内容

微信开发-回调模式

微信企业号开发之回调模式的接口开发

.net之微信企业号开发 回调模式的接口开发

微信企业号开发:启用回调模式

微信公众平台消息接口里,如何用php获取用户头像