相关链接
引言
书接上篇,本章演示密文模式。
密文模式的优势在于网站可以保证收到的消息是来自于微信,明文模式实际上通过普通网页也能得到回复信息
密文模式
公众号配置
1、公众号配置中选择密文模式,此时一定要有EncodingAESKey
2、查看AppID:设置与开发 - 基本配置 - 开发者ID;网站加解密需要用到
网站验证代码
验证流程和明文模式相同,请看明文模式
业务代码实现
微信公众平台推送给网站后台的加密消息有点复杂,细节可以看腾讯文档开发前必读 / 消息加解密技术介绍 (qq.com)
槽点2:文档逻辑混乱,老夫基本上没看懂;但不影响堆代码啊
重大槽点:腾讯给的php代码居然不能用;真是开了眼,友邦惊诧
无奈度娘后找到了一个能用的SDK,使用特别简单;感谢WeChatDeveloper项目
下载wechatdeveloper源码
可以从国内开源托管平台gitee下载(WeChatDeveloper: 【新】微信开发工具包(微信服务号+微信企业号+微信小程序+微信支付+支付宝支付) - Gitee.com);gitee需要有账号,有精神洁癖的同学可以直接从github直接下载,https://github.com/zoujingli/WeChatDeveloper/archive/refs/heads/master.zip
解压后的目录结构如下
/webserverdir |--- WeChatDeveloper |--- We.php |--- ... |--- autoreplay.php |
加解密消息
<?php /*/ step1:配置时检查签名 $token = 'xxx'; $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ exit($_GET["echostr"]); }else{ return false; } /*/ //https://gitee.com/zoujingli/WeChatDeveloper/tree/master include "./WeChatDeveloper/include.php"; $config = [ 'token' => 'xxx',//必须配置 'appid' => 'wxxxx', //必须配置 'appsecret' => '71308e96a204296c57d7cd4b21b883e8', //不需要修改 'encodingaeskey' => 'xxx', //必须配置 // 配置商户支付参数(可选,在使用支付功能时需要) 'mch_id' => "1235704602", 'mch_key' => 'IKI4kpHjU94ji3oqre5zYaQMwLHuZPmj', // 配置商户支付双向证书目录(可选,在使用退款|打款|红包时需要) 'ssl_key' => '', 'ssl_cer' => '', // 缓存目录配置(可选,需拥有读写权限) 'cache_path' => '', ]; try { // 实例对应的接口对象 $msg = new \WeChat\Receive($config); $info = $msg->getReceive('Content'); $text = "replymsg"; $msg = $msg->text($text); $msg->reply(); } catch (Exception $e) { exit("success"); }
下一篇讨论实例:微信公众号自动下载书籍完整实例
参考资料
WeChatDeveloper: 【新】微信开发工具包(微信服务号+微信企业号+微信小程序+微信支付+支付宝支付) - Gitee.com