小程序
小游戏
企业微信
微信支付
扫描小程序码分享
js-sdk 1.6.0 客户端 ios 7.0.12
同样config方法 调用后台同一个接口 只是jsApiList不一样 updateAppMessageShareData这个invalid signature,chooseWXPay这个ok
请问可能是什么原因呢
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
同样的问题,解决了吗?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
export default {
beforeRouteEnter(to, from, next) {
// 使用router.push()方式进入,from.matched.length 会大于0
// 所以通过from.matched这个来判断,是router.push()还是直接输入url访问的
const { matched, fullPath } = from
let landUrl
// router.push()跳转的路由,落地页就是上一个页面(from)
// 直接输入url访问落地页就是当前页(to)
if (matched && matched.length > 0) {
landUrl = fullPath
} else {
landUrl = to.fullPath
}
// 把url传给后台,存在中文什么的,需要使用encodeURI转译
getWxSignature({
url: `${location.origin}${encodeURI(landUrl)}`,
}).then(res => {
const { noncestr, signature, timestamp, appid } = res.data
wx.config({
debug: true,
appId: appid,
timestamp: Number(timestamp),
nonceStr: noncestr,
signature: signature,
jsApiList: ['openLocation']
})
next()
调试后应该是url在进入页面后有过重定向或者其他push路由造成的,解决办法是一进页面就将初始页面的url保存下来,签名时用这个url
是不是token 不是最新的。同一页面写一个config 就可以了
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
同样的问题,解决了吗?
假设:
通过pushState跳转路由访问http://a.com/b/c,c这个页面的落地页就是http://a.com/b,所以实际需要签名的页面是http://a.com/b,而不是http://a.com/b/c。
还有一种情况,就是直接输入http://a.com/b/c访问,或者在当前页面刷新,那LandingPage就是自身页,需要签名的自然就是http://a.com/b/c
所以需要同时处理这2种情况,才能保证wx.config不报错。
已vue为例,可以使用beforeRouteEnter这个路由钩子处理:
export default {
beforeRouteEnter(to, from, next) {
// 使用router.push()方式进入,from.matched.length 会大于0
// 所以通过from.matched这个来判断,是router.push()还是直接输入url访问的
const { matched, fullPath } = from
let landUrl
// router.push()跳转的路由,落地页就是上一个页面(from)
// 直接输入url访问落地页就是当前页(to)
if (matched && matched.length > 0) {
landUrl = fullPath
} else {
landUrl = to.fullPath
}
// 把url传给后台,存在中文什么的,需要使用encodeURI转译
getWxSignature({
url: `${location.origin}${encodeURI(landUrl)}`,
}).then(res => {
const { noncestr, signature, timestamp, appid } = res.data
wx.config({
debug: true,
appId: appid,
timestamp: Number(timestamp),
nonceStr: noncestr,
signature: signature,
jsApiList: ['openLocation']
})
})
next()
}
}
调试后应该是url在进入页面后有过重定向或者其他push路由造成的,解决办法是一进页面就将初始页面的url保存下来,签名时用这个url
是不是token 不是最新的。同一页面写一个config 就可以了