今天做微信支付的时候遇到了一件很郁闷的事……怎么检查代码都没发现问题……然而微信支付界面就是“千呼万唤不出来”……直到检查了一遍sign算法……才发现问题……(sign这种参数讲道理应该是由服务器返回吧……)
微信支付签名算法的一些坑 我的sign算法sign 算法注意事项下面就是重点了:getWXSign算法传入的json应该如下构造:
JSONObject signParams = new JSONObject(); signParams.put("appid", req.appId); signParams.put("noncestr", req.nonceStr); signParams.put("package", req.packageValue); signParams.put("partnerid", req.partnerId); signParams.put("prepayid", req.prepayId); signParams.put("timestamp", req.timeStamp);注意一点……Key值是一定要小写……这坑爹玩意跟PayReq的参数不一样的……PayReq中Appid是这样的PayReq.appId
下面就是参数说明表格:
字段名变量名类型必填示例值描述应用IDappidString(32)是wx8888888888888888微信开放平台审核通过的应用APPID商户号partneridString(32)是1900000109微信支付分配的商户号预支付交易会话IDprepayidString(32)是WX1217752501201407033233368018微信返回的支付交易会话ID扩展字段packageString(128)是Sign=WXPay暂填写固定值Sign=WXPay随机字符串noncestrString(32)是5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法时间戳timestampString(10)是1412000000时间戳,请见接口规则-参数规定签名signString(32)是C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法具体说明可以参考如下链接: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12 只要严格按照说明做就没问题了
