微信公众号测试号 踩坑之 接口配置信息 106 token check fail
开始官网请阅读消息接口使用指南。下的 文档 , 配置好外网, 域名后, 80端口指向的根目录中放入开发文档中的demo.php, 怎么搞都是配置失败!
网上所有的文档找遍了都没用, 官方文档看了好几遍, 开发文档中的代码也研究了, 还是
{"errcode":-106,"errmsg":"token check fail"}
搞了一天, 撞墙的心都有了. 什么鬼文档乱七八糟一大堆!!!
后来看到一篇文章,说在laravel中配置路由,指向控制器方法, 我就放在tp5.1的框架中, 配置个路由, 指向控制器方法, 把之前测试的网上找的验证文件代码一贴, 改下配置, 直接成功!
当时的心情直想骂娘, 微信使用指南文件我信你个鬼!!!
1 <?php 2 3 namespace app\home\controller; 4 5 use think\Controller; 6 use think\Db; 7 8 class Test extends Controller 9 { 10 // 外部接口, 测试 11 public function wx() 12 { 13 function checkSignature() 14 { 15 $token = 'tstk323'; 16 //先获取到这三个参数 17 $signature = input('signature'); 18 $nonce = input('nonce'); 19 $timestamp = input('timestamp'); 20 21 // 把这三个参数存到一个数组里面 22 $tmpArr = array($timestamp, $nonce, $token); 23 // 进行字典排序 24 sort($tmpArr); 25 26 // 把数组中的元素合并成字符串,impode()函数是用来将一个数组合并成字符串的 27 $tmpStr = implode($tmpArr); 28 29 // sha1加密,调用sha1函数 30 $tmpStr = sha1($tmpStr); 31 // 判断加密后的字符串是否和signature相等 32 if ($tmpStr == $signature) { 33 34 return true; 35 } 36 return false; 37 } 38 39 // 如果相等,验证成功就返回echostr 40 if (checkSignature()) { 41 // 返回echostr 42 $echostr = input('echostr'); 43 if ($echostr) { 44 echo $echostr; 45 exit; 46 } 47 } 48 } 49 50 }