扫码关注官方订阅号
签名已经生成了,并且和微信签名测试工具生成的签名一样,扫码访问页面时,还是弹出invalid signature,该怎么解决?!求指点!图片描述
微信生成的
自己生成的与微信的一至
不熟悉php ...
确定一下 是不是 url 的问题?
<?php class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function getSignPackage() { $jsapiTicket = getJsapiTicket(); if($jsapiTicket&&$jsapiTicket<>''){ // 注意 URL 一定要动态获取,不能 hardcode. $protocol = (!empty($_SERVER ['HTTPS']) && $_SERVER ['HTTPS'] !== 'off' || $_SERVER ['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $timestamp = time(); $nonceStr = $this->createNonceStr(); // 这里参数的顺序要按照 key 值 ASCII 码升序排序 $string = "jsapi_ticket={$jsapiTicket}&noncestr={$nonceStr}×tamp={$timestamp}&url={$url}"; $signature = sha1($string); $signPackage = array( "appId" => $this->appId, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); return $signPackage; }else{ return false; } } private function createNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i ++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } private function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; } } 上面是开源的库,调用方法就算getSignPackage(),执行之后得到nonceStr、signature、timestamp $jssdk =new \JSSDK(C('APPID'), C('APPSECRET')); $data=$jssdk->getSignPackage(); $this->assign('nonceStr', $data['nonceStr']); $this->assign('signature', $data['signature']); $this->assign('appid', C('APPID')); $this->assign('timestamp', $data['timestamp']); 我记得公众平台的后台有个jssdk的安全目录要设置的。
确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致
最好的方法是下载微信开发工具 电脑端debug调试所有参数
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不熟悉php ...
确定一下 是不是 url 的问题?
确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致
最好的方法是下载微信开发工具 电脑端debug调试所有参数