Maison  >  Article  >  développement back-end  >  Développement PHP sur le mode de rappel

Développement PHP sur le mode de rappel

php中世界最好的语言
php中世界最好的语言original
2017-12-20 15:54:521255parcourir

Nous savons que des erreurs se produisent toujours lors de l'utilisation du mode de rappel pour développer des comptes d'entreprise WeChat, nous allons donc cette fois vous apporter la solution au problème d'erreur du mode de rappel dans le développement PHPPHP, jetons un coup d'œil.

En fait, la documentation de développement de WeChat est en effet très détaillée, et en utilisant la démo officielle, vous pouvez l'utiliser directement à condition d'apporter de légères modifications. Mais pourquoi cela provoque-t-il toujours une erreur ?

Ci-dessous, je publierai d'abord le code pour activer le mode de rappel que j'ai vérifié avec succès

<?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");
}

On peut voir que le code ci-dessus est fondamentalement le même que celui donné dans le démo. Le même code n'a pas pu être vérifié il y a un jour. Après recherche, il a été constaté que le nom de domaine lors de la vérification de l'URL devait être un nom de domaine fiable. ps : j'utilise Sina Cloud, mais je n'ai pas effectué d'authentification par nom réel, il y a donc un risque. Après avoir authentifié mon vrai nom, il a été ouvert avec succès.

Illumination : Les documents officiels ne se trompent jamais. Il est nécessaire d'étudier attentivement les documents officiels. Lors du processus d'ouverture du mode de rappel du compte WeChat Enterprise, le nom de domaine doit être un nom de domaine de confiance, ce qui est également très important.


Je pense que vous maîtrisez les méthodes après avoir lu ces cas. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture connexe :

La technologie de requête asynchrone Ajax expliquée avec des exemples

Quelle est la syntaxe commune d'AJAX

Principes AJAX et méthodes inter-domaines CORS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn