支付接口说明

接口概述

荣e通平台基于荣e通用户,将强大的支付能力,通过接口等形式开放给第三方船公司,帮助第三方合作伙伴创建更具竞争力的应用。

通过接入荣e通平台,第三方合作伙伴可以获得更多的流量、用户和收益,而第三方合作伙伴提供的服务也让用户获得了更丰富的体验,平台生态更加繁荣,最终实现多方共赢。

如未做特殊说明,接口默认使用https协议。
适用范围:本接口规范仅适用于第三方船公司(简称:调用方)通过接口完成收款功能。

接口调用方式

调用方采用https协议通信,接口输入输出数据都是结构化的JSON数据格式。
调用地址
数据传输方式 post同步传输
提交数据 请求报文
返回数据 响应报文
注:接口参数中包含传入文件base64字符串的情况,如果为PDF文件,需要添加"data:application/pdf;base64,"前缀,如果为JPG文件,需要添加"data:image/jpg;base64," 前缀

字段解释

1.returnUrl支付提交完成后返回页面

客户登录荣e通平台,确认支付完成后,通过此链接跳转到商户系统页面,同时会将支付数据推送至商户系统


返回结果数据均需要将数据签名返回商户系统
2.notifyUrl 支付结果通知地址

客户在荣e通平台支付完成后,荣e通平台会根据此链接将支付结果推送至商户系统
3.nonce 随机数

唯一的标识符,服务器能够防止请求被多次使用(记录所有用过的nonce以阻止它们被二次使用)
4.timestamp 时间戳

采用unix时间戳,保留到毫秒。

用于判断客户提交时间是否在有效时间内,如果超出15分钟则拒绝请求
5.accessKey 请求唯一标识

请求唯一标识由荣e通平台生成,并发放给商户使用,每个商户只分配一个请求唯一标识,且不能重复。
6.secretKey商户秘钥

商户秘钥由荣e通平台生成,并发放给商户使用,每个秘钥都与请求唯一标识对应,且不能重复。

接口签名方式

第一步:将请求参数(除sign之外)模型转换为json字符串(假设存在三个业务参数aparam、bparam、cparam)

strStep1={"aparam":"test1","bparam":"test2","cparam":"{\"subMember1\":\"对象模型内的字段1\",\"subMember2\":\"对象模型内的字段2\"}","accessKey":"xxxxxx","nonce":1000,"timestamp":10000100}

第二步:将参数以key=value的格式拼接,并按照参数名ASCII字典序排序如下:

strStep2="accessKey=xxxxxx&aparam=test1&bparam=test2&cparam={\"subMember1\":\"对象模型内的字段1\",\"subMember2\":\"对象模型内的字段2\"} &nonce=1000×tamp=10000100"

第三步:拼接API密钥:(secretKey为商户平台设置的访问密钥)

strStep3 = strStep2 +"&secretKey=192006250b4c09247ec02edce69f6"

第四步:使用MD5算法加密第二步拼接好的明文,将加密结果转为英文大写:

sign = MD5(strStep3).toUpperCase();

以下为java签名的示例代码

JAVA

                    public String getSign(Map reqParam) {
                        // 1. 将请求参数Map按照参数名ASCII字典序排序
                        Map sortReqParam = new TreeMap<>(reqParam);
                        // 2. 如果有sign,则删除sign
                        sortReqParam.remove("sign");
                        // 3. 将排好序的Map转为key=value格式的字符串
                        StringBuilder sb = new StringBuilder();
                        for (Map.Entry entry : sortReqParam.entrySet()) {
                        sb.append(entry.getKey()).append("=").append(String.valueOf(entry.getValue())).append("&");
                        }
                        // 4. 在最后拼接上secretKey的key和value
                        sb.append("secretKey").append("=").append(secretKey);
                        // 5. 将拼接完成的参数字符串md5加密并转大写
                        return DigestUtils.md5DigestAsHex(sb.toString().getBytes()).toUpperCase();
                    }
                      
                  
复制代码
  • 接口概述
  • 接口调用方式
  • 字段解释
  • 接口签名方式