[关闭]
@ulodev 2019-08-09T08:52:50.000000Z 字数 13885 阅读 4099

上海银行代付平台商户接入接口

上海银行

1. 介绍

1.1. 目标

      本规范用于定义银行代付接入平台和接入商户之间代付业务所用到的所有接口的详细需求。本规范应被所有系统干系人阅读并理解,特别是系统开发人员和会使用到这些接口的产品业务人员。

1.2. 范围

      本说明书从技术角度详细描述调用接口,元素定义,以及错误/异常处理等,为客户端正确有效的使用这些接口提供相关必要的信息。

1.3. 术语定义

术语 定义
PKI Public Key Infrastructure,公钥基础设施
CA Certification Authority,证书认证机构
PKCS Public-Key Cryptography Standards,公开密钥加密标准
TLS Transport Layer Security,安全传输层协议
SSL 请求和接收数据均需要校验签名Security Socket Layer,安全套接层协议
JSON JavaScript Object Notation

2. 接口交互方式

2.1. 交互模式

image.png-61.9kB

      本接口采用请求/响应的交互模式,商户系统向代付平台发送请求数据,并同步等待处理完毕后返回响应数据。
      对于交易类请求,同步回应的是受理结果,需商户需发起查询交易结果请求获得最终结果;若查询返回交易处理中,则需等待一定时间后再次发起查询;

2.2. 通讯协议

      通讯协议采用HTTP/1.1 + JSON 或 SSL+HTTP/1.1 + JSON,跨网元通讯时,需要采用SSL协议。在content-Type 中设置传输的数据格式: Content-Type = 'application/json;charset=UTF-8',涉及中文内容采用UTF-8 编码。
      涉及转账等业务的报文应采用数字签名机制,以保证业务信息的来源合法性及完整性,本协议目前采用RSA+SHA1的签名算法。签名流程详见附录B
      通讯采用POST请求方式;
      请求参数:含tranType跟param;可参看demo;
      请求时,需携带两个参数或将两个参数组合成一个串输入,即:tranType=(报文头中的msgType的值) &param=(请求报文);

2.3. 对接前商户应做的准备工作

      商户应联系接口人,申请自己的商户代码(corpNo),确认需要开通的接口及对应的业务类型(msgType). 双方交换用于验签报文的数字证书,对于没有数字证书的商户,也可以只提交公钥.

3. 报文格式说明

说明:
是否必选 M:必填 O:可选 C:满足特定条件下必填
长度 X:不检查

3.1. 定义元素

3.1.1. 请求报文头元素

