# API文档 2.0 (Current)

# 概览

TripLink API全部基于HTTPS协议,接入方需要按照API说明通过POST方法调用,详见API列表

所有API的请求体和响应体都是JSON格式,所有字符都使用UTF-8编码。接入方需要加入请求头Content-Type: application/json

所有API的请求和响应都包含一些公共参数,分别位于请求头和响应头,详见公共参数

所有API的请求和响应都进行了加密签名,详见加密机制签名机制

环境 地址
测试 https://vcc-compass-fat.ctripqa.com/compass/api
生产(国内) https://compass.ctrip.com/compass/api
生产(海外) https://compass.triplinkintl.com/compass/api

注意

生产(国内) 地址将于 2023年2月20日 停止服务,请尽快替换成 生产(海外) 地址。 请直接使用域名地址访问,不要设置IP白名单。

# 公共参数

# 请求头

名称 必填 描述 备注 示例值
customerId Y 客户ID 预先配置。 ASR3F1B4Z5
service Y API名称 详见API列表 createCard
version Y API版本 当前版本2.0 2.0
requestId Y 请求流水号 每个请求唯一,建议使用UUID 472f37e3-a803-47ed-b9b6-32632895b466
timestamp Y 请求时间 UNIX时间戳(毫秒)。 1642747436113
sign Y 请求数据签名 详见签名机制 +Ue0BiWsCOxbYD39Ldd(部分数据)

# 响应头

