小程序
OfferID(支付应用ID) 1450493965 问题描述在使用 [代码]wx.requestVirtualPayment[代码] 进行虚拟支付时,持续报错 [代码]SIGNATURE_INVALID errCode: -15005[代码],即使服务端返回的signature经验证完全正确。 复现步骤用户打开小程序调用支付接口,使用 [代码]parse.getSessionKey()[代码] 获取有效的sessionKey(通过 [代码]wx.checkSession()[代码] 验证)将sessionKey传递给服务端 [代码]/activity/payment/virtualPay[代码]服务端使用HMAC-SHA256算法计算signature调用 [代码]wx.requestVirtualPayment[代码] 并传入服务端返回的参数报错:[代码]requestVirtualPayment:fail SIGNATURE_INVALID errCode: -15005[代码]预期结果支付正常进行 实际结果报错 [代码]SIGNATURE_INVALID errCode: -15005[代码] 关键信息服务端请求参数{ "serviceKey": "userdownloadtraffic", "tradeType": 1, "userId": "1405204833103639620", "count": 5, "sessionKey": "vSIhSBBIIsz5tjP0hqFxZQ==", "equipment": "ios", "platform": "miniprogram" } 服务端返回数据{ "code": "200", "message": "操作成功", "data": { "signData": { "offerId": "1450493965", "buyQuantity": 994, "env": 1, "currencyType": "CNY", "outTradeNo": "Fotoo202604012039292964878004225", "attach": "fotoo" }, "signDataStr": "{\"offerId\":\"1450493965\",\"buyQuantity\":994,\"env\":1,\"currencyType\":\"CNY\",\"outTradeNo\":\"Fotoo202604012039292964878004225\",\"attach\":\"fotoo\"}", "paySig": "83cb3ac3fb66592fa9e44580336b46c6523adea31896ba3968538545878f5f2b", "signature": "344c448f7f41f716cdb502fcd8781e3d5158faaad8aabe20becb80fd698b6d3a", "mode": "short_series_coin" } } 签名验证结果使用Python验证服务端signature计算完全正确: import hmac import hashlib import json sessionKey = 'vSIhSBBIIsz5tjP0hqFxZQ==' signData = { 'offerId': '1450493965', 'buyQuantity': 994, 'env': 1, 'currencyType': 'CNY', 'outTradeNo': 'Fotoo202604012039292964878004225', 'attach': 'fotoo' } signDataStr = json.dumps(signData, separators=(',', ':')) signature = hmac.new( sessionKey.encode('utf-8'), signDataStr.encode('utf-8'), hashlib.sha256 ).hexdigest() # 计算结果: 344c448f7f41f716cdb502fcd8781e3d5158faaad8aabe20becb80fd698b6d3a # 服务端返回: 344c448f7f41f716cdb502fcd8781e3d5158faaad8aabe20becb80fd698b6d3a # 匹配结果: True 前端代码逻辑sessionKey获取逻辑// utils/parse.js getSessionKey(hasFouce=false){ return new Promise(async (success,fail)=>{ if(!hasFouce){ this.sessionKey=await this.checkSessionKey(); if(this.sessionKey){return success(this.sessionKey);} } wx.login({ success:async res=>{ App.demand('/sys/loadSessionKey','GET',{jsCode:res.code}).then(res=>{ this.sessionKey=res.data; getApp().setStorageSync('sessionKey',this.sessionKey); success(this.sessionKey) }) }, }) }) }, checkSessionKey(){ return new Promise((success,fail)=>{ this.sessionKey=getApp().getStorageSync('sessionKey'); if(!this.sessionKey) return success(''); wx.checkSession({ success:res=>{ return success(this.sessionKey) }, fail:res=>{ return success('') } }) }) } 虚拟支付调用逻辑// pages/wxpay/wxpay.js async requestIAPPayment() { let payParams=(await App.demand('/activity/payment/virtualPay','POST',{ serviceKey:this.options.serviceKey, tradeType:1, userId:this.options.userId, count:this.options.count||1, sessionKey:await parse.getSessionKey(), equipment: this.getEquipment(), platform: "miniprogram", })).data; wx.requestVirtualPayment({ signData: payParams.signDataStr, paySig: payParams.paySig, signature: payParams.signature, mode: payParams.mode, success:(res)=> { console.info('requestVirtualPayment success', res) }, fail: (res)=> { console.error('requestVirtualPayment fail',res); }, }); } 问题分析服务端签名验证通过:使用服务端返回的sessionKey和signDataStr,通过HMAC-SHA256算法计算出的signature与服务端返回值完全一致sessionKey获取逻辑正常:使用 [代码]wx.checkSession()[代码] 验证sessionKey有效性验证通过则复用缓存的sessionKey验证失败才调用 [代码]wx.login()[代码] 重新获取错误持续出现:即使使用相同的有效sessionKey,错误仍然持续可能原因推测:微信客户端内部维护的sessionKey状态与前端通过 [代码]wx.login()[代码] 获取的不一致[代码]wx.checkSession()[代码] 返回成功,但微信客户端内部sessionKey实际上已经失效iOS平台的特殊行为或bug补充信息环境变量:[代码]env=1[代码](沙箱环境)多次测试使用相同sessionKey:[代码]vSIhSBBIIsz5tjP0hqFxZQ==[代码]每次都复用缓存的sessionKey,没有频繁调用 [代码]wx.login()[代码]
https://developers.weixin.qq.com/miniprogram/dev/server/API/user-login/api_code2session.html,实际返回{'session_key': 'hhSNzNCK+wY50iDMIJYLsw==', 'openid': 'o4yNL1-ISn3_94HG1-p-NfbrGso0'}。
你好! 我公众号的名字是“Mana App”。大约从3月31号开始,在付费加热中出现了效果很差,或加热无效的问题。 由于我已不是第一次给文章加热,所以我能明显感觉到确实存在加热效果异常。 起初,我以为是加热时段拥挤或定向人群太窄等原因造成的,但今天又加热无效让我排除了前述因素。 请问,能帮我排查一下是什么原因吗?谢谢!
分享与收藏功能 /鸿蒙开发手册 网页类型分享示例 当两个应用的callbackAbility都是一样的话,分享会有问题吗?我现在的问题是,一个应用能分享,另一个应用点击微信分享没有反应,也没有报错,就是拉不起微信 [图片]
个人的小程序备案,小程序备案这里提示已经是,3月330号已经是管局审核中,提示24小时候会收到验证短信。截止到现在还没有收到短信 [图片] [图片]
https://developers.weixin.qq.com/miniprogram/dev/server/API/VirtualPayment/api_refund_order.htmlofferIdofferId
如需浏览,请长按网址复制后使用浏览器访问这个问题 断断续续 一直出现 一直没有人合理的解决问题 上次官方回复说网页内 有客服 信息 我检查以后确实没有 也没有任何其他违规 域名正常 备案正常 就是每隔一段时间就会被腾讯莫名的禁止访问 请问可以给个合理的解释吗 官方人员可以认真的帮助用户解决问题吗?
微信小程序主体变更后重新备案,需先注销原备案,进行重新备案,但管理员手机号码注销了无法收验证码怎么办? 申请人工客服,不要AI回复。我已经尝试了在成员管理中更改管理员。但是在注销备案时提示的小程序管理员手机号与现有管理员手机号不是一个,而且是一个已经无法使用的手机号,无法获取到验证码,是空号。 目前处于主体变更成功,且需要重新备案阶段,注销备案的管理员手机号已不再使用,请人工客服帮忙解决。 [图片]
我的公众号为什么没有回复功能,我反馈了n次都还没有修复 [图片]
errMsg: "chooseAddress:fail api scope is not declared in the privacy agreement", errno: 112
不点“总保持以上选择”就没有,就推送不了 [图片][图片]
我微信公众号认证时候,重复付款了,申请退款300元。怎么退费?
注册小程序备案个人之后如何再不变更管理员的情况下上传营业执照变成个体户?
场景:用户在某个子页面浏览内容时,通过胶囊按钮关闭小程序,然后在微信对话窗口打开分享页面时,可以在用户上次浏览的页面的基础上再跳转到目标页; 目前的问题是:每次打开分享页,都会清空已有页面栈,导致终端用户浏览体验
[图片]
[图片][图片]
您好,我的个人公众号,视频号,两个账号的超级管理员微信号均为同一个人,实名主体均为同一人,身份证号同一人,主体信息、管理员信息 100% 完全一致,但在双向绑定(公众号后台 / 视频号端)时,均提示「公众号与视频号的管理员和主体不一致」,已完成所有自查:核对主体信息、解绑旧绑定、等待系统同步、换设备重试,问题仍未解决[图片],申请人工协助校验系统数据,强制完成两个账号的绑定,感谢!
webview 里面的页面,嵌入多个iframe时,或内存过大时。webview会崩溃,再重新加载。
我在微信公众号中配置了一个微信菜单,配置的菜单连接是:https://sd.lsccb.com/merChant/page/searchDeal/index.html,如果关注了,就可以进入到这个页面中,如果未关注会跳转到:https://sd.lsccb.com/merChant/pagehttps://sd.lsccb.com/merChant/page/searchDeal/chooseMct.html这个连接上,我想问的是,为什么未关注的时候这个页面地址会被多拼接了一个:https://sd.lsccb.com/merChant/page?
根据小程序更换主体的相关操作流程,我们现有的小程序原主体A是政府机构,在变更为B的政府机构过程中,但A的公章已被作废无法使用状态,无法在《微信小程序主体变更申请函》文件上盖章,更换后的目标机构C也为政府机构。这种情况下,是否同时需要《微信小程序主体变更申请函》文件和对此文件的公证流程。 申请函盖章如何解决,公证文件需要哪些资料准备,具体操作应该如何操作