元素名称 说明 数据类型 长度 是否必选
headData(报文头,签名域) majorVersion 接口协议主版本号,在此版本报文中,应填“1.0” string 8 M
minorVersion 接口协议副版本号,在此版本报文中,应填“1.0” string 8 M
msgType 业务类型取值参见附录E string 5 M
corpNo 企业代码 string 15 M
tradeType 交易类型 (取值参见附录D
交易和余额查询传相应支付类型(不同支付类型对应不同额度)
订单查询不传
string 32 O
reqDate 发起日期(yyyyMMdd) string 8 M
reqTime 发起时间(HHmmss) string 6 O
serialNo 通讯流水号,格式可自定义,
参考:yyyyMMddhhmmssXXXXXX其中XXXXXX为6位序列号,全局唯一
string 20 M
zipType 压缩方式(批量业务建议压缩)
0:不压缩;
1:压缩
string 1 M
notifyUrl 交易结果通知URL.
如:http://服务地址?trancode=xxx
暂不支持
string 10-256 O
signatureAlg 签名算法(目前只支持“01”,即RSA+SHA1) string 2 M
dataSignature 请求方对headData的json串+bodyData的json串报文的签名值 string X M
bodyData(报文体,签名域)       X M
         

3.1.2. 响应报文头元素

元素名称 说明 数据类型 长度 是否必选
headData(报文头,签名域) majorVersion 接口协议主版本号(原样返回) string 8 M
minorVersion 接口协议副版本号(原样返回) string 8 M
msgType 原业务类型(原样返回)取值参见附录E string 5 M
corpNo 企业代码(原样返回) string 15 M
timestamp 报文响应时间(yyyy-MM-dd HH:mm:ss) string 14 M
serialNo 通讯请求流水号(原样返回) string 20 M
procDate 通用平台受理时间, 格式:yyyymmdd string 8 M
zipType 压缩方式(大批量业务建议压缩,仅压缩bodyData的内容)
0:不压缩;
1:压缩
string 1 M
signatureAlg 签名算法(目前只支持“01”,即RSA+SHA1) string 2 M
dataSignature 请求方对headData的json串+bodyData的json串(如果有bodyData)+status的json串报文的签名值 string X M
status(签名域) result 响应报文处理结果码,取值定义请见附录A string M
statusCode 响应报文状态码,对于未完成交易,标识具体的中间状态;对于已失败的交易,标识具体错误代码。取值定义请见附录A string M
statusMessage 响应消息的状态信息 string M
bodyData   其他元素(签名域)     c

3.2. 示例报文

3.2.1. 请求报文

  1. {
  2. "headData":{
  3. "majorVersion":"1.0",
  4. "minorVersion":"1.0",
  5. "msgType":"30101",
  6. "corpNo":"8190001",
  7. "reqDate":"20170919",
  8. "reqTime":"164400",
  9. "serialNo":"1438931481953",
  10. "zipType":"0",
  11. "notifyUrl":"",
  12. "signatureAlg":"01",
  13. "tradeType":"trade.agent. daytime"
  14. }
  15. "dataSignature":"TbXE59tqljAcrlbDopuXjWtTy5l76G3emPna9xmARezhJtDKxj+XUN/bQopjM/nMsMC6Mmpy100UXI/ZHa4aTmDxpdDO8H0JpG3Pi0uMOMkbE4TZsCyZMr/Fv20QdlARj4eEQ9YYIcy5jTxLzqTy2ZlkhMCfeHv0hugYBGLRJNA=",
  16. "bodyData":{
  17. ……//具体的明细字段
  18. }
  19. }

3.2.2. 响应报文

  1. {
  2. "headData":{
  3. "majorVersion":"1.0",
  4. "minorVersion":"1.0",
  5. "msgType":"30101",
  6. "corpNo":"8190001",
  7. "timestamp":"2016-01-01 10:10:10",
  8. "serialNo":"1438931481953",
  9. "procDate":"20160101",
  10. "zipType":"0",
  11. "signatureAlg":"01"
  12. }
  13. "dataSignature":"IuWdO4h7jmoZzmHVY/2T6Ka7obCTv23oERIVVzLgLNgZ05AOVaf7ZVNYJQIh+x1na1kkArLc7ts4BmM6yf8/tQ1QKl2B17X0ve2mWcqAzIFkQnW3/7TPehBQxc7t3EeGHBU15yNKWEt7l0/0HaUEWTcRU2yht2DwTG/N8E95uL8=",
  14. "status":{
  15. "result":"0",
  16. "statusCode":"0000",
  17. "statusMessage":"受理成功"
  18. }
  19. "bodyData":{
  20. ……//具体的明细字段
  21. }
  22. }

4. 接口定义

      本节定义第三方通用业务接入平台和第三方服务提供商之间的接口。

4.1. 交易类接口

4.1.1. 单笔代付

接口名称: SINGLEGET/ SINGLEPAY
接口描述 该接口用于单笔代付业务
接口归属方: PF-TS
通信协议: Http1.1+JSON 或 SSL+Http1.1+JSON
安全: 跨网元调用时需使用SSL协议
使用情况: 如果返回成功或超时,需调用单笔交易结果查询得到最终结果
接口参数:: tranType=30102 & param=请求报文
URL:: /spagate/agentpay
4.1.1.1. 元素定义
4.1.1.1.1.请求元素
元素名称 说明 数据类型 长度 是否必选
orderId 商户订单编号,全局唯一 string 20 M
batFlag 固定值为“2”
2:单笔实时
string 1 M
tnValue T+N 的值,(一般固定为0)
第一位固定:0 第2-3为资金用途。 (00-一般性付款 01-个人账户付款)
第4-250为预留字段。
string 250 M
feeCode 费项代码 string 5 M
curType 币种(CNY:人民币;HKD:港币;USD:美元.目前只支持人民币) string 3 M
trMoney 交易金额,(单位:分) string 15 M
bankNo 明细接收行(全匹配我方指定的行号或行名) string 120 M
openBankNo 明细开户行 (全匹配我方指定的行号或行名)一般为空 string 120 O
accNo 明细账号 string 32 M
accName 明细户名 string 120 M
memo 附言 string 120 M
lendFlag 垫资方式
Y-垫资;
N-不垫资;
非垫资商户固定N
string 1 M
lendRate 垫资费率(差额垫资商户必填)string 6 O
publicPrivaFlag 路由标志:目前只支持S (S:路由 P:超网) string 1 M
accType 账户类型:
1-银行卡(对私);
0-非银行卡(对公)
string 1 O
certType 证件类型: 01:身份证 string 1 O
certId 证件号码 string 20 O
fundCode 产品代码 string 6 M
4.1.1.1.2.响应元素
元素名称 说明 数据类型 长度 是否必选
orderId 商户订单编号(原样返回) string 10-40 M
4.1.1.2. 示例报文
4.1.1.1. 请求报文
  1. {
  2. "headData": {
  3. "majorVersion": "1.0",
  4. "minorVersion": "1.0",
  5. "msgType": "30102",
  6. "corpNo": "88888",
  7. "reqDate": "20170919",
  8. "reqTime": "110338",
  9. "serialNo": "1",
  10. "zipType": "0",
  11. "notifyUrl": "",
  12. "tradeType":"trade.agent. daytime",
  13. "signatureAlg": "01"
  14. },
  15. "dataSignature": "3add43f700d9b13382ee3750d62c3fcdf152be135b218accb6326fa67466a2b3ec59401c1f989f1efe8cf20552ab2bf3cb7343b39ed14926308b410c10aae4594862ca573bd63a55644007dacd0b13ad9df7afc59da777cb7f70ba06aadeabd40edbf7e87a2ed928515b63eb5463f09299ac023f878a7c0b86c4cadfab2cf409f6457546e8b9b1ef482efde4d587a6d2c7418ba94b79f4cf3e8a181c32cc5ad576582899641e21fde63a736338c51664f3332d574b62e3d4aba110e43c58f5fc3cafb0bc8b0e2bdcc25ee486f1c711b8e803eb74b8c5c790de33d15747e5183bf6ea6da1dbbd86c4d80e6de7389b250e54e40ba2c80d8e91280e2a34574ec13b",
  16. "bodyData": {
  17. "orderId": "1",
  18. "batFlag": "2",
  19. "tnValue": "0",
  20. "feeCode": "00000",
  21. "curType": "CNY",
  22. "trMoney": "100",
  23. "bankNo": "平安银行",
  24. "openBankNo": "",
  25. "accNo": "62260000111",
  26. "accName": "test",
  27. "memo": "111",
  28. "lendFlag": "N",
  29. "lendRate": "",
  30. "publicPrivaFlag": "S",
  31. "fundCode":"0009",
  32. "accType": "1"
  33. }
  34. }
4.1.1.1. 响应报文
  1. {
  2. "headData": {
  3. "majorVersion": "1.0",
  4. "minorVersion": "1.0",
  5. "msgType": "30102",
  6. "corpNo": "88888",
  7. "timestamp": "2017-09-19 00:00:00",
  8. "serialNo": "1",
  9. "procDate": "20170919",
  10. "zipType": "",
  11. "signatureAlg": "01"
  12. },
  13. "dataSignature": "2ca98a00b4a877e63e8821f7e8609754617a603b1f73b5afa035f9603987fd60901341039d1278f7fa4c327bf2575fc6135804a40eff06b6c6a03d3c164ff2876d6479403739df019d3f26f88b76640bf830b60508a58d734814758d74f67b937d00226a6ce9989f646517a4b4ef8c75478fa4b528d20a161c9c577c283d4f52df140e9b0d2b343e52ab8d8523c617bf7713a15f1f26498d9aacd5c7e53c7e8c78376230dd7e6ca6dad8f8a8be1bd8581c4d394602b1daac16c8200ea64cb6d8993282bc5dba8bcf1a4b97105eb7f849fc8ba822b104edbbcade0b0e2320ebafd00da9297dbe8767b4c8d82ddabfb20da14879946919dfc98546aaccebeb9713",
  14. "bodyData": {
  15. "orderId": "1"
  16. },
  17. "status": {
  18. "result": "0",
  19. "statusCode": "0000",
  20. "statusMessage": "受理成功"
  21. }
  22. }

4.2. 交易结果查询

4.2.1 单笔交易结果查询

接口名称: queryTrans
接口描述 查询指定一笔交易的结果。
接口归属方: PF-TS
通信协议: Http1.1+JSON 或 SSL+Http1.1+JSON
安全: 跨网元调用时需使用SSL协议
使用情况: 如果返回成功或超时,需调用单笔交易结果查询得到最终结果
接口参数:: tranType=50101 & param=请求报文
URL:: /spagate/agentpay
4.2.1.1. 元素定义
4.2.1.1.1.请求元素
元素名称 说明 数据类型 长度 是否必选
oMsgType 原业务类型编码,取值参见附录E string 5 M
orderId 要查询的交易的订单ID string 1-200 M
isGetRoadMsg 是否获取通道返回状态和描述信息 0 获取 1不获取 string 1 O
4.2.1.1.2. 响应元素
元素名称 说明 数据类型 长度 是否必选
orderStatusList procdate 通用平台受理时间 string 8 O
transId 通用平台交易号 string 20 M
orderId 订单ID string 20 M
corpNo 企业代码 string 15 M
result 处理结果 string 1 M
statusCode 响应消息的状态码,参考附录A string 4 M
statusMessage 响应消息的状态信息 string 200 O
roadReturnCode 通道返回结果码
(请求报文存在“isGetRoadMsg”此节点且值为0时返回 )
string 10 O
roadReturnMessage 通道返回结果说明 (请求报文存在“isGetRoadMsg”此节点且值为0时返回 ) string 254 O
4.2.1.2. 示例报文
4.2.1.2.1. 请求报文
  1. {
  2. "headData": {
  3. "majorVersion": "1.0",
  4. "minorVersion": "1.0",
  5. "msgType": "50101",
  6. "corpNo": "88888",
  7. "reqDate": "20170919",
  8. "reqTime": "110338",
  9. "serialNo": "1",
  10. "zipType": "0",
  11. "notifyUrl": "",
  12. "signatureAlg": "01"
  13. },
  14. "dataSignature": "a68a60aa2c676fce7fe3fd5211904c13edc43f9d5d30de6e25e51cb411f857753c21be2ff67fba8197f9510de804627bf428c121e1ac079ce92a75afe35c68b5d7d40f91105323bf4aad57d81aefe6c27f10a025e0e276fa47282dac50d41219ffff87a9604758a0ef177a94ca29c84b3aaaf2dbf924ec7723fa84f7166736e12b6fad653f8dd2e93085ace5ab87e22ac5a7821b0cb1a4de0c8b6a4d4712a9c658d353e0730ddb5a2c7e7691c930c7ff7280ec19b3217e21eb4c7c1969c7cdcc9f48a9fb59c70a6daa91ee2367d82603c351b16d85568b7909150bc17ece2427beea7aa955b3602217f29acdbd5ed2152402eeb67ec25b890f6ab28f3781e902",
  15. "bodyData": {
  16. "oMsgType": "30102",
  17. "orderId": "1"
  18. "isGetRoadMsg":""
  19. }
  20. }
4.2.1.2.2. 响应报文
  1. {
  2. "headData": {
  3. "majorVersion": "1.0",
  4. "minorVersion": "1.0",
  5. "msgType": "50101",
  6. "corpNo": "88888",
  7. "timestamp": "2017-09-19 00:00:00",
  8. "serialNo": "1",
  9. "procDate": "20170919",
  10. "zipType": "0",
  11. "signatureAlg": "01"
  12. },
  13. "dataSignature": "3a42ba4610c17cfe46ffc58aee8c8900b9d163ff20f6d155e3d8c0c757628fe07f54d5f78476dc573f685b2e0c11dce0cf526e3721382884119d95042aefe0d7f669d1317d65d63a3e3afaadee777e3b196ddb9fb1f30177c3556cddce6f65400bfdd98382449e270097ee126753984ffdc7fae2b99a777399b8884807bf77d59e6710f69c40caea93bedb1a97a7ff77623a21716124887f5be7c53b6848a120d2ada1beb23cabfce18b4fff6c38fbc96baf662a8c16bba26b0fa3a30a631c3541855a86a0511cef8d666b06ac1b371acce1cfd0158b321f31da20aad789ac7747a2510acd5468f72969b6115e4904b5cb6f4409aa354ee406bfd9c3392579af",
  14. "status": {
  15. "result": "0",
  16. "statusCode": "0000",
  17. "statusMessage": "受理成功"
  18. },
  19. "bodyData": {
  20. "orderStatusList": {
  21. "procdate": "20170907",
  22. "transId": "1",
  23. "orderId": "1",
  24. "result": "0",
  25. "statusCode": "0000",
  26. "statusMessage": "交易处理成功",
  27. "roadReturnCode": "000000",
  28. "roadReturnMessage": "交易成功"
  29. }
  30. }
  31. }

4.2.2. 商户垫资额度查询

接口名称: merLendLimitQuery
接口描述 查询商户垫资额度
接口归属方: PF-TS
通信协议: Http1.1+JSON 或 SSL+Http1.1+JSON
安全: 跨网元调用时需使用SSL协议
接口参数:: tranType=80003 & param=请求报文
URL:: /spagate/agentpay
4.2.2.1. 元素定义
4.2.2.1.1.请求元素
元素名称 说明 数据类型 长度 是否必选
tranCode 交易业务类型:01-代付 string 2 M
4.2.2.1.2. 响应元素
元素名称 说明 数据类型 长度 是否必选
tranCode 交易业务类型:01-代付 string 2 M
totalBalance 垫资总额度.单位:分 number 15 O
accBalance 可用垫资额度,单位:分 number 15 O
4.2.2.2. 示例报文
4.2.2.2.1. 请求报文
  1. {
  2. "headData": {
  3. "majorVersion": "1.0",
  4. "minorVersion": "1.0",
  5. "msgType": "80003",
  6. "corpNo": "88888",
  7. "reqDate": "20181018",
  8. "reqTime": "155949",
  9. "serialNo": "1",
  10. "zipType": "0",
  11. "notifyUrl": "",
  12. "tradeType":"trade.agent. daytime",
  13. "signatureAlg": "01"
  14. },
  15. "dataSignature": "062bafcacf82700e690587ec3f6d23d377cdb26236f6a36d47c9faafb0e28d3f7b785d7ea805617fb53db3c35323520df11aab1d46778432fbae5620224d29028e32750b57ed8144299b0591b5df05f79b4f894245a528cfba9964580400bbe2e094ecc26b79a4dcb11837e67fb12e5ccc0693515433f767f15e96c15a4df656dedff615c3305549a4fa4dbcfc12886cc9f5028e28ce96a53af31cd27f053e8e450c13c5930bdbc424009045701a44716808ec9f7e002fb91051d5b08f9602450dbb9ed3509578e839162a015bbb3fdf3b0201168a7a87a3ae068868e344c40487d0c7c108316459555797b77ae2b9968bc632920003dd9c72238453691bc2b6",
  16. "bodyData": {
  17. "tranCode": "01"
  18. }
  19. }
4.2.2.2.2. 响应报文

查询成功:

  1. {
  2. "headData": {
  3. "majorVersion": "1.0",
  4. "minorVersion": "1.0",
  5. "msgType": "80003",
  6. "corpNo": "88888",
  7. "timestamp": "2018-10-18 15:59:49",
  8. "serialNo": "1",
  9. "procDate": "20181018",
  10. "zipType": "0",
  11. "signatureAlg": "01"
  12. },
  13. "dataSignature": "13513405bdd454c436ff319247137e98f170d37dadd92e4fe0d08e9f298f1ae464defd507c207522f248aa196e97c99044458a13bb153104f1b762c31cfb6a366843d736afa0f604a813e38a7a8423e689d3d56883d54d0f495bd3bb660d25c608c96b7c7826090b3c981dce4800b76dcd685f8e260b3efb5395566eaf11f5c42f085048c17583aed1b02ccc2b160fb660267fc68778a20dfcc6dafff96d03d0142397f204e07142b03c7073cfc832fd752f3deedb11f0941fdd740cee45bc5d1a47ea7dd1060a2555b3de1923b800db58d7ecc0881a7c686932b25c81764974a6ac97ad9808925493c71fe5c51936afe656b8b6edff70bc8a93c19dd5cf2c4b",
  14. "status": {
  15. "result": "0",
  16. "statusCode": "0000",
  17. "statusMessage": "查询成功"
  18. },
  19. "bodyData": {
  20. "tranCode": "01",
  21. "totalBalance": "2500000000",
  22. "accBalance": 2454580996
  23. }
  24. }

查询失败:

  1. {
  2. "headData": {
  3. "majorVersion": "1.0",
  4. "minorVersion": "1.0",
  5. "msgType": "80003",
  6. "corpNo": "88888",
  7. "timestamp": "2018-10-18 15:59:49",
  8. "serialNo": "1",
  9. "procDate": "20181018",
  10. "zipType": "0",
  11. "signatureAlg": "01"
  12. },
  13. "dataSignature": "85406d5e26d9a64461ec6c7360e01b07d999930e467ca6ede1e3c57c408a10c4f927e3f38f1c20344599cb36c13c8bde12b8356196850a4bf3c030f08366afadf28e2a5ac66eb09b513d6795b4a6d1d3564f291b47379acd71e84778754003eba350c6bd131202532ad7495f3e647cdb6951e07c748662c76049331e1fd28372758f36577e34cea3dce7d61caabf289b90e5778ac0ae7179ec36a16387186d502af24eaa71aebb3a61260048ecbc516b95dc62d460843d30d4848576bf2c6569a3da2cea0ff5a91e1d3472bc09403aef02eb14115ea78066fca0fc67e891c487518de086e8c073cc24a96441ee95ca319c08b68d8dc94814262ffafb42e65849",
  14. "status": {
  15. "result": "2",
  16. "statusCode": "1131",
  17. "statusMessage": "失败. 缺少必填参数或数据格式错"
  18. },
  19. "bodyData": {
  20. "tranCode": "",
  21. " totalBalance ": "0",
  22. "accBalance": 0
  23. }
  24. }

5. 参考资料

附录A. 响应代码说明

处理结果码(result) 信息 对应的报文 描述
0 处理成功 所有响应报文 处理成功
1 处理中 所有响应报文 交易未处理完,可通过状态码(statusCode)获得交易的中间状态。 商户可主动发起交易结果查询获得交易最交易处理终结果。
2 处理失败 所有响应报文 交易处理失败,可通过状态码(statusCode)和状态信息(statusMessage)获得交易的具体失败代码和失败信息。 交易发送除处理失败的;其余均需调用查询接口获得最终结果

status中的 statusCode 状态码(result) 信息 对应的报文 描述
0000 受理成功 所有响应报文 同result=0
1105 处理中 所有响应报文 同result=1
1131 交易失败 所有响应报文 同result=2

附录B. 对Json报文中的对象进行签名的流程说明

  1. 序列化待签Json对象的报文

序列化规则:按照Json格式要求拼装报文,要注意,序列化报文以“{”起始,以“}”结束,若待签名Json对象是一个数组,则以“[”起始,以“]”结束。各字段与标点符号间无任何空格、回车换行符,同级字段的排列顺序应以元素定义表格中从上到下的顺序,字符串使用UTF-8编码。对于无须赋值的非必填字段,也应出现在报文中,字符类型的值取"",数字类型的取值0。数字类型的字段,取值不要带双引号。
如下示例,序列化的结果应该是:
交易报文:

  1. {"majorVersion":"1.0","minorVersion":"1.0","msgType":"","corpNo":"","reqDate":"","reqTime":"","serialNo":"","zipType":"","notifyUrl":"","signatureAlg":""}{"orderId":"","batFlag":"","tnValue":"","feeCode":"","curType":"","trMoney":"","bankNo":"","openBankNo":"","accNo":"","accName":"","memo":"","lendFlag":"","lendRate":"","publicPrivaFlag":""}

查询交易结果响应报文待签数据示例:
通用回执:headData的json串+status的json串

  1. {"majorVersion":"","minorVersion":"","msgType":"","corpNo":"","timestamp":"","serialNo":"","procDate":"","zipType":"","signatureAlg":""}{"result":"","statusCode":""}

单笔交易回执:headData的json串+ bodyData的json串+status的json串

  1. {"majorVersion":"","minorVersion":"","msgType":"","corpNo":"","timestamp":"","serialNo":"","procDate":"","zipType":"","signatureAlg":""}{"orderId":""}{"result":"","statusCode":""}
  1. 签名机制
    平台需要验证商户上送的签名是否正确;商户收到应答,也需要验证签名是否正确,如果商户未正确验证签名,存在潜在的风险,商户自行承担因此而产生的所有损失。
  2. 报文的签名机制
    对于报文的签名处理机制如下:
    首先,将报文头(headData)json串+报文体json串(bodyData) 拼接成待签名串,
    其次,对待签名串签名算法使用SHA1WithRSA,签名证书类型采用PKCS12,编码格式采用UTF-8;再使用商户的签名私钥证书中的私钥对待签名串做签名操作。
    最后,将签名串放在签名(dataSignature)表单域里和其他表单域一起通过HTTP Post的方式传输给平台。

附录C. 商户证书生成方式

111.png-392.2kB

附录D. 代付业务类型

业务名称 业务编码
日间代付 trade.agent. daytime
普通代付 trade.agent.general

附录E. 业务类型编码

业务名称 业务编码
单笔实时代付 30102
单笔交易结果查询 50101
商户垫资额度查询 80003

常见问题

  1. bankNo(明细接收行)所传为 收款客户卡号的银行名字,为汉字,如:平安银行?
    答:汉字行名与行号都可以;但行名需与我方的行名信息完全匹配
  2. 贵行返回的json报文中的 "status": {"result": "0", "statusCode": "0000", "statusMessage": "成功"} result 对应 0、1、2 为成功、处理中、失败 (可能还会有空?)result字段 理解为调用接口成功与否?statusCode 理解为交易成功与否?
    答: status中的result与statusCode同义:都是调用成功与否;
    bodyData中的statusCode才是交易成功与否
  3. 代付交易中:"result": "0" "statusCode": "0000" 只有这一种情况为成功?
    答:除明确失败的,即:"result": "2"以外,其他有查询接口的交易均需调用查询接口获得最终状态;
    查询返回 :"status": {"result": "0", "statusCode": "0000", "statusMessage": "成功"}表示查询成功;具体交易状态见bodyData中的statusCode;
    当result=0时才有bodyData
  4. 返回:签名失败原因
    答:密钥异常;密钥不匹配;加签内容不正确;加签内容缺少标签(为null的字段,标签也需上送);
    或中文乱码
  5. 返回:商户无效或暂停交易
    答:企业代码(即:商户号)不存在;或状态不正确;
  6. 中文乱码问题
    答:使用POST提交,并使用UTF-8编码;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注