1 支付API概述
Last updated
Last updated
支付API是我司提供给商户的接口API,商户可以根据API完成相应的支付功能。
原则上不推荐使用单号不变的同一笔商户支付单发起多次支付申请。
由于对特殊字符的转义处理,一些字段的长度有时并不能达到其最大长度。
异步回调通知商户失败或异常后,我司会再次发起异步回调通知,当前策略是失败或异常后重发10次,1~3次间隔约30秒,4~6次间隔约120秒,7~10次间隔约600秒,每次会发出1遍请求。如果商户仍然无法正常响应,我司将不再发起异步回调通知。
为避免风控,支付金额将随机浮动-0.20元至0.20元,即,在金额后面加入小数。
必须发送能够唯一确定的用户账号,即accounts字段,平台将会将之与微信号进行绑定,从而自动选择合适的通道,否则如果因为该原因而未能分配到有效通道,与本平台无关。注意,如果是同一微信账号,发送不同的accounts字段,有可能会被风控。
支付API模式,API模式下,下单IP必传且尽量保持真实,多次无效IP可能风控。
切记不要用表单(Form)提交,用Json提交。
所有 int 参数默认 0参与验签,Code不参与签名。
签名串:签名串:所有需要传输的参数,去除sign字段和空字段(INT参数默认为0参与验签),按字母表升序排列成key-value格式(例:key1=val1&key2=val2…)。
签名私钥:我司分配给商户的用于签名和验签的APIKEY
。
完整签名串:由签名串和签名私钥拼接而成。
使用&符号连接 发送方把签名串用MD5算法加密生成32位签名(全大写),作为sign字段传输。
即:sign = md5(key1=val1&key2=val2…&apikey)
验签:异步回调通知商户需要检验数据真实性,验签算法和签名算法一致。 Int 类型参数传空默认为0 ,参与验签,Code不参与签名。
String sign = MD5Util.createSign(MD5Util.getObjectSortedMap(request), key);
商户
接入了平台并开通了API接口服务的商户。
用户/商户用户
在商户系统注册的用户,并非我司的用户。
通道
商户用户支付的方式,比如微信公众号支付通道。
商户订单
在商户系统生成的订单,订单号不允许重复,重复提交不同信息,相同订单号的订单,以第一次提交的订单信息为准。
订单状态
订单状态目前有已支付/未支付两种状态。
异步通知
支付结果通过异步回调返回给商户发送的异步通知URL。
页面返回
支付完成后,用户浏览器页面返回到商户发送的页面返回URL。