代收-批量代收

拉卡拉好拓客 3個月前 ( 11-25 ) 502

批量代收流程:

調用地址

使用HTTP協議,POST方式提交。

URL(測試環境):

URL(測試環境外網):https://test.wsmsd.cn/sit/api/v3/ipsdk/trans/batchCollection

URL(生產環境):https://s2.lakala.com/api/v3/ipsdk/trans/batchCollection


請求報文

字段名中文名稱是否必填類型說明
merchant_no商戶號MString(32)拉卡拉分配的商戶號
term_no終端號MString(32)拉卡拉分配的業務終端號
batch_no批次號MString(4)批量交易時填寫,當天唯一,0001-9999
total_qty總筆數MString(6)批量代收總筆數(最大1000)
total_amt總金額MString(12)批量代收總金額
file_name文件名稱MString(100)文件名及文件路徑,比如 /OP00000003/20220411/DK_8223010594303A2_0001_I.txt
digest文件摘要MString(256)文件的SM3摘要






響應報文

字段名中文名稱是否必填類型說明
txn_time發送時間MString(14)發送時間
batch_no批次號MString(4)批量交易時填寫,當天唯一,0001-9999
total_qty總筆數MString(6)批量代收總筆數(最大1000)
total_amt總金額MString(12)批量代收總金額


文件名及文件路徑

  1. 文件名規則:DK_商戶號_ 日期(YYYYMMDD) _批次號(0001-9999) _文件類型(請求: I ,結果: O,拒絕: R).txt

  2. 文件路徑規則:/APPID/YYYYMMDD/文件名


批量請求文件格式

請求文件頭:總金額|總筆數|請求方保留域1|請求方保留域2請求文件體:商戶號|外部請求流水號|交易幣種|交易金額|協議號|附言|請求方保留域1|請求方保留域2merchantNo|outTradeNo|currencyCode|txnAmt|lklagreno|postscript|reqReserved1|reqReserved28223010594303A2|1649399896|156|500|202204081105000101A2000000002003|附言|保留域1|保留域2例如:600|2||
merchantNo|outTradeNo|currencyCode|txnAmt|lklagreno|postscript|reqReserved1|reqReserved28223010594303A2|202204100001000002|156|100|202204081105000101A2000000002003|附言||
8223010594303A2|202204100001000003|156|500|202204081105000101A2000000002003|附言||復制


批量返回文件格式-成功

返回文件頭:


批量返回文件格式-拒絕

拒絕文件體(無文件頭):


文件摘要示例

Java :


復制


static{
   try{
       Security.addProvider(new BouncyCastleProvider());
   }catch(Exception e){
       e.printStackTrace();
   }
}

   public static String getDigestSM3(File file) throws Exception {
       InputStream fis = null;
       try {
           fis = new FileInputStream(file);
           byte buffer[] = new byte[1024];
           MessageDigest md = MessageDigest.getInstance("SM3");
           for (int numRead = 0; (numRead = fis.read(buffer)) > 0;) {
               md.update(buffer, 0, numRead);
           }
           return Hex.toHexString(md.digest());
       } finally {
           if (fis != null)
               fis.close();
       }
   }


The End