如何用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这样写也不奇怪了

如何用php开启企业微信开发的回调模式
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文件改了那么一丢丢的内容,关键在于理解..网上发布的各种版本的开启回调模式的文件思路都一个意思..关键在于理解..

如何用php开启企业微信开发的回调模式
 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开启企业微信开发的回调模式

上一篇:微信小程序开发—小程序开发入门


下一篇:微信开发教程:用户账号绑定到微信公众号的方法分享