兴业收付直通车代付接口_第1页
兴业收付直通车代付接口_第2页
兴业收付直通车代付接口_第3页
兴业收付直通车代付接口_第4页
兴业收付直通车代付接口_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、收付直通车商户代付接口V1.1(文档更新地址:10:7052/cibhall/images/epay/%d0%cb%d2%b5%d2%f8%d0%d0%ca%d5%b8%b6%d6%b1%cd%a8%b3%b5%c9%cc%bb%a7%b4%fa%b8%b6%bd%d3%bf%da.docx)版本修订说明编号修订内容简述修订日期版本号修订人1草稿2014-09-01V0.1叶黎明2增加商户查询接口2015-04-07V1.1郑尚书收付直通车-商户代付接口目录 1接口安全策略11.1安全组件(对账服务接口不使用)11.1.1对接口的统一说明11.1.2使用说明

2、11.2数字签名(仅对账服务使用)61.2.1签名规则61.2.2签名算法示例72环境说明102.1商户申请地址102.2代付接入地址102.3接口频率限制说明103接口调用103.1单笔资金付款103.1.1功能概述103.1.2输入参数113.1.3返回结果113.1.4接口示例123.2单笔代付查询133.2.1功能概述133.2.2输入参数133.2.3返回结果133.2.4接口示例143.3商户信息查询接口153.3.1功能概述153.3.2输入参数153.3.3返回结果153.3.4接口示例154对账服务164.1资金对账文件下载164.1.1功能概述164.1.2输入参数174.

3、1.3返回结果174.1.4接口示例185错误码说明195.1通用错误(10000-10099)195.2服务分发错误(10100-10199)195.3数据访问错误(10200-10299)195.4后端系统交易错误(10300-10399)205.5商户类错误(20000-20099)205.6订单类错误(20100-20199)215.7支付类错误(20200-20299)215.8对账类错误(20500-20599)225.9账户类错误(20700-20799)225.10文件下载类错误(21000-21099)221 接口安全策略代付接口目前使用到的安全策略包括安全组件和数字签名两种

4、方式。1.1 安全组件(对账服务接口不使用)1.1.1 对接口的统一说明 参数接口传输的所有参数都使用UTF-8进行编码。 调用方式接口采用http/https连接方式进行通讯,通讯API在客户端中已编写完成,调用人员只需关注业务参数的填充工作。 IP限制允许对接口的请求IP进行限制。代付商户在开通时可以向收付直通车系统提供一个或者多个固定IP用于做交易和查询。1.1.2 使用说明在客户端使用安全组件之前需要在客户端系统中做好如下的文件配置和依赖包的导入工作。名称说明APIappsvr.base.xxxx.jar基础包(下载地址:http:/220.2

5、50.30.210:7052/cibhall/images/epay/jar/ appsvr.base-0.0.1-SNAPSHOT.jar)appsvr.client.xxxx.jar客户端包(下载地址:10:7052/cibhall/images/epay/jar/appsvr.client-0.0.1-SNAPSHOT.jar)配置文件conf配置文件,存放路径classpath:appsvr_conf/confappsvr_server.cert服务器证书(行方提供)appsvr_client.pfx客户端证书,根据conf配置(行方提供)LIB依赖

6、库commons_codec-1.6.jar编解码器(行方提供,仅供参考)commons-io-2.2.jarIO工具(行方提供,仅供参考)slf4j-api-1.7.10.jarLog(行方提供,仅供参考)httpclient-4.3.6.jarhttp客户端(行方提供,仅供参考)httpcore-4.3.3.jarhttp核心(行方提供,仅供参考) Conf配置文件说明名称说明appIdappId应用ID(行方提供)appsvr_server_cert服务端证书文件路径appsvr_client_pfx客户端证书文件路径appsvr_client_pfx_alias客户端证书

7、alias(行方提供) appsvr_client_pfx_pwd客户端证书密码(行方提供) tokenUrlToken请求URL,例33:7702/payment/pymtApi.do(行方提供) txnUrlTxn请求URL,例33:7702/payment/pymtApi.do(行方提供)文件示例:appId=2015040301appsvr_server_cert=appsvr_conf/appsvr_server.cerappsvr_client_pfx=appsvr_conf/appsvr_client.pfxap