名称 描述 备注 示例值
customerId 客户ID 请求头原样返回。 ASR3F1B4Z5
service API名称 请求头原样返回。 createCard
version API版本 请求头原样返回。 2.0
requestId 请求流水号 请求头原样返回。 472f37e3-a803-47ed-b9b6-32632895b466
timestamp 响应时间 UNIX时间戳(毫秒)。 1642747437393
code 响应码 枚举值,3位数字,详见响应码下拉框。 200(非200表示API调用失败)
message 响应码详情 详见响应码下拉框。 succeed
sign 响应数据签名 详见签名机制 WO8waUZ30bYlKp/+s9m(部分数据)
响应码
code message 备注
200 succeed 成功。
400 payload decrypt failed 无法解密数据。
403 the ip is not whitelisted 请求IP不在白名单。
405 unsupported method 请求方法不支持。(仅支持POST
406 too many requests 请求过于频繁。
407 verify sign failed 无法验证签名。
417 the parameter is null or invalid 请求头必填参数为空。
500 (不固定) 系统错误。

# API列表

名称 方法 请求头service参数
创建卡 POST createCard
修改卡 POST updateCard
充值卡 POST rechargeCard
提现卡 POST withdrawCard
锁定卡 POST suspendCard
解锁卡 POST unSuspendCard
注销卡 POST closeCard
查询卡 POST queryCardDetail
查询汇率 POST fxQuote
查询账户额度 POST queryCustomerCredit
查询清算交易 POST querySettlementTransaction
查询授权交易(待废弃) POST queryAuthTransaction
查询授权交易(推荐) POST queryAuthTransactionByPage
账户提现申请 POST payoutCreate
账户提现查询 POST payoutQuery

# 加密机制

为保证数据的安全性,TripLink会对每个请求和响应进行加密。

接入方与TripLink需使用对称加密算法AES/ECB/PKCS5Padding,对请求体响应体进行加密与解密,结果采用Base64 编码。

TripLink需要接入方提前提供128AES密钥(Base64 编码格式),参考准备工作

# 请求体

原始请求体各字段含义详见下方各API说明。

接入方:对原始请求体先使用AES密钥加密,再进行Base64编码。结果作为实际请求体payload字段的值。发送实际请求体

TripLink:对收到的实际请求体payload字段的值先进行Base64解码,再使用AES密钥解密。结果即为原始请求体

    # 响应体

    原始响应体各字段含义详见下方各API说明。

    TripLink:对原始响应体先使用AES密钥加密,再进行Base64编码。结果作为实际响应体payload字段的值。发送实际响应体

    接入方:对收到的实际响应体payload字段的值先进行Base64解码,再使用AES密钥解密。结果即为原始响应体

      Java工具类示例
      import javax.crypto.Cipher;
      import javax.crypto.SecretKey;
      import javax.crypto.spec.SecretKeySpec;
      import java.util.Base64;
      
      import static java.nio.charset.StandardCharsets.UTF_8;
      
      public class AesUtils {
          
          private static final Base64.Encoder ENCODER = Base64.getEncoder();
          private static final Base64.Decoder DECODER = Base64.getDecoder();
      
          public static String aesEncrypt(SecretKey key, String plaintext) throws Exception {
              Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
              cipher.init(Cipher.ENCRYPT_MODE, key);
              byte[] cipherBytes = cipher.doFinal(plaintext.getBytes(UTF_8));
              return new String(ENCODER.encode(cipherBytes), UTF_8);
          }
      
          public static String aesDecrypt(SecretKey key, String ciphertext) throws Exception {
              Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
              cipher.init(Cipher.DECRYPT_MODE, key);
              byte[] cipherBytes = DECODER.decode(ciphertext.getBytes(UTF_8));
              return new String(cipher.doFinal(cipherBytes), UTF_8);
          }
      
          public static SecretKey newAesKey(String keyStr) {
              return new SecretKeySpec(DECODER.decode(keyStr.getBytes(UTF_8)), "AES");
          }
      
          public static String toAesKeyStr(SecretKey key) {
              return new String(ENCODER.encode(key.getEncoded()), UTF_8);
          }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34

      Java 6用户可以考虑使用org.apache.commons.codec.binary.Base64类代替Java 8新增的java.util.Base64

      PHP工具类示例
      <?php declare(strict_types=1);
      
      class AesUtils {
      
          public static function aesEncrypt(string $keyStr, string $plaintext): string {
              return base64_encode(openssl_encrypt($plaintext, 'AES-128-ECB', base64_decode($keyStr), OPENSSL_RAW_DATA));
          }
      
          public static function aesDecrypt(string $keyStr, string $ciphertext): string {
              return openssl_decrypt(base64_decode($ciphertext), 'AES-128-ECB', base64_decode($keyStr), OPENSSL_RAW_DATA);
          }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      # 签名机制

      为保证API的安全调用,TripLink会对每个请求和响应通过签名进行身份验证。

      接入方与TripLink需使用签名算法SHA256withRSA,对请求待签字符串响应待签字符串进行签名,签名结果采用Base64 编码,对应请求头和响应头的sign字段。

      接入方会提前收到TripLink为您分配的2048RSA公钥TBase64 编码格式),同时TripLink需要接入方提前提供2048RSA公钥UBase64 编码格式),参考准备工作

      整个请求与响应流程涉及2RSA密钥:属于TripLink的公钥T私钥T,属于接入方的公钥U私钥U。公钥用于验证签名,私钥用于生成签名。

      # 请求待签字符串

      所有字段按如下顺序依次使用|符号连接。

      customerId|service|version|requestId|timestamp|payload
      
      1

      customerIdserviceversionrequestIdtimestamp来自请求头中对应字段。

      payload来自实际请求体payload字段。

      接入方:对请求待签字符串先使用私钥U生成签名,再进行Base64编码。结果作为请求头sign字段的值。

      TripLink:对收到的请求头sign字段的值先进行Base64解码,再使用公钥U验证签名。

      # 响应待签字符串

      所有字段按如下顺序依次使用|符号连接。

      customerId|service|version|requestId|timestamp|code|message|payload
      
      1

      customerIdserviceversionrequestIdtimestampcodemessage来自响应头中对应字段。

      payload来自实际响应体payload字段。

      TripLink:对响应待签字符串先使用私钥T生成签名,再进行Base64编码。结果作为响应头sign字段的值。

      接入方:对收到的响应头sign字段的值先进行Base64解码,再使用公钥T验证签名。

      Java工具类示例
      import java.security.KeyFactory;
      import java.security.PrivateKey;
      import java.security.PublicKey;
      import java.security.Signature;
      import java.security.spec.PKCS8EncodedKeySpec;
      import java.security.spec.X509EncodedKeySpec;
      import java.util.Base64;
      
      import static java.nio.charset.StandardCharsets.UTF_8;
      
      public class RsaUtils {
          
          private static final Base64.Encoder ENCODER = Base64.getEncoder();
          private static final Base64.Decoder DECODER = Base64.getDecoder();
      
          public static String rsaSign(PrivateKey privateKey, String content) throws Exception {
              Signature signer = Signature.getInstance("SHA256withRSA");
              signer.initSign(privateKey);
              signer.update(content.getBytes(UTF_8));
              return new String(ENCODERL.encode(signer.sign()), UTF_8);
          }
      
          public static boolean rsaVerify(PublicKey publicKey, String content, String signature) throws Exception {
              Signature signer = Signature.getInstance("SHA256withRSA");
              signer.initVerify(publicKey);
              signer.update(content.getBytes(UTF_8));
              return signer.verify(DECODER.decode(signature.getBytes(UTF_8)));
          }
      
          public static PrivateKey newRsaPrivateKey(String privateKeyStr) throws Exception {
              byte[] bytes = DECODER.decode(privateKeyStr.getBytes(UTF_8));
              KeyFactory keyFactory = KeyFactory.getInstance("RSA");
              return keyFactory.generatePrivate(new PKCS8EncodedKeySpec(bytes));
          }
      
          public static PublicKey newRsaPublicKey(String publicKeyStr) throws Exception {
              byte[] bytes = DECODER.decode(publicKeyStr.getBytes(UTF_8));
              KeyFactory keyFactory = KeyFactory.getInstance("RSA");
              return keyFactory.generatePublic(new X509EncodedKeySpec(bytes));
          }
      
          public static String toRsaPrivateKeyStr(PrivateKey privateKey) {
              return new String(ENCODER.encode(privateKey.getEncoded()), UTF_8);
          }
      
          public static String toRsaPublicKeyStr(PublicKey publicKey) {
              return new String(ENCODER.encode(publicKey.getEncoded()), UTF_8);
          }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49

      Java 6用户可以考虑使用org.apache.commons.codec.binary.Base64类代替Java 8新增的java.util.Base64

      PHP工具类示例
      <?php declare(strict_types=1);
      
      class RsaUtils {
      
          public static function rsaSign(string $privateKeyStr, string $content): string {
              openssl_sign($content, $signature, self::pemFormat($privateKeyStr, 'PRIVATE KEY'), OPENSSL_ALGO_SHA256);
              return base64_encode($signature);
          }
      
          public static function rsaVerify(string $publicKeyStr, string $content, string $signature): bool {
              return openssl_verify($content, base64_decode($signature), self::pemFormat($publicKeyStr, 'PUBLIC KEY'), OPENSSL_ALGO_SHA256) === 1;
          }
      
          private static function pemFormat(string $keyStr, string $label): string {
              return "-----BEGIN {$label}-----\n" . chunk_split($keyStr, 64) . "-----END {$label}-----\n";
          }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17

      # 创建卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardCurrencyCode String N 卡币种 默认与结算币种相同。
      ISO 4217货币编号,3位数字。
      参考ISO 3166以及ISO 4217
      settlementCurrencyCode String Y 结算币种 ISO 4217货币编号,3位数字。
      exchangeCurrencyCode String N 卖出币种 ISO 4217货币编号,3位数字。卡产品为C05时生效且必填。
      刷卡授权消费时自动将卖出币种兑换为结算币种。
      activeDate String Y 生效日期 格式 yyyy-MM-dd
      inactiveDate String Y 失效日期 格式 yyyy-MM-dd
      cardLimit Number Y 额度 小数,对应卡币种。
      minAuthAmount Number Y 单次授权金额下限 小数,对应卡币种。
      (预付费卡,此字段不生效)
      maxAuthAmount Number Y 单次授权金额上限 小数,对应卡币种。
      (预付费卡,此字段不生效)
      maxAuthTimes Number Y 授权次数上限 整数。1:单次卡,-1:不限次数。
      cardCloseUsage Number N 自动注销百分比 整数,范围0-100,默认0
      当已清算金额占额度比大于等于此值,卡会被自动注销。
      特殊值0:卡片不会自动注销。
      (预付费卡,此字段不生效)
      supportedMccGroup String Y 接受的MCC组 接受的商户类别组名,由TripLink定义。
      非此商户类别组请求的交易会被拒绝。
      supportedMid String N 接受的商户ID 非此商户请求的交易会被拒绝。
      supportedAcquirerId String N 接受的收单行ID 非此收单行请求的交易会被拒绝。
      multipleCurrencyCard Boolean N 是否允许非卡币种交易 默认true
      cvv2ForceCheck Boolean N 是否验证CVV2 默认false
      allow3ds Boolean N 是否接受3DS交易 默认true
      (仅香港万事达卡生效)
      cardProductCode String Y 卡产品 枚举值,详见卡分类层次下拉框。
      cardType String Y 卡类型 枚举值,详见卡分类层次下拉框。
      cardLabel String Y 卡组织 枚举值,详见卡分类层次下拉框。
      cardBin String N 发卡机构识别号 可指定开卡卡BIN段,请联系TripLink提供。
      quoteId String N 汇率ID 卡产品为C05时生效。
      查询汇率接口返回的汇率ID。
      若有效则以此汇率兑换,若无效则以实时汇率兑换。
      timeZone string N 卡时区 卡生效与失效日期时区,格式举例:
      中国标准时间 GMT+08:00
      北美东部标准时间 GMT-05:00
      默认值可在商户系统/设置/全局参数处配置。
      userReferenceMap Object N 用户自定义字段 String键值对,共20个键可选。
      范围useRef1Txt-useRef20Txt

      TripLink仅会保存和展示用户自定义字段,没有业务逻辑与此相关。

      卡分类层次
      名称 描述 备注
      cardProductCode 卡产品 枚举值,C01C02C03C04C05
      cardType 卡类型 枚举值,详见卡分类层次详情下拉框。
      cardLabel 卡组织 枚举值,MasterCardVISA
      卡分类层次详情
      卡产品 卡账户 发卡地区 卡类型 卡组织
      C01 贷记 中国香港 MCO
      GWTTP
      GWTTP-MBA
      GWTTP-MBG
      GWTTP-MBH
      GWTTP-MBI
      GWTTP-MBJ
      MasterCard
      C01 贷记 美国 USDVCC MasterCard
      VISA
      C02 借记 中国香港 MCO
      GWTTP
      GWTTP-MBA
      GWTTP-MBG
      GWTTP-MBH
      GWTTP-MBI
      GWTTP-MBJ
      MasterCard
      C02 借记 新加坡 TAE
      B2B
      VISA
      C03 预付费 美国 USDVCC MasterCard
      VISA
      C04 贷记 新加坡 TAEB2B VISA
      C05 借记(换汇) 中国香港 MCO
      GWTTP
      GWTTP-MBA
      GWTTP-MBG
      GWTTP-MBH
      GWTTP-MBI
      GWTTP-MBJ
      MasterCard
      C05 借记(换汇) 新加坡 TAE
      B2B
      VISA
      请求体示例
      {
        "requestId": "1ac60d08-0e15-47da-a341-7287dd46ff39",
        "customerId": "CSR47284A93E35E4",
        "cardCurrencyCode": "840",
        "settlementCurrencyCode": "840",
        "activeDate": "2022-01-01",
        "inactiveDate": "2024-06-01",
        "cardLimit": 1000.12,
        "minAuthAmount": 3.45,
        "maxAuthAmount": 500.67,
        "maxAuthTimes": -1,
        "cardCloseUsage": 40,
        "supportedMccGroup": "ecom",
        "multipleCurrencyCard": true,
        "cvv2ForceCheck": true,
        "cardProductCode": "C02",
        "cardBin":"522981",
        "cardType": "GWTTP",
        "cardLabel": "MasterCard",
        "userReferenceMap": {
          "useRef1Txt": "anything"
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      cardLogId String 卡ID TripLink专用卡标识。
      cardNum String 卡号 16位卡号。
      cardExpirationDate String 有效期 格式 yyMM
      cvv2 String 卡CVV2 安全码。
      cardType String 卡品牌
      cardLabel String 卡组织
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      100001 Reduplicative requestid requestId重复。
      200002 Both MCC, MCC groups and [acquirerId,merchantId] are all empty supportedMccGroup与(supportedMidsupportedAccquirerId)都为空。
      200003 Customer info not find 客户信息不存在。
      200007 Global parameter not find 客户全局配置不存在。
      200008 InactiveDate must be greater than activeDate 不可交易日必须晚于可交易日。
      200013 Not find the mapping between the cardCurrency and settlementCurrency 结算账户不存在。
      200014 AcquirerId/mid must not be empty 收单行ID与商户ID必须同时存在。
      200022 Not find active pan number config 卡号生成失败。
      200029 Card exists pending request 其他操作执行中。
      200036 card bin not support 卡品牌不支持。
      200037 InactiveDate must submit 卡不可交易日生成失败。
      200038 cardCloseUsage not be null cardCloseUsage格式不正确。
      200040 Invalid global parameter (indate) 卡有效期配置不存在。
      200043 mcc group is empty supportedMccGroup为空。
      200044 mcc group all is not supported supportedMccGroup不可为all
      200048 (不固定) 发卡行处理失败。
      200060 (不固定) 发卡行请求参数错误。
      300004 mcc link channel group is empty 发卡行MCC组为空。
      300005 Trading is risky 高风险请求。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success",
        "cardLogId": "9448b6a7b3bcb22f99c1bedd246aba092c7932fd5e7f3042607bf58bc7cc3d83",
        "cardNum": "5229811460053354",
        "cardExpirationDate": "2406",
        "cvv2": "123",
        "cardType": "GWTTP",
        "cardLabel": "MasterCard"
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      # SDK示例

      Java SDK
      public void testCreateCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardCreateRequest request = new CardCreateRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardCurrencyCode("840");
          request.setSettlementCurrencyCode("840");
          request.setActiveDate("2022-01-01");
          request.setInactiveDate("2024-06-01");
          request.setCardLimit(BigDecimal.valueOf(1000.12));
          request.setMinAuthAmount(BigDecimal.valueOf(3.45));
          request.setMaxAuthAmount(BigDecimal.valueOf(500.67));
          request.setMaxAuthTimes(-1);
          request.setCardCloseUsage(40);
          request.setSupportedMccGroup("ecom");
          request.setMultipleCurrencyCard(true);
          request.setCvv2ForceCheck(true);
          request.setCardBin("522981");
          request.setCardType("GWTTP");
          request.setCardLabel("MasterCard");
          Map<String, String> userReference = new HashMap<>();
          userReference.put("useRef1Txt", "anything");
          request.setUserReferenceMap(userReference);
      
          CardCreateResponse response = tripLinkApi.create(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      PHP SDK
      public function testCreateCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new CreateCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardCurrencyCode('840');
          $request->setSettlementCurrencyCode('840');
          $request->setActiveDate('2022-01-01');
          $request->setInactiveDate('2024-06-01');
          $request->setCardLimit(1000.12);
          $request->setMinAuthAmount(3.45);
          $request->setMaxAuthAmount(500.67);
          $request->setMaxAuthTimes(-1);
          $request->setCardCloseUsage(40);
          $request->setSupportedMccGroup('ecom');
          $request->setMultipleCurrencyCard(true);
          $request->setCvv2ForceCheck(true);
          $request->setCardBin('522981');
          $request->setCardType('GWTTP');
          $request->setCardLabel('MasterCard');
          $userReference = new UserReference();
          $userReference->setUseRef1Txt('anything');
          $request->setUserReferenceMap($userReference);
      
          $response = $tripLinkAgent->createCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 修改卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      activeDate String N 生效日期 格式 yyyy-MM-dd
      inactiveDate String N 失效日期 格式 yyyy-MM-dd
      cardLimit Number N 额度 小数,对应卡币种。
      minAuthAmount Number N 单次授权金额下限 小数,对应卡币种。
      (预付费卡,此字段不生效)
      maxAuthAmount Number N 单次授权金额上限 小数,对应卡币种。
      (预付费卡,此字段不生效)
      cardCloseUsage Number N 自动注销百分比 整数,范围0-100,默认0
      当已清算金额占额度比大于等于此值,卡会被自动注销。
      特殊值0:卡片不会自动注销。
      (预付费卡,此字段不生效)
      supportedMccGroup String N 接受的MCC组 接受的商户类别组名,由TripLink定义。
      非此商户类别组请求的交易会被拒绝。
      supportedMid String N 接受的商户ID 非此商户请求的交易会被拒绝。
      supportedAcquirerId String N 接受的收单行ID 非此收单行请求的交易会被拒绝。
      multipleCurrencyCard Boolean N 是否允许非卡币种交易
      cvv2ForceCheck Boolean N 是否验证CVV2
      allow3ds Boolean N 是否接受3DS交易 (仅香港万事达卡生效)
      timeZone string N 卡时区 卡生效与失效日期时区,格式举例:
      中国标准时间GMT+08:00
      北美东部标准时间GMT-05:00
      默认值可在商户系统/设置/全局参数处配置。
      userReferenceMap Object N 用户自定义字段 String键值对,共20个键可选。
      范围useRef1Txt-useRef20Txt

      TripLink仅会保存和展示用户自定义字段,没有业务逻辑与此相关。

      请求体示例
      {
        "requestId": "15b77002-748d-4c89-b6a3-1fa0a25adf3b",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "9f289daa62ac6e941f918634de3f91a142eea82c09ac27783ea7c2d9c07f8ec3",
        "cardLimit": 2000.12,
        "multipleCurrencyCard": false,
        "cvv2ForceCheck": false
      }
      
      1
      2
      3
      4
      5
      6
      7
      8

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      cardLogId String 卡ID TripLink专用卡标识。
      cardNum String 卡号 16位卡号。
      cardExpirationDate String 卡有效期 格式yyMM
      cvv2 String 卡CVV2 安全码。
      userReferenceMap Object 用户自定义字段 String键值对,共20个键可选。
      范围useRef1Txt-useRef20Txt

      TripLink仅会保存和展示用户自定义字段,没有业务逻辑与此相关。

      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      100001 Reduplicative requestid requestId重复。
      200001 ActiveDate must be greater than current date(不固定) 卡有效期错误。
      200003 Customer info not find 客户信息不存在。
      200007 Global parameter not find 客户全局配置不存在。
      200009 Effective mccGroup not find 有效MCC组不存在。
      200014 AcquirerId/mid must not be empty 收单行ID与商户ID必须同时存在。
      200015 Not find card 卡不存在。
      200016 Card status is clop or clos 卡已注销。
      200019 Update card limit is less than the amount of used card 更新额度小于已用额度。
      200029 Card exists pending request 其他操作执行中。
      200032 Not find customer global setting 客户全局参数不存在。
      200036 card bin not support 卡品牌不支持。
      200048 (不固定) 发卡行处理失败。
      200060 (不固定) 发卡行请求参数错误。
      300004 mcc link channel group is empty 发卡行MCC组为空。
      300005 Trading is risky 高风险请求。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success",
        "cardLogId": "9f289daa62ac6e941f918634de3f91a142eea82c09ac27783ea7c2d9c07f8ec3",
        "cardNum": "5395933355051253",
        "cardExpirationDate": "2406",
        "cvv2": "123",
        "userReferenceMap": {
          "useRef1Txt": "anything"
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

      # SDK示例

      Java SDK
      public void testUpdateCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardUpdateRequest request = new CardUpdateRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
          request.setCardLimit(BigDecimal.valueOf(2000.12));
          request.setMultipleCurrencyCard(false);
          request.setCvv2ForceCheck(false);
      
          CardUpdateResponse response = tripLinkApi.update(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      PHP SDK
      public function testUpdateCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new UpdateCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
          $request->setCardLimit(2000.12);
          $request->setMultipleCurrencyCard(false);
          $request->setCvv2ForceCheck(false);
      
          $response = $tripLinkAgent->updateCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 充值卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      rechargeAmount Number Y 充值金额 小数,对应卡币种。
      请求体示例
      {
        "requestId": "9340c297-e8b8-4148-b0b7-3d8aa5fcb487",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "9261267e66b808e9a2f62fe54e516192677236b943aa2dee1836284b369768d7",
        "rechargeAmount": 100.12
      }
      
      1
      2
      3
      4
      5
      6

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      200003 Customer info not find 客户信息不存在。
      200015 Not find card 卡不存在。
      200016 Card status is clop or clos 卡已注销。
      300003 Call JPM gateway error 发卡行返回错误。
      300004 mcc link channel group is empty 发卡行MCC组为空。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success"
      }
      
      1
      2
      3
      4

      # SDK示例

      Java SDK
      public void testRechargeCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardRechargeRequest request = new CardRechargeRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
          request.setRechargeAmount(BigDecimal.valueOf(100.12));
      
          CardRechargeResponse response = tripLinkApi.recharge(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      PHP SDK
      public function testRechargeCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new RechargeCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
          $request->setRechargeAmount(100.12);
      
          $response = $tripLinkAgent->rechargeCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 提现卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      withdrawAmount Number Y 提现金额 小数,对应卡币种。
      请求体示例
      {
        "requestId": "8f26c686-6275-4271-aa6d-a0a6a4df441e",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "9261267e66b808e9a2f62fe54e516192677236b943aa2dee1836284b369768d7",
        "withdrawAmount": 80.12
      }
      
      1
      2
      3
      4
      5
      6

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      200003 Customer info not find 客户信息不存在。
      200015 Not find card 卡不存在。
      200016 Card status is clop or clos 卡已注销。
      200019 Update card limit is less than the amount of used card 更新额度小于已用额度。
      200029 Card exists pending request 其他操作执行中。
      200048 card issuer failed 发卡行返回错误。
      300004 mcc link channel group is empty 发卡行MCC组为空。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success"
      }
      
      1
      2
      3
      4

      # SDK示例

      Java SDK
      public void testWithdrawCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardWithdrawRequest request = new CardWithdrawRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
          request.setWithdrawAmount(BigDecimal.valueOf(80.12));
      
          CardWithdrawResponse response = tripLinkApi.withdraw(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      PHP SDK
      public function testWithdrawCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new WithdrawCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
          $request->setWithdrawAmount(80.12);
      
          $response = $tripLinkAgent->withdrawCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 锁定卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      请求体示例
      {
        "requestId": "7d451d22-fab3-471e-acfa-efd7aa3a1db9",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "f05c9c6670a956150aa346e671d6d9fe757cbe178d555a763631be75e61fee07"
      }
      
      1
      2
      3
      4
      5

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      200003 Customer info not find 客户信息不存在。
      200015 Not find card 卡不存在。
      200016 Card status is clop or clos 卡已注销。
      300006 Not support suspend the card 发卡行不支持锁定卡。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success"
      }
      
      1
      2
      3
      4

      # SDK示例

      Java SDK
      public void testSuspendCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardSuspendRequest request = new CardSuspendRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
      
          CardSuspendResponse response = tripLinkApi.suspend(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      PHP SDK
      public function testSuspendCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new SuspendCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
      
          $response = $tripLinkAgent->suspendCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 解锁卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      请求体示例
      {
        "requestId": "7d451d22-fab3-471e-acfa-efd7aa3a1db9",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "f05c9c6670a956150aa346e671d6d9fe757cbe178d555a763631be75e61fee07"
      }
      
      1
      2
      3
      4
      5

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      200003 Customer info not find 客户信息不存在。
      200015 Not find card 卡不存在。
      200016 Card status is clop or clos 卡已注销。
      300007 Not support unsuspend the card 发卡行不支持解锁卡
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success"
      }
      
      1
      2
      3
      4

      # SDK示例

      Java SDK
      public void testUnsuspendCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardUnsuspendRequest request = new CardUnsuspendRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
      
          CardUnsuspendResponse response = tripLinkApi.unsuspend(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      PHP SDK
      public function testUnsuspendCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new UnsuspendCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
      
          $response = $tripLinkAgent->unsuspendCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 注销卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      请求体示例
      {
        "requestId": "7d451d22-fab3-471e-acfa-efd7aa3a1db9",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "f05c9c6670a956150aa346e671d6d9fe757cbe178d555a763631be75e61fee07"
      }
      
      1
      2
      3
      4
      5

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      200003 Customer info not find 客户信息不存在。
      200015 Not find card 卡不存在。
      200016 Card status is clop or clos 卡已注销。
      200025 card status pre cancel not allow 不允许注销卡。
      200051 card cancel exception 发卡行注销卡失败。
      200053 Incorrect card status 卡不在正常状态。
      300005 Trading is risky 高风险请求。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success"
      }
      
      1
      2
      3
      4

      # SDK示例

      Java SDK
      public void testCloseCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardCancelRequest request = new CardCancelRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
      
          CardCancelResponse response = tripLinkApi.close(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      PHP SDK
      public function testCloseCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new CloseCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
      
          $response = $tripLinkAgent->closeCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 查询卡

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      请求体示例
      {
        "requestId": "5148d00e-d98f-4ccc-a5ef-acd1ff53d37e",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "0b51f2edf394d3875fa3c284186e5022236a59bc31dda6b3aba7dbe2982bc91a"
      }
      
      1
      2
      3
      4
      5

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      customerId String 客户ID 请求头
      cardLogId String 卡ID TripLink专用卡标识。
      cardCurrencyCode String 卡币种 ISO 4217货币编号,3位数字。
      settlementCurrencyCode String 结算币种 ISO 4217货币编号,3位数字。
      activeDate String 生效日期 格式yyyy-MM-dd
      inactiveDate String 失效日期 格式yyyy-MM-dd
      cardLimit Number 额度 小数,对应卡币种。
      minAuthAmount Number 单次授权金额下限 小数,对应卡币种。
      (预付费卡,此字段不生效)
      maxAuthAmount Number 单次授权金额上限 小数,对应卡币种。
      (预付费卡,此字段不生效)
      maxAuthTimes Number 授权次数上限 整数。1:单次卡,-1:不限次数。
      cardCloseUsage Number 自动注销百分比 整数,范围0-100,默认0
      当已清算金额占额度比大于等于此值,卡会被自动注销。
      特殊值0:卡片不会自动注销。
      (预付费卡,此字段不生效)
      supportedMccGroup String 接受的MCC组 接受的商户类别组名,由TripLink定义。
      非此商户类别组请求的交易会被拒绝。
      supportedMid String 接受的商户ID 非此商户请求的交易会被拒绝。
      supportedAcquirerId String 接受的收单行ID 非此收单行请求的交易会被拒绝。
      multipleCurrencyCard Boolean 是否允许非卡币种交易
      cvv2ForceCheck Boolean 是否验证CVV2
      applyTime String 申请日期 格式yyyy-MM-dd
      status String 卡状态 NORM:正常,SUSP:锁定,CLOP:预销卡,CLOS:销卡。
      cardNum String 卡号 16位卡号。
      cardExpirationDate String 卡有效期 格式yyMM
      cvv2 String 卡CVV2 安全码。
      availableBalance Number 可用余额 小数,对应卡币种。
      authorizeAmount Number 待入账金额 小数,对应卡币种。
      settlementAmount Number 已入账金额 小数,对应卡币种。
      cardLabel String 卡组织 枚举值,范围MasterCardVISA
      cardType String 卡类型 枚举值,范围GWTTPMCOUSDVCC等。
      timeZone string 卡时区 卡生效与失效日期时区,格式举例:
      中国标准时间GMT+08:00
      北美东部标准时间GMT-05:00
      默认值可在商户系统/设置/全局参数处配置。
      userReferenceMap Object 用户自定义字段 String键值对,共20个键可选。
      范围useRef1Txt-useRef20Txt
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect(不固定) 请求参数错误。
      200015 Not find card 卡不存在。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "0b51f2edf394d3875fa3c284186e5022236a59bc31dda6b3aba7dbe2982bc91a",
        "cardCurrencyCode": "840",
        "settlementCurrencyCode": "840",
        "activeDate": "2022-01-01",
        "inactiveDate": "2024-06-01",
        "cardLimit": 1000.12,
        "minAuthAmount": 3.45,
        "maxAuthAmount": 500.67,
        "maxAuthTimes": -1,
        "cardCloseUsage": 40,
        "supportedMccGroup": "ecom",
        "multipleCurrencyCard": true,
        "cvv2ForceCheck": true,
        "applyTime": "2022-02-17",
        "status": "NORM",
        "cardNum": "5395933355052420",
        "cardExpirationDate": "2406",
        "cvv2": "123",
        "availableBalance": 1000.12,
        "authorizeAmount": 0.00,
        "settlementAmount": 0.00,
        "cardType": "GWTTP",
        "cardLabel": "MasterCard",
        "timeZone": "GMT+08:00",
        "userReferenceMap": {
          "useRef1Txt": "anything"
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32

      # SDK示例

      Java SDK
      public void testQueryCard() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          CardDetailQueryRequest request = new CardDetailQueryRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
      
          CardDetailQueryResponse response = tripLinkApi.queryCard(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      PHP SDK
      public function testQueryCard(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new QueryCardRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
      
          $response = $tripLinkAgent->queryCard($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 查询汇率

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      sellCurrency String Y 卖出币种 ISO 4217货币编号,3位数字。
      buyCurrency String Y 买入币种 ISO 4217货币编号,3位数字。
      fxDirection Number Y 交易方向 0:指定卖出,此时fxAmount为卖出金额;
      1:指定买入,此时fxAmount为买入金额。
      fxAmount Number Y 交易金额 小数,对应交易币种。
      请求体示例
      {
        "requestId": "3ddf14f6-04b0-4a66-840b-a21cf0c148ee",
        "customerId": "CSR47284A93E35E4",
        "sellCurrency": "156",
        "buyCurrency": "840",
        "fxDirection": 0,
        "fxAmount": 100.00
      }
      
      1
      2
      3
      4
      5
      6
      7
      8

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      quoteId String 汇率ID 汇率唯一ID。
      sellCurrency String 卖出币种 ISO 4217货币编号,3位数字。
      sellAmount Number 卖出金额 小数,对应卖出币种。
      buyCurrency String 买入币种 ISO 4217货币编号,3位数字。
      buyAmount Number 买入金额 小数,对应买入币种。
      rate Number 汇率
      expireTime String 失效时间 格式yyyy-MM-dd HH:mm:ssUTC+08:00)。
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "success",
        "quoteId": "f3c41a86e880f2c71de0b5c45d4ae066",
        "sellCurrency": "156",
        "sellAmount": 100.00,
        "buyCurrency": "840",
        "buyAmount": 15.72,
        "rate": 0.15707102,
        "expireTime": "2022-02-25 21:56:51"
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

      # SDK示例

      Java SDK
      public void testFxQuote() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          QuoteRequest request = new QuoteRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setSellCurrency("156");
          request.setBuyCurrency("840");
          request.setFxDirection(0);
          request.setFxAmount(BigDecimal.valueOf(100.00));
      
          QuoteResponse response = tripLinkApi.quote(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      PHP SDK
      public function testFxQuote(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new FxQuoteRequest(uniqid(), CUSTOMER_ID);
          $request->setSellCurrency('156');
          $request->setBuyCurrency('840');
          $request->setFxDirection(0);
          $request->setFxAmount(100.00);
      
          $response = $tripLinkAgent->fxQuote($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13

      BASE_URL:API地址。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 查询账户额度

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      请求体示例
      {
        "requestId": "3ddf14f6-04b0-4a66-840b-a21cf0c148ee",
        "customerId": "CSR47284A93E35E4"
      }
      
      1
      2
      3
      4

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      customerId String 客户ID 请求头
      list Array 账户信息 详见Account

      Account

      名称 类型 描述 备注
      accountType String 账户类型 CREDIT:贷记账户;DEBIT:借记账户;CCP_ACCT:换汇账户。
      accountCurrency String 账户币种 ISO 4217货币编号,3位数字。
      accountAmount Number 账户额度 仅账户类型为CREDIT时有值。
      小数,对应账户币种。
      remainAccountAmount Number 剩余账户额度 小数,对应账户币种。
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 input parameter is incorrect 请求参数错误。
      200007 not find the account credit 未找到账户。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "success",
        "customerId": "CSR47284A93E35E4",
        "list": [
          {
            "accountType": "DEBIT",
            "accountCurrency": "840",
            "remainAccountAmount": 999967.66
          },
          {
            "accountType": "DEBIT",
            "accountCurrency": "978",
            "remainAccountAmount": 999999.99
          }
        ]
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17

      # SDK示例

      Java SDK
      public void testQueryAccount() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          QueryCustomerCreditAmountRequest request = new QueryCustomerCreditAmountRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
      
          QueryCustomerCreditAmountResponse response = tripLinkApi.queryCustomerCreditAmount(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      PHP SDK
      public function testQueryAccount(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new QueryAccountRequest(uniqid(), CUSTOMER_ID);
      
          $response = $tripLinkAgent->queryAccount($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 查询授权交易(待废弃)

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      startTime String Y 起始日期 格式yyyy-MM-dd
      endTime String Y 截止日期 格式yyyy-MM-dd
      请求体示例
      {
        "requestId": "7fb57ff0-ea70-4099-acf5-eacba55e18ef",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "c55d99dac26bb334c07879404a93d2c6a96b42f7372f9c04d14034d019203fe4",
        "startTime": "2022-02-01",
        "endTime": "2022-03-01"
      }
      
      1
      2
      3
      4
      5
      6
      7

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      cardLogId String 卡ID TripLink专用卡标识。
      list Array 授权交易 详见AuthTransaction
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100007 NOT_FIND_CARD 卡不存在。
      9XXXXX (不固定) 系统错误。

      AuthTransaction

      名称 类型 描述 备注
      txnId String 交易唯一ID 全局唯一。
      transactionID String 交易关联ID 授权交易与对应冲正交易的transactionID相同。
      occurDateTime String 交易发生时间 格式yyyy-MM-dd HH:mm:ss
      messageType String 交易类型 枚举值,4位数字,详见授权类型下拉框。
      messageTypeDescription String 交易类型描述 详见授权类型下拉框。
      reversalType String 冲正类型 授权类型69306940时有值。
      0:系统冲正;1:非系统冲正。
      responseCode String 交易响应码 枚举值,4位数字,详见授权响应码下拉框。
      (非0000表示授权拒绝)
      responseCodeDescription String 交易响应码描述 详见授权响应码下拉框。
      approvalCode String 授权码 随机6位数字。
      originalTransactionCurrency String 交易币种 ISO 4217货币编号,3位数字。
      originalTransactionAmount Number 交易金额 小数,对应交易币种。
      cardTransactionCurrency String 卡币种 ISO 4217货币编号,3位数字。
      cardTransactionAmount Number 卡交易金额 小数,对应卡币种。
      posMerchantID String 商户ID
      posMerchantName String 商户名称
      posMerchantClassCode String 商户MCC ISO 18245商户类别,4位数字。
      posMerchantCountry String 商户所在国家
      posMerchantCity String 商户所在城市
      posAcquirerID String 收单行ID
      授权类型
      messageType messageTypeDescription 描述 金额数值
      6810 Authorization Approval 消费授权
      6510 Auth Refund Approval 退款授权
      6930 Authorization Reversal Approval 消费授权冲正
      6940 Auth Refund Reversal Approval 退款授权冲正
      6820 Authorization Query 授权查询
      授权响应码(6810 消费授权)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1101 Abnormal Customer Status 客户状态异常。
      1102 Abnormal VAN Status 卡状态异常。
      1103 Authorization Amount Error 授权金额错误。
      1104 VAN Amount Limit Error 账户余额不足。
      1105 Invalid Expiry Date 无效的有效期。
      1106 Transaction Count Over Limit 交易金额超过上限。
      1107 Invalid CVV2 无效的CVV2安全码。
      1108 VAN Amount Limit Error 账户余额不足。
      1110 Trans Currency Not Allowed 交易币种不支持。
      1111 MCC Error MCC商户类别错误。
      1112 VAN credit limit greater than max Limit 卡片授权金额超出最高限额。
      1113 VAN credit limit less than min Limit 卡片授权金额低于最小限额。
      1114 Transaction Date before card activeDate 交易日期早于卡片有效期。
      1115 Transaction Date after card inactiveDate 交易日期晚于卡片失效日期。
      1116 Auth Amount greater than available VAN credit limit 授权金额超出卡片可用余额。
      1117 Auth Amount greater than available account credit limit 授权金额超出账户可用余额。
      1201 Authorization already in process, please wait until the last authorization completed 授权过于频繁。
      1203 Not support 3ds 卡不支持3DS交易。
      2222 Authorization decision reject 授权决策拒绝。
      2299 Authorization decision downgrade reject 授权决策降级后拒绝。
      9000 Unknow Error 未知的错误。
      授权响应码(6510 退款授权)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1101 Abnormal Customer Status 客户状态异常。
      1107 Invalid CVV2 无效的CVV2安全码。
      1110 Trans Currency Not Allowed 交易币种不支持。
      1111 MCC Error MCC商户类别错误。
      授权响应码(6930 消费授权冲正)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1101 Abnormal Customer Status 客户状态异常。
      1105 Invalid Expiry Date 无效的有效期。
      2001 Original Transaction Unmatch 未匹配到原始的授权交易(有冲正通知)。
      2002 Original Transaction Unmatch 未匹配到原始的授权交易(无冲正通知)。
      授权响应码(6940 退款授权冲正)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      2001 Original Transaction Unmatch 未匹配到原始的授权交易(有冲正通知)。
      2002 Original Transaction Unmatch 未匹配到原始的授权交易(无冲正通知)。
      授权响应码(6820 授权查询)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1102 Abnormal VAN Status 卡状态异常。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success",
        "cardLogId": "c55d99dac26bb334c07879404a93d2c6a96b42f7372f9c04d14034d019203fe4",
        "list": [
          {
            "txnId": "8f77bb77-84b1-4244-9ae6-b075ae1aeb88",
            "transactionID": "0216125935688468213457",
            "occurDateTime": "2022-02-02 18:49:35",
            "messageType": "6810",
            "messageTypeDescription": "Authorization Approval",
            "responseCode": "0000",
            "responseCodeDescription": "Authorization Approval",
            "approvalCode": "645597",
            "originalTransactionCurrency": "840",
            "originalTransactionAmount": 22.33,
            "cardTransactionCurrency": "840",
            "cardTransactionAmount": 22.33,
            "posMerchantID": "080000100003",
            "posMerchantName": "",
            "posMerchantClassCode": "0018",
            "posMerchantCountry": "",
            "posMerchantCity": "",
            "posAcquirerID": "213457"
          }
        ]
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27

      # SDK示例

      Java SDK
      public void testQueryAuthorization() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          QueryAuthTransactionRequest request = new QueryAuthTransactionRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
          request.setStartTime("2022-02-01");
          request.setEndTime("2022-03-01");
      
          QueryAuthTransactionResponse response = tripLinkApi.queryAuthTransaction(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      PHP SDK
      public function testQueryAuthorization(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new QueryAuthorizationRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
          $request->setStartTime('2022-02-01');
          $request->setEndTime('2022-03-01');
      
          $response = $tripLinkAgent->queryAuthorization($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 查询授权交易(推荐)

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      orderNo String N 订单号
      transactionStatus String N 交易状态 枚举值:1-交易成功 2-交易失败。
      transactionCode String N 交易类型 枚举值:6810-消费授权 6820-授权查询 6510-退款授权 6930-消费授权冲正 6940-退款授权冲正。
      transactionStartTime String N 起始时间 格式:yyyy-MM-dd HH:mm:ss
      transactionEndTime String N 截止时间 格式:yyyy-MM-dd HH:mm:ss
      pageNo Integer N 分页页码 取值范围[1,100],默认值为1
      pageSize Integer N 分页条数 取值范围[1,100],默认值为5
      请求体示例
      {
          "requestId":"7fb57ff0-ea70-4099-acf5-eacba55e18ef",
          "customerId":"CSR47284A93E35E4",
          "cardLogId":"c55d99dac26bb334c07879404a93d2c6a96b42f7372f9c04d14034d019203fe4",
          "transactionStartTime":"2022-10-01 00:00:00",
          "transactionEndTime":"2022-10-02 00:00:00",
          "pageNo":1,
          "pageSize":10
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      cardLogId String 卡ID TripLink专用卡标识。
      count Integer 交易数量 本次查询返回的交易数据量。
      more boolean 更多数据 是否还有更多的分页数据 true表示本次请求查询条件下有更多的分页数据。
      transactionData Array 授权交易 详见AuthTransactionDataDTO
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100007 NOT_FIND_CARD 卡不存在。
      9XXXXX (不固定) 系统错误。

      AuthTransactionDataDTO

      名称 类型 描述 备注
      requestId String 交易唯一ID 全局唯一。
      cardLogId String 卡ID TripLink专用卡标识。
      transactionId String 交易关联ID 授权交易与对应冲正交易的transactionID相同。
      orderNo String 订单号
      transactionCurrencyCode String 交易币种 ISO 4217货币编号,3位数字。
      transactionAmount Number 交易金额 小数,对应交易币种。
      cardCurrencyCode String 卡币种 ISO 4217货币编号,3位数字。
      cardTransactionAmount Number 卡交易金额 小数,对应卡币种。
      responseCode String 交易响应码 枚举值,4位数字,详见授权响应码下拉框。
      (非0000表示授权拒绝)
      responseDescription String 交易响应码描述 详见授权响应码下拉框。
      approvalCode String 授权码 随机6位数字。
      transactionCode String 交易类型 枚举值,4位数字,详见授权类型下拉框。
      transactionDate String 交易发生时间 格式yyyy-MM-dd HH:mm:ss
      merchantName String 商户名称
      mcc String 商户MCC ISO 18245商户类别,4位数字。
      merchantCountry String 商户所在国家
      merchantCity String 商户所在城市
      merchantId String 商户ID
      acquiringBankId String 收单行ID
      cardInitialBalance Number 卡片期初金额
      cardEndingBalance Number 卡片期末金额
      creditTransactionSign String 贷记交易标记 枚举值,1-贷记交易 0-借记交易
      reversalType String 是否为授权释放交易 授权类型69306940时该字段有意义。
      枚举值,0-授权释放交易 1-非授权释放交易
      授权类型
      messageType messageTypeDescription 描述 交易类别
      6810 Authorization Approval 消费授权 借记交易
      6510 Auth Refund Approval 退款授权 贷记交易
      6930 Authorization Reversal Approval 消费授权冲正 贷记交易
      6940 Auth Refund Reversal Approval 退款授权冲正 借记交易
      6820 Authorization Query 授权查询 借记交易
      授权响应码(6810 消费授权)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1101 Abnormal Customer Status 客户状态异常。
      1102 Abnormal VAN Status 卡状态异常。
      1103 Authorization Amount Error 授权金额错误。
      1104 VAN Amount Limit Error 账户余额不足。
      1105 Invalid Expiry Date 无效的有效期。
      1106 Transaction Count Over Limit 交易金额超过上限。
      1107 Invalid CVV2 无效的CVV2安全码。
      1108 VAN Amount Limit Error 账户余额不足。
      1110 Trans Currency Not Allowed 交易币种不支持。
      1111 MCC Error MCC商户类别错误。
      1112 VAN credit limit greater than max Limit 卡片授权金额超出最高限额。
      1113 VAN credit limit less than min Limit 卡片授权金额低于最小限额。
      1114 Transaction Date before card activeDate 交易日期早于卡片有效期。
      1115 Transaction Date after card inactiveDate 交易日期晚于卡片失效日期。
      1116 Auth Amount greater than available VAN credit limit 授权金额超出卡片可用余额。
      1117 Auth Amount greater than available account credit limit 授权金额超出账户可用余额。
      1201 Authorization already in process, please wait until the last authorization completed 授权过于频繁。
      1203 Not support 3ds 卡不支持3DS交易。
      2222 Authorization decision reject 授权决策拒绝。
      2299 Authorization decision downgrade reject 授权决策降级后拒绝。
      9000 Unknow Error 未知的错误。
      授权响应码(6510 退款授权)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1101 Abnormal Customer Status 客户状态异常。
      1107 Invalid CVV2 无效的CVV2安全码。
      1110 Trans Currency Not Allowed 交易币种不支持。
      1111 MCC Error MCC商户类别错误。
      授权响应码(6930 消费授权冲正)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1101 Abnormal Customer Status 客户状态异常。
      1105 Invalid Expiry Date 无效的有效期。
      2001 Original Transaction Unmatch 未匹配到原始的授权交易(有冲正通知)。
      2002 Original Transaction Unmatch 未匹配到原始的授权交易(无冲正通知)。
      授权响应码(6940 退款授权冲正)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      2001 Original Transaction Unmatch 未匹配到原始的授权交易(有冲正通知)。
      2002 Original Transaction Unmatch 未匹配到原始的授权交易(无冲正通知)。
      授权响应码(6820 授权查询)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      1002 High Risk Transaction 高风险的交易。
      1003 Invalid Account 无效账号。
      1102 Abnormal VAN Status 卡状态异常。
      授权响应码(6950 额度释放)
      responseCode responseCodeDescription 备注
      0000 Authorization Approval 授权成功。
      响应体示例
      {
          "returnCode":"000000",
          "errorMessage":"Success",
          "cardLogId":"3d70589dfe5c9a771c520d3382ad67af6a17389128b1c3d7968d33b3f62d0703",
          "count":1,
          "more":true,
          "transactionData":[
              {
                  "cardLogId":"3d70589dfe5c9a771c520d3382ad67af6a17389128b1c3d7968d33b3f62d0703",
                  "requestId":"63fe1c0b-9030-4d57-82c7-74eec6e4a450",
                  "transactionId":"0707110634049997213457",
                  "orderNo":"dingdan11",
                  "transactionCurrencyCode":"344",
                  "transactionAmount":1000,
                  "cardCurrencyCode":"840",
                  "cardTransactionAmount":127.44,
                  "responseCode":"0000",
                  "responseDescription":"Authorization Approval",
                  "approvalCode":"730704",
                  "transactionCode":"6810",
                  "transactionDate":"2022-07-07 19:06:34",
                  "merchantName":"ALIEXPRESS.COM",
                  "mcc":"0015",
                  "merchantCountry":"SGP",
                  "merchantCity":"Singapore",
                  "merchantId":"87846545546",
                  "acquiringBankId":"213457",
                  "creditTransactionSign":"0",
                  "reversalType":"0"
              }
          ]
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32

      # SDK示例

      Java SDK
      public void testQueryAuthorization() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          QueryAuthTransactionByPageRequest request = new QueryAuthTransactionByPageRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
          request.setTransactionStartTime("2022-10-01 00:00:00");
          request.setTransactionEndTime("2022-10-10 00:00:00");
      
          QueryAuthTransactionByPageResponse response = tripLinkApi.authTransactionQueryByPage(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      PHP SDK
      public function testQueryAuthorization(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new QueryAuthTransactionByPageRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
          $request->setStartTime('2022-10-01 00:00:00');
          $request->setEndTime('2022-10-10 00:00:00');
      
          $response = $tripLinkAgent->authTransactionQueryByPage($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 查询清算交易

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      cardLogId String Y 卡ID TripLink专用卡标识。
      startTime String Y 起始日期 格式yyyy-MM-dd
      endTime String Y 截止日期 格式yyyy-MM-dd
      请求体示例
      {
        "requestId": "9032aee1-85aa-41e8-bc46-7ff8bb36097d",
        "customerId": "CSR47284A93E35E4",
        "cardLogId": "c55d99dac26bb334c07879404a93d2c6a96b42f7372f9c04d14034d019203fe4",
        "startTime": "2022-02-01",
        "endTime": "2022-03-01"
      }
      
      1
      2
      3
      4
      5
      6
      7

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      cardLogId String 卡ID TripLink专用卡标识。
      list Array 清算交易 详见SettlementTransaction
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect 请求参数错误。
      100007 NOT_FIND_CARD 卡不存在。
      9XXXXX (不固定) 系统错误。

      SettlementTransaction

      名称 类型 描述 备注
      txnId String 交易唯一ID 全局唯一。
      occurDateTime String 交易发生时间 格式yyyy-MM-dd HH:mm:ss
      postingDateTime String 入账处理时间 格式yyyy-MM-dd HH:mm:ss
      postingSysTime String 入账系统时间 格式yyyy-MM-dd
      transactionCode String 交易类型 枚举值,4位数字,详见清算类型下拉框。
      transactionType String 交易类型描述 详见清算类型下拉框。
      approvalCode String 授权码 随机6位数字。
      isCredit String 借贷记 DEBT:借记,CRED:贷记。
      originalTransactionCurrency String 交易币种 ISO 4217货币编号,3位数字。
      originalTransactionAmount Number 交易金额 小数,对应交易币种。
      cardTransactionCurrency String 卡币种 ISO 4217货币编号,3位数字。
      cardTransactionAmount Number 卡交易金额 小数,对应卡币种。
      accountCurrency String 清算币种 ISO 4217货币编号,3位数字。
      billAccountAmount Number 清算金额 小数,对应账户币种。
      posMerchantID String 商户ID
      posMerchantName String 商户名称
      posMerchantClassCode String 商户MCC ISO 18245商户类别,4位数字。
      posMerchantCountry String 商户所在国家
      posMerchantCity String 商户所在城市
      posAcquirerID String 收单行ID
      transactionId String 交易关联ID 关联同笔交易的关联ID
      清算类型
      transactionCode transactionType 描述 借贷记 金额数值
      2010 Purchase 消费 DEBT
      2110 Refund 消费退款 CRED
      4060 Chargeback Release 争议释放 DEBT
      4160 Chargeback 消费争议 CRED
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success",
        "cardLogId": "c55d99dac26bb334c07879404a93d2c6a96b42f7372f9c04d14034d019203fe4",
        "list": [
          {
            "txnId": "ac06a617a4a5488e976dd5ee4f557289",
            "occurDateTime": "2022-02-03 11:24:44",
            "postingDateTime": "2022-02-03 11:24:44",
            "postingSysTime": "2022-02-03",
            "transactionCode": "2010",
            "transactionType": "Purchase",
            "approvalCode": "645597",
            "isCredit": "DEBT",
            "originalTransactionCurrency": "840",
            "originalTransactionAmount": 22.33,
            "cardTransactionCurrency": "840",
            "cardTransactionAmount": 22.33,
            "accountCurrency": "840",
            "billAccountAmount": 22.33,
            "posMerchantID": "080000100003",
            "posMerchantClassCode": "0018",
            "posAcquirerID": "213457"
          }
        ]
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26

      # SDK示例

      Java SDK
      public void testQuerySettlement() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          QuerySettlementTransactionRequest request = new QuerySettlementTransactionRequest();
          request.setRequestId(UUID.randomUUID().toString());
          request.setCustomerId(CUSTOMER_ID);
          request.setCardLogId(CARD_LOG_ID);
          request.setStartTime("2022-02-01");
          request.setEndTime("2022-03-01");
      
          QuerySettlementTransactionResponse response = tripLinkApi.querySettlementTransaction(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      PHP SDK
      public function testQuerySettlement(): void {
          $httpClient = new GuzzleHttpClient();
          $customer = new Customer(CUSTOMER_ID, AES_KEY, CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY);
          $tripLinkAgent = new SimpleTripLinkAgent(BASE_URL, $customer, $httpClient);
      
          $request = new QuerySettlementRequest(uniqid(), CUSTOMER_ID);
          $request->setCardLogId(CARD_LOG_ID);
          $request->setStartTime('2022-02-01');
          $request->setEndTime('2022-03-02');
      
          $response = $tripLinkAgent->querySettlement($request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 账户提现申请

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      paymentCurrency String Y 提现币种 ISO 4217货币编号,3位数字。
      paymentAmount Number Y 提现金额 小数,对应币种
      beneficiaryAccountNo String Y 收款人账号 收款账户须为已在TripLink备案的银行账户,如为新账户,请联系您的客户经理进行备案。
      beneficiaryAccountName String Y 收款人账户名称 收款账户须为已在TripLink备案的银行账户,如为新账户,请联系您的客户经理进行备案。
      beneficiaryBankName String Y 收款银行名称
      beneficiaryBankCountryCode String Y 收款人银行所在国家/地区代码 ISO 3166国家代码,2位字母
      reference String Y 附言 将随交易信息传递至收款银行,长度最好不多于140 ,仅允许英文、空格和部分特殊字符(, - ()./)
      clientOrderId String N 订单号
      请求体示例
      {
        "requestId": "9032aee1-85aa-41e8-bc46-7ff8bb36097d",
        "customerId": "CSR47284A93E35E4",
        "paymentCurrency": "840",
        "paymentAmount": "100.21",
        "beneficiaryAccountNo": "660010011001",
        "beneficiaryAccountName": "Trip company",
        "beneficiaryBankName": "JP Morgan",
        "beneficiaryBankCountryCode": "HK",
        "reference": "payment to xx",
        "clientOrderId": "13211000"
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      orderId String 交易订单号 TripLin返回的唯一订单号
      paymentCurrency String 提现币种 ISO 4217货币编号,3位数字
      paymentAmount Number 提现金额 小数,对应币种
      acceptTime String 受理时间 受理时间,格式要求yyyy-MM-dd HH:mm:ss
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect 请求参数错误。
      150016 RequestId is exists 请求ID已存在。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success",
        "orderId": "142303141346210898",
        "paymentCurrency": "840",
        "paymentAmount": "100.21",
        "acceptTime": "2023-03-14 12:00:00"
      }
      
      1
      2
      3
      4
      5
      6
      7
      8

      # SDK示例

      Java SDK
      public void testPayoutCreate() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
          PayoutCreateRequest request = new PayoutCreateRequest();
              request.setRequestId(String.valueOf(UUID.randomUUID()));
              request.setCustomerId("CSR2E54DC4B8A5D4");
              request.setPaymentCurrency("840");
              request.setPaymentAmount(new BigDecimal("100"));
              request.setBeneficiaryAccountNo("12321424");
              request.setBeneficiaryAccountName("trip company");
              request.setBeneficiaryBankName("bank name");
              request.setBeneficiaryBankCountryCode("HK");
              request.setReference("reference123");
              request.setClientOrderId("1234");
              PayoutCreateResponse response = tripLinkApi.payoutCreate(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      PHP SDK
      
      
      1

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 账户提现查询

      # 请求体

      名称 类型 必填 描述 备注
      requestId String Y 请求流水号 请求头
      customerId String Y 客户ID 请求头
      oriRequestId String Y 原始请求流水号
      请求体示例
      {
        "requestId": "9032aee1-85aa-41e8-bc46-7ff8bb36097d",
        "customerId": "CSR47284A93E35E4",
        "oriRequestId": "oriRequestId"
      }
      
      1
      2
      3
      4
      5

      # 响应体

      名称 类型 描述 备注
      returnCode String 结果码 枚举值,6位数字,详见结果码下拉框。
      (非000000表示请求处理失败)
      errorMessage String 结果码描述 详见结果码下拉框。
      orderId String 交易订单号 TripLin返回的唯一订单号
      status String 交易状态 当前交易的状态,1-处理中 2-已汇出 3-审核拒绝 4-汇款拒绝 5-汇款异常 6-已退票
      paymentCurrency String 提现币种 ISO 4217货币编号,3位数字。
      paymentAmount Number 提现金额 小数,对应币种
      beneficiaryAccountNo String 收款人账号
      beneficiaryAccountName String 收款人账户名称
      acceptTime String 受理时间 受理时间,格式要求yyyy-MM-dd HH:mm:ss
      clientOrderId String 客户订单号
      结果码
      returnCode errorMessage 备注
      000000 Success 成功。
      100000 Input parameter is incorrect 请求参数错误。
      150017 Order is not exists 订单不存在。
      9XXXXX (不固定) 系统错误。
      响应体示例
      {
        "returnCode": "000000",
        "errorMessage": "Success",
        "orderId": "142303141346210898",
        "status": 1,
        "paymentCurrency": "840",
        "paymentAmount": "100.21",
        "beneficiaryAccountNo": "1232112",
        "beneficiaryAccountName": "trip company",
        "acceptTime": "2023-03-14 12:00:00",
        "clientOrderId": "clientOrderId"
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12

      # SDK示例

      Java SDK
      public void testPayoutQuery() {
          HttpClient<CallHttpResponse> httpClient = new TripLinkHttpClient();
          TripLinkBizImplV2 tripLinkCore = new TripLinkBizImplV2(CUSTOMER_PRIVATE_KEY, TRIPLINK_PUBLIC_KEY, AES_KEY, BASE_URL, httpClient);
          TripLinkApiImplV2 tripLinkApi = new TripLinkApiImplV2(tripLinkCore);
      
              PayoutQueryRequest request = new PayoutQueryRequest();
              request.setRequestId(String.valueOf(UUID.randomUUID()));
              request.setCustomerId("CSR2E54DC4B8A5D4");
              request.setOriRequestId("1232124");
              PayoutQueryResponse response = tripLinkApi.payoutQuery(request);
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      PHP SDK
      
      
      1

      BASE_URL:API地址;CARD_LOG_ID:卡ID。

      CUSTOMER_ID:客户ID;CUSTOMER_PRIVATE_KEY:客户RSA私钥。

      AES_KEY:AES密钥;TRIPLINK_PUBLIC_KEY:TripLink RSA公钥。

      # 报表服务

      TripLink提供开卡报表,授权交易报表,结算交易报表等多种常见的报表数据。接入方可以选择通过邮件和SFTP的方式来接收这些报表数据。

      报表类型 报表周期 报表模板
      开卡报表 每天 CSR54188778E6E14_DailyOpenVANs_2021-07-27.csv
      授权交易报表 每天 CSR344D327079254_DailyVANsAuthReport_2021-07-27.csv
      结算交易报表 按结算周期 CSR2D1A41FF46354_DailyVANsSettlement_2021-07-27.csv
      争议交易报表 每月 CSRCD233F6AABBE4_MonthlyVANsNATChargebacks_2021-06-01.csv
      还款交易报表 每天 CSRE8C4A6EFE31C4_DailyVANsPMT_2021-07-27.csv
      资金明细报表 每天 CSR5369C27FEC174_DailyFinanceReport_2021-11-14.csv