之前搞过一次一直没有记录。导致这次操作的时候有点吃力报错。一直给我报错63002,invalid signature
记得第一次搞的时候很快啊 这次卡了几个小时时间去排查。
首先我们要根据微信官方文档排查 确定不是自己参数问题
进入官方文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 参考地址
一般 前端 配置的只有这几个东西
这四个 参数要和你后台的参数对应一致。
里面有个很重要的坑。就是你全部检查完了 生成的签名都是OK的,那么有个很重要的一定要检查
就是后端的签名参数url这个
我们看看后端的代码
完整代码
ajax 请求地址过来的 主要是哪个url
后端 我用 php urlencode编码了 但是还是报签名错误。最后无奈 就先请求吧当前分享页面的url
前端获取到 进行编码 传进来 然后拿这个去进行生成签名 然后居然就成功解决
// 步骤1.设置appid和appsecret
$appid = ‘wx77d837734612322c’; //此处填写绑定的微信公众号的appid
$appsecret = ‘de405c059f2d336548a3b6780e8de154’; //此处填写绑定的微信公众号的密钥id
// 步骤2.生成签名的随机串
function nonceStr($length){
$str = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK1NGJBQRSTUVWXYZ’;//随即串,62个字符
s
t
r
l
e
n
=
62
;
w
h
i
l
e
(
strlen = 62; while(
strlen=62;while(length > $strlen){
$str .= $str;
$strlen += 62;
}
s
t
r
=
s
t
r
s
h
u
f
f
l
e
(
str = str_shuffle(
str=strshuffle(str);
return substr(
s
t
r
,
0
,
str,0,
str,0,length);
}
// 步骤3.获取access_token
KaTeX parse error: Expected 'EOF', got '&' at position 97: …ient_credential&̲appid='.appid.’&secret=’.$appsecret);
j
s
o
n
=
j
s
o
n
d
e
c
o
d
e
(
json = json_decode(
json=jsondecode(result,true);
$access_token = $json[‘access_token’];
// 步骤4.获取ticket
KaTeX parse error: Expected 'EOF', got '&' at position 69: …cket?type=jsapi&̲access_token=access_token";
$res = json_decode ( file_get_contents( $url ) );
$ticket = $res->ticket;
// 步骤5.生成wx.config需要的参数
//
s
u
r
l
=
′
h
t
t
p
:
/
/
′
.
surl = 'http://'.
surl=′http://′._SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];
$surl = $_REQUEST[‘url’];
$ws = getWxConfig( $ticket,$surl,time(),nonceStr(16) );
echo json_encode($ws);die;
function getWxConfig(
j
s
a
p
i
T
i
c
k
e
t
,
jsapiTicket,
jsapiTicket,url,
t
i
m
e
s
t
a
m
p
,
timestamp,
timestamp,nonceStr) {
s
t
r
i
n
g
=
"
j
s
a
p
i
t
i
c
k
e
t
=
string = "jsapi_ticket=
string="jsapiticket=jsapiTicket&noncestr=KaTeX parse error: Expected 'EOF', got '&' at position 9: nonceStr&̲timestamp=timestamp&url=$url";
$signature = sha1 ( $string );
$WxConfig["appId"] = 'wx77d837734612322c';
$WxConfig["nonceStr"] = $nonceStr;
$WxConfig["timestamp"] = $timestamp;
$WxConfig["url"] = $url;
$WxConfig["signature"] = $signature;
$WxConfig["rawString"] = $string;
return $WxConfig;
}
前端整体代码如下:
查看实现效果
有问题的大家留言讨论。希望可以帮到你们