8、psvr_client_pfx_alias=appsvr_clientappsvr_client_pfx_pwd=123456tokenUrl=https:/ 33:7702/payment/pymtApi.do txnUrl=https:/ 33:7702/payment/pymtApi.do 客户端初始化客户端实例仅需要初始化一次。 MAVEN依赖配置示例 <dependencies><dependency><groupId>junit</groupId><artif

9、actId>junit</artifactId><version>4.8.2</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.2</version></dependency><dependency><groupId>org.slf4j</groupI

10、d><artifactId>slf4j-api</artifactId><version>1.7.10</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><

11、groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.1.2</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.2</version><

12、/dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-access</artifactId><version>1.1.2</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactI

13、d><version>4.3.6</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.3.3</version></dependency><dependency><groupId>com.cib.cap4i.appsvr</groupId&

14、gt;<artifactId>appsvr.base</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.cib.cap4i.appsvr</groupId><artifactId>appsvr.client</artifactId><version>0.0.1-SNAPSHOT</version></dependency>&l

15、t;/dependencies> 示例代码package com.cib.cap4i.appsvr.client.conf;import java.util.HashMap;import java.util.Map;import org.junit.Test;import com.cib.cap4i.appsvr.base.base.AppResponse;import com.cib.cap4i.appsvr.client.AppClientService;/* * author rabbit */public class AppServiceTest Testpubl

16、ic void testName() throws Exception /* * 初始化客户端 * * 建议:使用单例的方式初始化方式,让客户端服务类只初始化一次 */AppClientService appClientService = new AppClientService();/* * 填充报文 */Map<String, String> txnContent = new HashMap<String, String>();/ 1 :单笔资金代付接口例子txnContent.put("appid", "P0000001")

