招商支付仅有一种支付方式,其应用场景是基于移动端的。
这里先对一网通支付流程进行一个梳理。用户若是首次使用招商支付,招商会引导用户绑定银行卡(即招商所谓的签约),绑定完成后再进行支付。
招商也提供了单独的签约接口,你也可以利用该接口,在合适的时机先引导用户完成签约操作,之后用户使用支付时将直接进入支付流程。
为了方便,这里将不单独介绍签约接口,假设场景是直接调起支付,由招商一网通完成引导用户签约。
这里在正式开始介绍支付流程时,我们先来了解下招商的签名与验签,这里不涉及其具体的实现,主要是与微信、支付宝进行对比流程,方便大家理解。
支付宝、微信颁发的公钥都是再起开放平台,如果用户不主动发起,就不会发生变化。而招商采用了每天进行变化公钥来确保安全性。因此大家必须在指定的时间内对公钥进行更新。
招行公钥会定期更换,更换频率较低。商户可以通过API每天取一次招行公钥后存在本地,每次验签时使用即可,建议每天凌晨2:15发起查询招行公钥请求更新公钥。
在demo示例中,我将招商的公钥存放在 cmbconfig.php
配置文件中,那么你就必须每天在 凌晨2:15 更新这个值。否则会带来异步通知无法通过的错误
接下来介绍招商一网通支付需要的字段信息
字段 | 类型 | 是否必须 | 介绍 | 示例 |
---|---|---|---|---|
order_no | string(32) | 是 | 订单号,数字+字母随意组合 | Akkk00123 |
amount | string(14) | 是 | 支付金额 | 8.88 |
timeout_express | string(14) | 否 | 过期时间 | 1502432633 |
return_param | string(256) | 否 | 异步通知时,原样返回的数据 | abcde123 |
client_ip | string(64) | 否 | 商户取得的客户ip | 123.12.12.123 |
date | string(8) | 是 | 订单日期,格式:yyyyMMdd | 20170811 |
agr_no | string(32) | 是 | 客户协议号,签约时产生的 | 1234567890 |
serial_no | string(20) | 是 | 如果用户是首次签约,必须填写协议号,之后支付可不填写 | 20170811234234 |
user_id | string(20) | 否 | 标示商户用户的唯一id,字母+数字组合 | abcd09888 |
mobile | string(11) | 否 | 商户用户手机号码 | 18612341234 |
lon | string(20) | 否 | 经度,商户app定位获取 | 30.9776 |
lat | string(20) | 否 | 纬度,商户app定位获取 | 50.9498 |
risk_level | string(4) | 否 | 风险登记,用户子啊系统的风险等级标示 | 3 |