读iOS微信支付文档

2018-01-22  本文已影响33人  50ffea394677

1.支付申请流程

1.1 创建APP

前往开放平台注册成为微信开放平台开发者,完成微信认证和创建APP并通过审核

1.2 申请微信支付商户号

提交资料申请微信支付,待资料审核通过后,前往商户平台完成账户验证

1.3 在线签署协议

在线完成协议签署,即开启资金结算功能,启动设计和开发

2.支付账户

APPID:是微信开放平台APP唯一的标识,用于标识该应用。

微信支付商户号:商户申请微信支付后,由微信支付分配的商户收款账号

API密钥:交易过程生成签名的密钥,仅保留在商户系统和微信支付后台,不会在网络中传播。

Appsecret:APPID对应的接口密码,用于获取接口调用凭证access_token时使用。

3.接口规则

3.1 协议规则

传输方式:为保证交易安全性,采取HTTPS协议

提交方式:POST

数据格式:XML

字符编码:UTF-8

签名算法:MD5,后续会兼容SHA1、SHA256、HMAC等。

签名要求:请求和接收数据均需要校验签名

证书要求:调用申请退款,撤销订单接口需要商户证书

判断逻辑:先判断协议字段返回,再判断业务返回,最后判断交易状态

3.2 参数规定

body字段

交易金额

交易类型

货币类型

时间

时间戳

商户订单号

银行类型

3.3 签名算法

3.3.1 签名生成的通用步骤

3.3.1.1 

将所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

◆ 参数名ASCII码从小到大排序(字典序); 

◆ 如果参数的值为空不参与签名; 

◆ 参数名区分大小写; 

◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。 

◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段

3.3.1.2

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

3.3.2 生成随机数算法

微信支付API接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。

3.3.3 商户证书

3.3.4 商户回调API安全

在普通的网络环境下,HTTP请求存在DNS劫持、运营商插入广告、数据被窃取,正常数据被修改等安全风险。商户回调接口使用HTTPS协议可以保证数据传输的安全性。所以微信支付建议商户提供给微信支付的各种回调采用HTTPS协议

4 业务流程

商户系统和微信支付系统主要交互说明:

步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。

步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。

步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay

步骤4:商户APP调起微信支付。

步骤5:商户后台接收支付通知。

步骤6:商户后台查询支付结果。

上一篇下一篇

猜你喜欢

热点阅读