Heim > Artikel > Backend-Entwicklung > PHP-Entwicklung zum Callback-Modus
Wir wissen, dass bei der Verwendung des Callback-Modus zur Entwicklung von WeChat-Unternehmenskonten immer Fehler auftreten. Deshalb stellen wir Ihnen dieses Mal die Lösung für das Fehlerproblem des Callback-Modus in der PHPPHP-Entwicklung vor. Werfen wir einen Blick darauf.
Tatsächlich ist die WeChat-Entwicklungsdokumentation sehr detailliert und mit der offiziellen Demo können Sie sie direkt verwenden, solange Sie geringfügige Änderungen vornehmen. Aber warum kommt es immer zu einem Fehler?
Nachfolgend werde ich zunächst den Code zum Aktivieren des Rückrufmodus veröffentlichen, den ich erfolgreich überprüft habe
<?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"); }
Es ist ersichtlich, dass der obige Code im Grunde derselbe ist wie der in der Demo. Derselbe Code konnte vor einem Tag nicht überprüft werden. Bei der Überprüfung wurde festgestellt, dass der Domänenname ein vertrauenswürdiger Domänenname sein muss. ps: Ich verwende Sina Cloud, habe aber keine Authentifizierung mit echtem Namen durchgeführt, daher besteht ein Risiko. Nachdem ich meinen echten Namen authentifiziert habe, wurde es erfolgreich geöffnet.
Erleuchtung: Offizielle Dokumente sind nie falsch. Es ist notwendig, offizielle Dokumente sorgfältig zu studieren. Beim Öffnen des Rückrufmodus des WeChat Enterprise-Kontos muss der Domänenname ein vertrauenswürdiger Domänenname sein, was ebenfalls sehr wichtig ist.
Ich glaube, dass Sie die Methoden beherrschen, nachdem Sie diese Fälle gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Verwandte Lektüre:
Ajax-Technologie für asynchrone Anforderungen anhand von Beispielen erklärt
Was ist die allgemeine Syntax von AJAX
AJAX-Prinzipien und domänenübergreifende CORS-Methoden
Das obige ist der detaillierte Inhalt vonPHP-Entwicklung zum Callback-Modus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!