有小程序虚拟支付经验的小伙伴们会很了解微信公众平台的api位置,
最近正好在接虚拟支付,拿查询虚拟币的接口为例:
官方查询虚拟币接口文档
申请账号那些就不在这讨论了,我遇到的问题,和想求助的也是接口的调用.
talk is easy, show you the code.(废话不多说,上代码)
按照官方文档,进行sig,mp_sig加密.代码如下:
最后就是https.post
的代码啦:
其中拼接各个参数的时候一定要仔细阅读官方文档,这里很容易因为疏忽就遗漏、错写或者传错值.
好了,经过检查,参数应该没问题了,运行测试:
{
"errcode":40101,
"errmsg":"openid missing"
}
刚看到这个回馈,我很坦然,因为有错误码说明连接通了,查看具体问题就好了. 于是去官方文档查看错误码,发现根本就没有40101,我就开始紧张了… 经过不懈的努力,我终于来论坛求助了,哈哈哈! 烦请小伙伴们看看,是不是哪里写错了? 或者有遇到40101的小伙伴分享一下经验,求助,萌谢!
是第三方模块抛出来的吧,可以查一下
他这个地方没有用到第三方模块,看这个样子,的确是腾讯返回的错误。 请相信腾讯,他的文档更新很慢的~所以把post的参数打印出来,看看是不是真的没有openid,或者看一下你的支付appid和你获取的用户openid的appid是否一致。
@fhawk 嗯,现在有进展,错误消息直接定位到其中一个参数(mp_sig
),原来的问题原因是url里需要带着access_token
,是的post的url里必须带着显示参数才能过.现在再苦逼的进一步处理参数值(个数,顺序,参数加密过程啥的),等通讯成功后,我会再回复解决方案的,感谢参与讨论.
加打印看看吧
楼主,我跟你遇到的一模一样的问题。我用的也是pomelo的框架。我目前在这个问题上了卡了好几天了。我看你上面回复说需要在url里面带上access_token。但是我这边加上之后依然是提示40101 openid missing…求助。方不方便加个qq或者微信沟通下?
我当前的代码是这样写的。但是还是报40101. 求助求助。
终于搞定了,遇到两个坑分享一下结贴:
1.URL.parse('https::apixxx?access_token=' + access_token)
看到这个url没?是的,虽然你将要用post的方式,但url里必须带access_token这个参数,并且保证access_token未过期.
2.sessionKey
解释为用户秘钥,这个秘钥过期时间貌似说的是3天,但我测试阶段,每次使用旧的(3天内登录过),都会报90009的错误.
最后我在调用取币接口前,重新取sessionKey传入,取币接口返回的就是成功的了.
至于其它的坑,就是参数顺序和加密方法,直接看我帖子的代码就可以了.是正确的. 仅于这点总结送给那些同样遇到此类问题的小伙伴们.