目录
一、统一订单
后端生成订单返回结果:
{
“return_code”: “SUCCESS”,
“return_msg”: “OK”,
“appid”: “appId”,
“mch_id”: “10000100”,
“nonce_str”: “1101000000140429eb40476f8896f4c9”,
“sign”: “7FFECB600D7157C5AA49810D2D8F28BC2811827B”,
“prepay_id”: “1101000000140415649af9fc314aa427”,
“result_code”: “FAIL”,
“err_code”: “ORDERPAID”,
“err_code_des”: “该订单已支付”
}
appid:AppID,mch_id:商户号,nonce_str:随机字符串,prepay_id:预支付交易会话ID等在下一步将会使用到。
二、服务端再次签名
注意:(一)中返回的sign需要后端再次签名,不要直接返回给Android。
微信V1/V2 加密方式有MD5签名和HMAC-SHA256签名,但是V3只支持一种加密方式SHA256-RSA。这里介绍的是V1、V2的接口的签名规则:
“appid=” + appid + “&noncestr=” + nonce_str + “&package=Sign=WXPay” + “&partnerid=” + mch_id + “&prepayid=” + prepayid + “×tamp=” + timeStamp + “&key=” + key;
注意:这里的key为商户的key,而不是AppSecret,商户的key是商户自己设置的;timestamp为当前的时间戳,精确到秒(当前时间戳 截取前10位)。
三、返回给Android端
微信SDK 调起支付的API参数
字段名 | 变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|---|
应用ID | appid | String(32) | 是 | wx8888888888888888 | 微信开放平台审核通过的应用APPID(请登录open.weixin.qq.com查看,注意与公众号的APPID不同) |
商户号 | partnerid | String(32) | 是 | 1900000109 | 微信支付分配的商户号 |
预支付交易会话ID | prepayid | String(64) | 是 | WX1217752501201407033233368018 | 微信返回的支付交易会话ID |
扩展字段 | package | String(128) | 是 | Sign=WXPay | 暂填写固定值Sign=WXPay |
随机字符串 | noncestr | String(32) | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
时间戳 | timestamp | String(10) | 是 | 1412000000 | 时间戳,请见接口规则-参数规定 |
签名 | sign | String(64) | 是 | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名生成算法注意:签名方式一定要与统一下单接口使用的一致 |
注意:上面的参数除了appid、package两个可以不从后端返回,其余参数皆由后端生成,这样做更有利于安全性和统一性;还有V1、V2 不需要使用signType,它用于V3。
后端二次签名返回给Android端示例
{
“appid”: “(一)中的APPID”,
“mch_id”: “(一)中的mch_id”,
“prepay_id”: “(一)中prepay_id”,
“nonce_str”: “(一)中nonce_str”,
“sign”: “(二)中的生成签名,不是(一)中的签名sign”,
“timestamp”:”(二)中的时间戳”
}
如果对您有一些意义,希望您给博主一些鼓励(点赞、关注、收藏),如果有错误欢迎大家评论。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/128351.html