17、;txnContent.put("service", "cib.epay.payment.pay");txnContent.put("ver", "01");txnContent.put("timestamp", "20140831212747");txnContent.put("sub_mrch", "XXXX门店");txnContent.put("order_no", "201101101654550

18、00001");txnContent.put("to_bank_no", "309391000011");txnContent.put("to_acct_no", "622909159009772010");txnContent.put("to_acct_name", "张三");txnContent.put("acct_type", "0");txnContent.put("cur", "CNY

19、");txnContent.put("trans_amt", "1234.56");txnContent.put("trans_usage", "退款,原订单号xxxxx");/* * 2 :单笔代付查询接口实例 * txnContent.put("appid", "P0000001"); * txnContent.put("service", "cib.epay.payment.get"); * txnContent.put

20、("ver", "01"); * txnContent.put("timestamp", "20140831212747"); * txnContent.put("order_no", "20110110165455000001"); */* * 3 :商户信息查询接口实例 * txnContent.put("appid", "P0000001"); * txnContent.put("service", "

21、;cib.epay.payment.getMrch"); * txnContent.put("ver", "01"); * txnContent.put("timestamp", "20140831212747"); */* * 发送报文 */AppResponse res = null;try res = appClientService.txn(txnContent, txnContent.get("service"), txnContent.get("ver"

22、);/* * 处理返回结果 */String body = res.getBody();catch (Exception e) / todo 此处抛出异常为通讯组件异常,若抛错建议查看详细日志解决 /* * 处理返回结果 */String body = res.getBody();1.2 数字签名(仅对账服务使用)为防止数据在传输过程中被篡改,或其他人伪造支付指令,商户与银行间通讯信息均应进行数字签名。1.2.1 签名规则 拼装消息内容将键值对以key=value形式组装成一个数组,将该数据进行排序后使用&进行拼装,最后加入商户令牌(token)。例如timestamp=

23、20150708111509appid=P0000014service=cib.epay.payment.receiptFilever=01trans_date=20150623rcpt_type=1得到的拼装字符串为:appid=P0000014&rcpt_type=1&service=cib.epay.payment.receiptFile&timestamp=20150708111509&trans_date=20150623&ver=01&84A8251FECD84E599B7B1037579E6A4D说明:若参数为空,可不上送(不加入到

24、拼装字符串中),也无需加入计算mac; 若要上送,相应的也需加入去计算mac。 使用UTF-8转码后生成签名(mac)对拼装好的消息内容进行UTF-8转码后,用SHA-1算法进行加密,并将得到的数据转换为16进制,例如计算出mac为(仅为示例值):30F2B0CA895BB25881CEE20CB32E5EEADCB9E18D1.2.2 签名算法示例 Java示例 /* * 生成用于MAC计算的参数字符串。<br> * * return 模式为key=value&key=value */ public static String generate

25、ParamStr(Map<String, String> params) / 取所有非空字段内容(除mac以外),塞入列表 List<String> paramList = new ArrayList<String>(); for (String key : params.keySet() if (“mac”.equals(key) continue; String val = params.get(key); paramList.add(key + "=" + val); / 防护 if (paramList.size() = 0) r

26、eturn null; / 对列表进行排序 Collections.sort(paramList); / 以&符分割拼装成字符串 StringBuilder sb = new StringBuilder(); sb.append(paramList.get(0); for (int i = 1; i < paramList.size(); i+) sb.append("&").append(paramList.get(i); return sb.toString(); /* * 将byte数组转换为16进制格式的字符串 * * param bytes

27、待转换数组 * return 16进制格式的字符串 */ public static String bytesToHexStr(byte bytes) StringBuffer sb = new StringBuffer(bytes.length * 2); for (int i = 0; i < bytes.length; i+) sb.append(hexChar(bytesi & 0xf0) >>> 4); sb.append(hexCharbytesi & 0x0f); return sb.toString(); /* * SHA摘要算法,输入内

28、容将被UTF-8编码 * * param content 输入明文 * return 内容摘要,40位16进制字符串 */ public static String encryptBySHA(String content) if (content = null) return null; try MessageDigest md = MessageDigest.getInstance("SHA-1"); byte output = md.digest(content.getBytes("UTF-8"); return bytesToHexStr(outp

29、ut); catch (NoSuchAlgorithmException e) log.error("无法加载SHA算法。", e); catch (UnsupportedEncodingException e) log.error("无法将输入字符串转换到utf-8编码。", e); return null; .Net示例/* * 生成用于MAC计算的参数字符串。* return 模式为key=value&key=value */public static string generateParamStr(Dictionary&l

30、t;string,string> _params) / 取所有非空字段内容(除mac以外),塞入列表 ArrayList paramsList = new ArrayList(); foreach (KeyValuePair<string,string> key in _params) if (key.Key.Equals("mac") continue; paramsList.Add(key.Key + "=" + key.Value); / 防护 if (paramsList.Count <= 0) return null;

31、/ 对列表进行排序 paramsList.Sort(); / 以&符分割拼装成字符串 string sb="" for (int i = 0; i < paramsList.Count; i+) sb += paramsListi.ToString() + "&" sb = sb.TrimEnd('&'); return sb; /* * SHA摘要算法,输入内容将被UTF-8编码 * * param content 输入明文 * return 内容摘要,位进制字符串 */public static stri

32、ng encryptBySHA(string content) if (content = null) return null; try SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider(); byte str2 = sha.ComputeHash(Encoding.UTF8.GetBytes(content); sha.Clear(); (sha as IDisposable).Dispose(); return Convert.ToBase64String(str2); catch /log.error("

33、无法加载SHA算法。", e); throw; 2 环境说明2.1 商户申请地址生产环境: merchant/测试环境:10:37031/merchant/2.2 代付接入地址生产环境:测试环境:10:37031/payment/ pymtApi.do2.3 接口频率限制说明接口名称服务名称每日限额单笔资金代付cib.epay.payment.pay无单笔代付查询cib.epay.payment.get无商户信息查询cib.epay.payment.getMrch无3 接口调用3.1 单笔资金付款3.1.1

34、功能概述方向:商户银行。输入商户号、订单号、对方银行名称、对方银行卡号、对方方户名、对方账户类型、付款金额,申请进行资金支付。3.1.2 输入参数参数名称类型必输示例值描述timestampchar(14)20140831212747时间戳,如果与当前时间差距超过30分钟,请求会被拒绝appidchar(8)P0000001商户代号,定长8位servicevarchar(100)cib.epay.payment.pay服务名称verchar(2)01接口版本号,当前版本为01。sub_mrchvarchar(20)XXXX门店二级商户名称,指签约商户下属二级商户名称,可选参数。order_no

35、varchar(32)20110110165455000001订单号,同一商户号下,所有订单号必须唯一,用于对账。to_bank_nochar(14)309391000011人行体系支付行号to_acct_novarchar(32)622909159009772010对方银行卡号to_acct_namevarchar(60)张三对方账户户名acct_typechar(1)0对方账户类型:0-储蓄卡;1-信用卡;2-企业账户curchar(3)CNY订单币种,使用ISO4217标准货币代码,目前支持:CNYtrans_amtdec(17,2)1234.56付款金额,单位为元,小数位2位trans

36、_usagevarchar(60)退款,原订单号xxxxx转账用途【参数说明】1. 同一商户号下订单号必须保持唯一,不可重复发起。3.1.3 返回结果名称类型非空示例值描述snochar(16)2014090100000001银行系统流水号(Serial NO)mrchNochar(8)P0000001商户代号subMrchNamevarchar(60)XXX门店二级商户名orderNovarchar(32)20140901165455000001订单编号transDatechar(8)20140901付款日期,格式为yyyymmddtransTimechar(6)112039付款时间,格式为

37、hhmmsstransStatuschar(1)1交易状态,1-成功;2-失败;3-未决transAmtdec(17,2)1234.56付款金额transFeedec(17,2)1.23交易手续费toAcctNovarchar(32)622909888888888888收款账号toAcctNamevarchar(60)张三收款户名transUsagevarchar(60)退款,原订单号xxxxx转账用途remarkvarchar(255)其他备注信息3.1.4 接口示例详见示例单笔资金付款接口 输入示例(HTTP POST)timestamp=20140901113

38、544appid=P0000001service=cib.epay.payment.payver=01sub_mrch=陆家嘴分店ord_no=20110331201103312011033120110331to_bank_no=309391000011to_acct_no=622909159009772010to_acct_name=张三acct_type=0cur=CNYtrans_amt=1234.56trans_usage=退款acct_no=6229091590097720 输出示例(JSON)【成功结果】 "sno": "201409

39、0100000001", "mrchNo": "P0000001", "subMrch": "陆家嘴分店", "orderNo": "20140901165455000001", "transDate": "20140901", "transTime": "112039", "transStatus": "1", "transAmount

40、": 1234.56, "transFee": 1.23, "toAcctNo": "622909888888888888", "toAcctName": "张三", "transUsage": "退款", "remark": ""【失败结果】 "errcode": "20205", "errmsg": "mac校验失败"3.2

41、 单笔代付查询3.2.1 功能概述方向:商户银行。输入商户代号、订单号完成单笔资金代付结果查询。3.2.2 输入参数参数名称类型必输示例值描述timestampchar(14)20140831212747时间戳,如果与当前时间差距超过30分钟,请求会被拒绝appidchar(8)P0000001商户代号,定长8位servicevarchar(100)cib.epay.payment.get服务名称verchar(2)01接口版本号,固定01。order_novarchar(32)20110110165455000001订单号,同一商户号下,所有订单号必须唯一,用于对账。3.2.3 返回结果名称

42、类型非空示例值描述snochar(16)2014090100000001银行系统流水号(Serial NO)mrchNochar(8)P0000001商户代号subMrchNamevarchar(60)XXX门店二级商户名orderNovarchar(32)20140901165455000001订单编号transDatechar(8)20140901付款日期,格式为yyyymmddtransTimechar(6)112039付款时间,格式为hhmmsstransStatuschar(1)1交易状态,1-成功;2-失败;3-未决transAmtdec(17,2)1234.56付款金额trans

43、Feedec(17,2)1.23交易手续费toAcctNovarchar(32)622909888888888888收款账号toAcctNamevarchar(60)张三收款户名transUsagevarchar(60)退款,原订单号xxxxx转账用途remarkvarchar(255)其他备注信息3.2.4 接口示例详见示例单笔代付查询接口。 输入示例(HTTP POST)timestamp=20140901113544appid=P0000001service=cib.epay.payment.getver=01ord_no=201409011654550000

44、0 输出示例(JSON)【成功结果】 "sno": "2014090100000001", "mrchNo": "P0000001", "subMrch": "陆家嘴分店", "orderNo": "20140901165455000001", "transDate": "20140901", "transTime": "112039", &

45、quot;transStatus": "1", "transAmount": 1234.56, "transFee": 1.23, "toAcctNo": "622909888888888888", "toAcctName": "张三", "transUsage": "退款", "remark": ""【失败结果】 "errcode": "

46、;10301", "errmsg": "1627(1627)余额不足,请确认账户是否有冻结控制"3.3 商户信息查询接口3.3.1 功能概述方向:商户银行。输入商户代号完成商户信息查询。3.3.2 输入参数参数名称类型必输示例值描述timestampchar(14)20140831212747时间戳,如果与当前时间差距超过30分钟,请求会被拒绝appidchar(8)P0000001商户代号,定长8位servicevarchar(100)cib.epay.payment.getMrch服务名称verchar(2)01接口版本号,固定01。3.3

47、.3 返回结果名称类型非空示例值描述mrchNochar(8)P0000001商户代号mrchNamevarchar(20)XXX商户名mrchTypechar(1)1商户类型,:1-智能代收商户;2-智能代付商户;corpIdchar(10)3500506511企业客户号settleAccountchar(18)356980100100349183商户结算账号settleAccountNamevarchar(60)YYYY企业户商户结算账户名称mrchStatuschar(1)1商户当前状态码:0-无效;1-有效;2-冻结mrchStatusLabelvarchar(60)有效商户当前状态描

48、述3.3.4 接口示例详见示例商户查询接口。 输入示例(HTTP POST)使用https协议将参数post到支付网关接入地址。timestamp=20150409105658appid=P0000001service=cib.epay.payment.getMrchver=0 输出示例(JSON)【成功结果】"corpId":"1100019649","mrchName":"美菱集团","mrchNo":"P0000001",&q

49、uot;mrchStatus":"1","mrchStatusLabel":"有效","mrchType":"2","settleAccount":"117010101400122860","settleAcctName":"美菱集团控股有限公司半角字符"【失败结果】"errcode":"EPAY_20205","errmsg":"MAC

50、校验失败"4 对账服务4.1 资金对账文件下载4.1.1 功能概述该功能适用于商户系统与银行系统间T+1日对明细账。对账文件的查询有效期为90天,如需回补有效期范围外的资金对账文件,需要向银行业务部门另外申请。4.1.2 输入参数参数名称类型必输示例值描述timestampchar(14)20150708103434时间戳。格式:yyyyMMddHHmmssappidvarchar(64)P0000014由系统分配外围系统应用编号servicevarchar(100)cib.epay.payment.receiptFile服务名称。verchar(2)01接口版本号,固定01。以下为

51、请求内容正文trans_datechar(8)20150623交易日期,格式为yyyyMMddrcpt_typechar(1)1回单类型:0-入账回单;1-出账回单;2-手续费回单以下为签名相关信息macvarchar(40)30F2B0CA895BB25881CEE20CB32E5EEADCB9E18D消息校验码4.1.3 返回结果【成功结果】Zip压缩文件,包含指定的商户资金对账文件。【失败结果】参数名称类型必输示例值描述errcodevarchar(10)10003错误代码,10003对账文件不存在!errmsgvarchar(255)错误信息发送错误时返回的错误信息【资金对账文件】1.

52、 资金对账文件为txt格式,文件名:资金对账文件名前缀+商户号+交易日期(yyyyMMdd)+回单类型(0/1).txt如:NPRCPTP0000014201506231.txt。2. 资金对账文件格式为:订单日期|流水号|商户代号|订单编号|交易帐号(后4位)|支付金额|退款金额|手续费|订单状态|交易时间|结算日期|名称类型非空示例值描述transDatechar(8)20150623订单交易日期snochar(16)2015062370499026订单流水号mrchNochar(8)P0000014商户号orderNovarchar(32)20110110623105358687订单编号

53、maskAcctNochar(6)*0789*屏蔽的银行账号transAmtdec(17,2)10.01支付金额退款金额,暂为空transFeedec(17,2)0.10手续费订单状态,暂为空transTimechar(6)105411订单交易发生时间settleDatechar(8)20150623资金结算日期4.1.4 接口示例详见1.2.2示例。输入示例使用https协议将参数post到支付网关接入地址。timestamp=20150708111509appid=P0000014service=cib.epay.payment.receiptFilever=01trans_date=20

54、150623rcpt_type=1mac=EB1F4EFA06C47E95473F8AE40B8216BE77B17008输出示例【成功结果】zip_20150708010400.zip压缩文件【失败结果】 "errcode": "10003", "errmsg": "对账文件不存在"5 错误码说明5.1 通用错误(10000-10099)错误码错误描述错误原因或解决方案10000未知错误系统发生未预见的错误,请联系项目组进行排查。订单状态未知,建议商户稍后发起查询确定订单状态。10001必输要素不能为空,请检查输入要素。请参见相应的接口说明,确保必输字段都有赋值。10002输入内容格式不正确,请检查输入格式或数据。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论