开放平台解密component_verify_ticket交流学习
开放平台 第三⽅平台
授权流程技术说明 第⼀步
解密 推送的component_verify_ticket 推送的url 是
这⾥填写的url
他会在你url后⾯给你穿四个参数会以这样GET的形式传送到你的url所以你只需要GET接收就OK了
还会POST 传送XML数据这个需要你去接收 $encryptMst = file_get_contents('php://input') 这个就可以不要 担⼼接
受不到 下⾯会有解释⼀些坑
以上就是会每10分钟给你发来的数据 下⾯会有代码
这⾥很重要 把字都看了 还有 代码⾥⾯的注释也很重要 仔细看⼀下
现在来说明⼀下 你⾃⼰访问⾃⼰的URL 不会带这些参数所以 总是提⽰你解密失败 假如你有写⽇志 你仔细观察 每⼗分钟她就会有⼀次数
据传过来 代码如果完整的话是会解密成功的 我⾃⼰在这坑⾥连续三天加班11点没弄 明⽩ 估计是太迟钝 所以写下来和⼤家交流⼀下 避免
有和我同样的同学困扰 有问题也可以和我交流 QQ1062549054 还有很多同学们要去⾃习看⽂档 ⽂档他不会说的那么细 ⽽且⽂
档仅供参考 要多查资料
代码⾥ 你可以直接把解密后的component_verify_ticket 存到数据库 下⾯我⾃⼰集百家代码写的代码
<?php define("TOKEN", "Lango"); require_once('wxBizMsgCrypt.php'); $wechatObj = new wechatCallbackapiTe echo $nonce."<br/>"; echo $msg_sign."<br/>"; exit();*/
// 这⾥是PDO ⽅式连接数据库 $pdo = new PDO("mysql:host=localhost;dbname=db","XXXX","XXXX"); $pdo-
>setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec('set names utf8'); // 接受POST
传过来的数据 $encryptMsg = file_get_contents("php://input"); $this->logResult('log.log', 'XML
SHUJU'.$encryptMsg."\n"); $pc = new WXBizMsgCrypt($token, $encodingAesKey, $appId); //转换为simplexml对象
//$xmlResult = simplexml_load_string($encryptMsg); //输出xml节点名称和值 //$encrypt = $xmlResult-
>Encrypt; // 这是提取XML ⾥⾯Encrypt 节点的内容 上⾯注释的 也是⼀种⽅式⽅式很多 都可以⽤ $xml_tree = new
\DOMDocument(); $xml_tree->loadXML($encryptMsg); $array_e = $xml_tree->getElementsByTagName('Encrypt');
$encrypt = $array_e->item(0)->nodeValue; $format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName>
<Encrypt><![CDATA[%s]]></Encrypt></xml>"; $from_xml = sprintf($format, $encrypt); $this->logResult('log.log', $from_xml."\n\r");
// 第三⽅收到平台发送的消息 $msg = ''; $errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg); if ($errCode == 0) { print("解密后: " . $msg . "\n"); $xml = new
\DOMDocument(); $xml->loadXML($msg); $array_e = $xml-
>getElementsByTagName('ComponentVerifyTicket'); $component_verify_ticket = $array_e->item(0)->nodeValue;
代码转换// 写到⽇志 file_put_contents('log.log', $component_verify_ticket."\n\r"); $this->logResult('log.log','解密后component_verify_ticket:'.$component_verify_ticket."\n\r"); // 写到数据库 $sql = "insert into tickets(Ticket) value('$component_verify_ticket');"; $pdo->query($sql); echo 'success'; } else { $this-
>logResult('log.log','解密后失败:'.$errCode."\n"); print("解密后失败:".$errCode . "<br/>"); } } // ⽇志 public function logResult($path,$data) { header("content-type:text/html;charset=utf-8"); file_put_contents($path,
'['.date('Y-m-d : h:i:sa',time()).']'.$data."\n\r",FILE_APPEND); } }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论