收藏
回答

米大师pay接口90009 mp_sig error 错误

调用接口出错:https://api.weixin.qq.com/cgi-bin/midas/sandbox/pay?access_token=ACCESS_TOKEN

出错代码:

{ errcode: 90009,

  errmsg: 'mp_sig error hint: [x0kHWa08621092]' }


第一:已经根据

https://developers.weixin.qq.com/minigame/dev/tutorial/open-ability/midas-signature.html

对自己的签名方法进行了测试,结果正确。

---------check the nodejs crypt sha256 sign method with digest ('hex')

the target is :1ad64e8dcb2ec1dc486b7fdf01f4a15159fc623dc3422470e51cf6870734726b

the sig result:1ad64e8dcb2ec1dc486b7fdf01f4a15159fc623dc3422470e51cf6870734726b

---------the sha256 digest with ('hex') sig check is success!



---------check the nodejs crypt sha256 sign method with digest ('hex')

the target is :ff4c5bb39dea1002a8f03be0438724e1a8bcea5ebce8f221f9b9fea3bcf3bf76

mp_sig  result:ff4c5bb39dea1002a8f03be0438724e1a8bcea5ebce8f221f9b9fea3bcf3bf76

---------the sha256 digest with ('hex') mp_sig check is success!


第二:测试pay接口有几个疑问。

1、post options的参数是否设置正确?

const post_sandbox_options = {

hostname: 'api.weixin.qq.com',

port: 443,

path: '/cgi-bin/midas/sandbox/pay?access_token=' + access_token,

method: 'POST',

headers: {

'Content-Type':'application/json',

'Content-Length':post_sandbox_body.length,

}

};

2、post的body数据,是不是要包含access_token?

{"access_token":"17_4uVhw70eDY0NwVVt1yXw8tbPPgmfDc-Z6mmiM_-DyCFo6vLhRiy8PRF1r_nbNfqNhfqj3uoc3qpjoErDqLSQ3elElITaaYyk03K3Yfe_2Xj-GoZpDx6bWamVhEUOIOZzRpwyImBaKUcutsmSIGNdAFAXVC",

"amt":10,

"appid":"wxf1453401f1893750",

"bill_no":"angus123",

"offer_id":"1450019397",

"openid":"otyb-4_WbtJc0W6va70J8sbMWGps",

"pf":"android",

"ts":1548338038,

"zone_id":"1",

"sig":"795a63ba873783438aeca33790f05f3b2de7e16fa4a23fd33131d48e2402fef9",

"mp_sig":"657ea92d78a53e5d3dfca18d3b7190fed0c154182bdd14755d70ced92283d665"

}

3、post的url路径是不是正确

https://api.weixin.qq.com/cgi-bin/midas/sandbox/pay?access_token=17_4uVhw70eDY0NwVVt1yXw8tbPPgmfDc-Z6mmiM_-DyCFo6vLhRiy8PRF1r_nbNfqNhfqj3uoc3qpjoErDqLSQ3elElITaaYyk03K3Yfe_2Xj-GoZpDx6bWamVhEUOIOZzRpwyImBaKUcutsmSIGNdAFAXVC


这里卡了一天了,请帮忙看一下。

谢谢!

最后一次编辑于  2019-01-24
回答关注问题邀请回答
收藏

2 个回答

  • 不叫花花白
    不叫花花白
    2019-01-24

    python -c "
    import hashlib;
    import hmac; stringSignTemp='access_token=17_BIPZjcKBH3WzDiFuWR_vHVsDKZkcm_FgRu1QSPdt2RJWgGHo_cTWz-U_Wp7BeR9uS8OplEws3i1QN-W9-tABhqvRcOsMTEYE1nA-J9GSsT0XUti-HYpwn8AsDjZa1ziO9NYK_EiYcWe-Bw23VSXjACAHEJ&amt=10&appid=wxf1453401f1893750&bill_no=Bill_123&offer_id=1450019397&openid=otyb-4_WbtJc0W6va70J8sbMWGps&pf=android&sig=8deaba5aa4bac640ac2a5c466b08263664fbdbef0bbd7c37c9e609dfba03058d&ts=1548318862171&zone_id=1&org_loc=/cgi-bin/midas/sandbox/pay?access_token=17_BIPZjcKBH3WzDiFuWR_vHVsDKZkcm_FgRu1QSPdt2RJWgGHo_cTWz-U_Wp7BeR9uS8OplEws3i1QN-W9-tABhqvRcOsMTEYE1nA-J9GSsT0XUti-HYpwn8AsDjZa1ziO9NYK_EiYcWe-Bw23VSXjACAHEJ&method=POST&session_key=HVdyVnT9FNfSvs8IxK0Jrg==';
    key='HVdyVnT9FNfSvs8IxK0Jrg=='
    print hmac.new(key, msg=stringSignTemp,digestmod=hashlib.sha256).hexdigest()
    "

    406326e0a844257ee50082bf4527e5e04456650bff95af2268760f0adcec033e


    你这签名的算法应该是对的(如果上面参数排序没问题的话),那么就需要检查对应的参数是否正确,比如这里用作签名的key,也就是session_key是否最新的(每次wx.login后,都需要用code去换最新的session_key)。 如果这个参数对不上,那签名最终也会对不上。

    2019-01-24
    有用
    回复 1
    • angus
      angus
      2019-01-24

      你好!

      我查了一下。

      openid和session_key,是通过客户端code得到的,应该不会错。

      另外通过

      '/cgi-bin/token?grant_type=client_credential&appid='+appid+'&secret='+appsecret,

      这个接口,我拿到了access_key,应该也不会出错。

      接下来就是沙盒环境米大师的密钥。

      https://developers.weixin.qq.com/minigame/dev/tutorial/open-ability/midas-signature.html

      网站上写的是,米大师密钥:zNLgAGgqsEWJOg1nFVaO5r7fAlIQxr1u

      如果这个也没有问题的话,接下来就是appsecret和appid了,我都核对过了。


      2019-01-24
      回复
  • angus
    angus
    2019-01-24

    感谢回复。

    我这里有个问题。

    1、就是post optionis写的对吗?

    2、access_token是不是要放在post的body里面。


    谢谢!

    2019-01-24
    有用
    回复
登录 后发表内容