收藏
回答

微信支付V2调起微信app的时候一直显示签名错误?

response_dict={
    "appId":APP_ID,
    "partnerId":MCH_ID,
    "prepayId":prepay_id,
    "packageValue":"Sign=WXPay",
    "nonceStr":nonceStr,
    "timeStamp":timeStamp,
}

sign=get_sign(response_dict,API_KEY)
response_dict.update(
    {
        "sign":sign,
     }
)这个是我服务端生成签名的代码,开始获取prepay_id的时候没报错,就是微信调起支付的时候报错!

val msgApi= WXAPIFactory.createWXAPI(this@WXParActivity,null)
msgApi.registerApp(UserUtils.APP_ID) //注册到微信
val req= PayReq()

req.appId= payData?.appId
req.partnerId= payData?.partnerId
req.prepayId= payData?.prepayId
req.nonceStr= payData?.nonceStr
req.timeStamp= payData?.timeStamp
req.packageValue= payData?.packageValue
req.sign= payData?.sign
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
msgApi.sendReq(req)
这是我微信支付调起的代码


回答关注问题邀请回答
收藏

2 个回答

  • 支付技术助手8
    支付技术助手8
    星期一 10:30

    请按照以下几点进行排查:

    1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误

    2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)

    3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)

    4、确认参数的大小写,参数名与接口文档一致

    5、签名原串的参数值使用原始值,不需要encode

    6、接口需要使用UTF-8编码

    星期一 10:30
    有用
    回复
  • Mr.宋
    Mr.宋
    星期六 11:48

    解决了 签名参数要小写

    星期六 11:48
    有用
    回复
登录 后发表内容
问题标签