18年很火的小程序之虚拟支付错误码{"errcode":40101,"errmsg":"openid missing"}
发布于 6 年前 作者 luckyqqk 5598 次浏览 来自 问答

有小程序虚拟支付经验的小伙伴们会很了解微信公众平台的api位置, 最近正好在接虚拟支付,拿查询虚拟币的接口为例: 官方查询虚拟币接口文档 申请账号那些就不在这讨论了,我遇到的问题,和想求助的也是接口的调用. talk is easy, show you the code.(废话不多说,上代码) getbalance.png 按照官方文档,进行sig,mp_sig加密.代码如下: sha256.png 最后就是https.post的代码啦: httpPost.png 其中拼接各个参数的时候一定要仔细阅读官方文档,这里很容易因为疏忽就遗漏、错写或者传错值. 好了,经过检查,参数应该没问题了,运行测试:

{
    "errcode":40101,
    "errmsg":"openid missing"
}

刚看到这个回馈,我很坦然,因为有错误码说明连接通了,查看具体问题就好了. 于是去官方文档查看错误码,发现根本就没有40101,我就开始紧张了… 经过不懈的努力,我终于来论坛求助了,哈哈哈! 烦请小伙伴们看看,是不是哪里写错了? 或者有遇到40101的小伙伴分享一下经验,求助,萌谢!

7 回复

是第三方模块抛出来的吧,可以查一下

他这个地方没有用到第三方模块,看这个样子,的确是腾讯返回的错误。 请相信腾讯,他的文档更新很慢的~所以把post的参数打印出来,看看是不是真的没有openid,或者看一下你的支付appid和你获取的用户openid的appid是否一致。

@fhawk 嗯,现在有进展,错误消息直接定位到其中一个参数(mp_sig),原来的问题原因是url里需要带着access_token,是的post的url里必须带着显示参数才能过.现在再苦逼的进一步处理参数值(个数,顺序,参数加密过程啥的),等通讯成功后,我会再回复解决方案的,感谢参与讨论.

加打印看看吧

楼主,我跟你遇到的一模一样的问题。我用的也是pomelo的框架。我目前在这个问题上了卡了好几天了。我看你上面回复说需要在url里面带上access_token。但是我这边加上之后依然是提示40101 openid missing…求助。方不方便加个qq或者微信沟通下?

QQ截图20180723164911.png我当前的代码是这样写的。但是还是报40101. 求助求助。

终于搞定了,遇到两个坑分享一下结贴: 1.URL.parse('https::apixxx?access_token=' + access_token)看到这个url没?是的,虽然你将要用post的方式,但url里必须带access_token这个参数,并且保证access_token未过期. 2.sessionKey解释为用户秘钥,这个秘钥过期时间貌似说的是3天,但我测试阶段,每次使用旧的(3天内登录过),都会报90009的错误. 最后我在调用取币接口前,重新取sessionKey传入,取币接口返回的就是成功的了.

至于其它的坑,就是参数顺序和加密方法,直接看我帖子的代码就可以了.是正确的. 仅于这点总结送给那些同样遇到此类问题的小伙伴们.

回到顶部