自学Android开发 微信支付签名算法

目录

一、统一订单

二、服务端再次签名

三、返回给Android端


一、统一订单

后端生成订单返回结果:

{
    "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 + "&timestamp=" + timeStamp + "&key=" + key;

注意:这里的key为商户的key,而不是AppSecret,商户的key是商户自己设置的;timestamp为当前的时间戳,精确到秒(当前时间戳 截取前10位)

三、返回给Android端

微信SDK 调起支付的API参数

字段名变量名类型必填示例值描述
应用IDappidString(32)wx8888888888888888微信开放平台审核通过的应用APPID(请登录open.weixin.qq.com查看,注意与公众号的APPID不同)
商户号partneridString(32)1900000109微信支付分配的商户号
预支付交易会话IDprepayidString(64)WX1217752501201407033233368018微信返回的支付交易会话ID
扩展字段packageString(128)Sign=WXPay暂填写固定值Sign=WXPay
随机字符串noncestrString(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法
时间戳timestampString(10)1412000000时间戳,请见接口规则-参数规定
签名signString(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":"(二)中的时间戳"
}

如果对您有一些意义,希望您给博主一些鼓励(点赞、关注、收藏),如果有错误欢迎大家评论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值