小程序
小游戏
企业微信
微信支付
扫描小程序码分享
应用jssdk 分享给朋友功能
调用页面url :https://www.maitianshouwang.com/demo
使用官方签名工具检验签名均正确,但是还是会报此错误 为什么?
1、官方签名校验工具结果:
2、wx.config配置参数:
3、当前调用页面URL:
4、js安全域名:
12 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
解决了,在前端页面使用encodeURIComponent(location.href.split(‘#’)[0])获取url值传给后端才行。。。。这文档里居然不提?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
如果签名是在服务端完成的话,那么URL一定要编码。
encodeURIComponent(location.href)
主要是config 前后url 注册不一致,加载的时候存一下缓存即可,
main.js
new Vue({ router: router, store, render: h => h(App), created() { localStorage.setItem('firstEntryUrl', location.href); } }).$mount('#app')
wechat.js
function waitUserConfirmPay(packageInfo) { return new Promise((resolve, reject) => { let url = window.localStorage.getItem('firstEntryUrl') const jsApiList = ['requestMerchantTransfer']; console.log('注册的url', url) window.axios({ method: 'GET', url: '/**/**/getJsSignature?url=' + url, headers: {'Content-Type': 'application/json' } }).then(result => { wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: result.appid, // 必填,公众号的唯一标识 timestamp: result.timestamp, // 必填,生成签名的时间戳 nonceStr: result.noncestr, // 必填,生成签名的随机串 signature: result.signature, // 必填,签名 jsApiList // 必填,需要使用的JS接口列表,JSAPI调起用户确认收款 }) wx.ready(function () { // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 console.log('微信调用ready表示成功') wx.checkJsApi({ jsApiList, success: function (res) { if (res.checkResult['requestMerchantTransfer']) { // eslint-disable-next-line no-undef WeixinJSBridge.invoke('requestMerchantTransfer', { mchId: process.env.MCH_ID, appId: process.env.APP_ID, package: packageInfo, }, function (res) { resolve(res); } ); } else { alert('你的微信版本过低,请更新至最新版本。'); reject(new Error('微信版本过低')); } }, fail: function(res) { reject({ payFail: res }) } }); }) wx.error(function (res) { // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 console.log('wxOpen微信调用错误' ,res) reject(new Error('微信配置错误')); }) }).catch(error => { console.error('请求签名失败', error); reject(error); }); }); }
我刚调好 注意这个域名 一定要看仔细这个域
提供一种错误的情况 我人麻了。。后端把url=http://mp.weixin.qq.com?params=当前页面
这样写的 看了半天。。。离谱
应该是url=当前页面
求解呀,大家都是这样的问题,官网能不能写的简单点,写的很多歧义呀,大家都理解不了
我遇到的就更奇怪,使用https(已配置ssl,其他访问都正常,就jssdk的不行),访问就无法注入config,用http访问就正常,奇奇怪怪
成功解决,配置扫一扫调用失败问题请看文章
https://www.cnblogs.com/tangyuqi/p/17645890.html
你好这个js安全域名必须要经过ICP备案的吗?
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
解决了,在前端页面使用encodeURIComponent(location.href.split(‘#’)[0])获取url值传给后端才行。。。。这文档里居然不提?
如果签名是在服务端完成的话,那么URL一定要编码。
encodeURIComponent(location.href)
主要是config 前后url 注册不一致,加载的时候存一下缓存即可,
main.js
new Vue({ router: router, store, render: h => h(App), created() { localStorage.setItem('firstEntryUrl', location.href); } }).$mount('#app')
wechat.js
function waitUserConfirmPay(packageInfo) { return new Promise((resolve, reject) => { let url = window.localStorage.getItem('firstEntryUrl') const jsApiList = ['requestMerchantTransfer']; console.log('注册的url', url) window.axios({ method: 'GET', url: '/**/**/getJsSignature?url=' + url, headers: {'Content-Type': 'application/json' } }).then(result => { wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: result.appid, // 必填,公众号的唯一标识 timestamp: result.timestamp, // 必填,生成签名的时间戳 nonceStr: result.noncestr, // 必填,生成签名的随机串 signature: result.signature, // 必填,签名 jsApiList // 必填,需要使用的JS接口列表,JSAPI调起用户确认收款 }) wx.ready(function () { // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 console.log('微信调用ready表示成功') wx.checkJsApi({ jsApiList, success: function (res) { if (res.checkResult['requestMerchantTransfer']) { // eslint-disable-next-line no-undef WeixinJSBridge.invoke('requestMerchantTransfer', { mchId: process.env.MCH_ID, appId: process.env.APP_ID, package: packageInfo, }, function (res) { resolve(res); } ); } else { alert('你的微信版本过低,请更新至最新版本。'); reject(new Error('微信版本过低')); } }, fail: function(res) { reject({ payFail: res }) } }); }) wx.error(function (res) { // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 console.log('wxOpen微信调用错误' ,res) reject(new Error('微信配置错误')); }) }).catch(error => { console.error('请求签名失败', error); reject(error); }); }); }
我刚调好 注意这个域名 一定要看仔细这个域
提供一种错误的情况 我人麻了。。后端把url=http://mp.weixin.qq.com?params=当前页面
这样写的 看了半天。。。离谱
应该是url=当前页面
求解呀,大家都是这样的问题,官网能不能写的简单点,写的很多歧义呀,大家都理解不了
我遇到的就更奇怪,使用https(已配置ssl,其他访问都正常,就jssdk的不行),访问就无法注入config,用http访问就正常,奇奇怪怪
成功解决,配置扫一扫调用失败问题请看文章
https://www.cnblogs.com/tangyuqi/p/17645890.html
你好这个js安全域名必须要经过ICP备案的吗?