微信小游戏虚拟支付openID和token相关踩坑

  1. openid is missing
    微信小游戏虚拟支付米大师接口返回40101 openid missing的情况
    如果你检查了你的openid确实是传给了米大师的接口的话。主要是因为请求参数格式的问题,在微信的文档中其实他是要求了参数的格式的,在服务端的虚拟支付接口中,文档的最后,他写了POST 数据格式:JSON。
    也就是说我们给他的参数必须是JSON格式的,否则就会出现openid missing的情况。
  2. errcode:41001,errmsg:access_token missing 和 40001 access_token is invalid or not latest
    微信小游戏虚拟支付米大师接口返回41001 access_token missing 和 40001 token失效的情况
    在确保你确实将accessToken传给了米大师的接口后,我就在想,为什么微信给的接口后面直接给了一个access_token=ACCESS_TOKEN这样的参数,一开始我以为这个token的参数是一个标识什么的,我们只需要原封不动的使用这个接口就好了。
    但是其实在我们做mp_sig加密的时候,这个token值是需要加到加密参数里面去的,就很奇怪,为什么给我们的接口后有一个token,我们的参数里又有一个token。这个问题一开始没有想通。
    并且我尝试过将微信给我们的接口后面的access_token=ACCESS_TOKEN去掉,那么接口就会返回41001,token没找到。但是如果原封不动的话,就一直是40001,token失效。
    因为项目的原因,我们的token基本都是实时去获取的,应该说是不存在失效的。
    后来我发现这个真的是个坑,就是因为微信文档写的不清不楚的导致的。在微信给我们的接口后面加的access_token=ACCESS_TOKEN,这里面的ACCESS_TOKEN就是我们传递给接口的token值,也就是说,微信那边在我们给他们的JSON参数里是不会去取token值的,
    只在接口后面直接跟的参数token上去这个值,这就是为什么一开始在把这个直接跟在后面的参数去掉会返回token找不到,因为他根本不在我们PSOT过去的JSON参数里取token。
    而参数失效就是因为我没有把token的值加在后面,以为是原封不动的用这个接口就好了。

最后还要说一点,token是需要参与到mp_sig加密的,所以在加密的时候记得把token加上去,不止是从传给微信的JSON参数。

最后其实微信要求的接口URL应该是(已查询游戏币为例):https://api.weixin.qq.com/cgi-bin/midas/getbalance?access_token=(这里就是你的token值)
参数的话就是JSON格式的:
{
“openid”:“odkx20ENSNa2w5y3g_qOkOvBNM1g”,
“appid”:“wx1234567”,
“offer_id”:“12345678”,
“ts”:1507530737,
“zone_id”:“1”,
“pf”:“android”,
“sig”:“d1f0a41272f9b85618361323e1b19cd8cb0213f21b935aeaa39c160892031e97”,
“mp_sig”:“ff4c5bb39dea1002a8f03be0438724e1a8bcea5ebce8f221f9b9fea3bcf3bf76”
}
(所以从微信给我们的参数例子里就看出来,这里根本没有token,大爷的,微信的文档是真的坑啊,特别是对服务端)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值