微信支付

下单    submitCat  :totalprice    productIds  pay_way   addressId    couponid-------->oid   isNeedPay   payway


支付:charge:oid   price  payway

 

appid   partnerid   prepayid   packagevalue   nonceStr  timestamp  sign

用户打开商品app客户端 ,选择商品下单    请求生成支付订单    商品客户端后台调用统一下单api  在微信后台生成预付订单  返回预付信息  prepayid  到客户端后台客户端生成一个签名文件   客户端后台  返回prepayid 与sign到客户端      用户确认支付,客户端支付参数通过调用sdk 吊起微信支付  ,微信发起支付请求  微信后台验证支付参数和支付权限  然后返回需要支付授权  用户确认授权 输入密码      然后通过微信客户端提交支付授权给微信后台  微信后台验证授权 完成交易。

 微信支付主要是采用了https+签名算法加密 

    签名加密两步走  : 

  第一步 :设接收到和发送的数据 为集合M,将集合M内非空参数按照ASCII码从小到大进行排序,使用url键值对的方式拼接成String字符串A 。

第二步:

  在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue

 

假设传送的参数如下:

appid: wxd930ea5d5a258f4f

mch_id: 10000100

device_info: 1000

body: test

nonce_str: ibuaiVcKdpRxkhJA

第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:

stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

第二步:拼接API密钥:

stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户平台设置的密钥key

sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" //注:MD5签名方式

sign=hash_hmac("sha256",stringSignTemp,key).toUpperCase()="6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6" //注:HMAC-SHA256签名方式


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值