# API文档 2.0 (Current)
# 概览
TripLink API全部基于HTTPS协议,接入方需要按照API说明通过POST方法调用,详见API列表。
所有API的请求体和响应体都是JSON
格式,所有字符都使用UTF-8
编码。接入方需要加入请求头Content-Type: application/json
。
所有API的请求和响应都包含一些公共参数,分别位于请求头和响应头,详见公共参数。
所有API的请求和响应都进行了加密和签名,详见加密机制,签名机制。
环境 | 地址 |
---|---|
测试 | https://compass.uat.ctripqa.com/compass/api |
生产(海外) | https://compass.triplinkintl.com/compass/api |
注意
请直接使用域名地址访问,不要设置IP白名单。 compass.triplinkintl.com域名是部署在海外的,为了您们能更稳定的使用,我们建议贵司能测一下我们服务间的网速。如果网速存在较慢或不稳定情况我们建议贵司能配置下海外代理,加速请求。
# 公共参数
# 请求头
名称 | 必填 | 描述 | 备注 | 示例值 |
---|---|---|---|---|
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 | queryCustomerCredit |
查询授权交易 | POST | queryAuthTransactionByPage |
查询清算交易 | POST | settlementTransactionQuery |
发起账户提现 | POST | payoutCreate |
查询账户提现 | POST | payoutQuery |
查询汇率 | POST | fxQuote |
发起换汇订单 | POST | fxCreate |
查询换汇订单 | POST | fxQuery |
# 加密机制
为保证数据的安全性,TripLink会对每个请求和响应进行加密。
接入方与TripLink需使用对称加密算法AES/ECB/PKCS5Padding
,对请求体和响应体进行加密与解密,结果采用Base64
编码。
TripLink需要接入方提前提供128
位AES
密钥(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);
}
}
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);
}
}
2
3
4
5
6
7
8
9
10
11
12
# 签名机制
为保证API的安全调用,TripLink会对每个请求和响应通过签名进行身份验证。
接入方与TripLink需使用签名算法SHA256withRSA
,对请求待签字符串和响应待签字符串进行签名,签名结果采用Base64
编码,对应请求头和响应头的sign
字段。
接入方会提前收到TripLink为您分配的2048
位RSA
公钥T(Base64
编码格式),同时TripLink需要接入方提前提供2048
位RSA
公钥U(Base64
编码格式),参考准备工作。
整个请求与响应流程涉及2
对RSA
密钥:属于TripLink的公钥T与私钥T,属于接入方的公钥U与私钥U。公钥用于验证签名,私钥用于生成签名。
# 请求待签字符串
所有字段按如下顺序依次使用|
符号连接。
customerId|service|version|requestId|timestamp|payload
customerId
,service
,version
,requestId
和timestamp
来自请求头中对应字段。
payload
来自实际请求体中payload
字段。
接入方:对请求待签字符串先使用私钥U生成签名,再进行Base64
编码。结果作为请求头中sign
字段的值。
TripLink:对收到的请求头中sign
字段的值先进行Base64
解码,再使用公钥U验证签名。
# 响应待签字符串
所有字段按如下顺序依次使用|
符号连接。
customerId|service|version|requestId|timestamp|code|message|payload
customerId
,service
,version
,requestId
,timestamp
,code
和message
来自响应头中对应字段。
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(ENCODER.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);
}
}
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";
}
}
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 位数字。 |
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 。 |
allow3ds | Boolean | N | 是否接受3DS交易 | 默认true 。(仅香港万事达卡生效) |
cardProductCode | String | Y | 卡产品 | 枚举值,详见卡分类层次下拉框。 |
cardType | String | Y | 卡类型 | 枚举值,详见卡分类层次下拉框。 |
cardLabel | String | Y | 卡组织 | 枚举值,详见卡分类层次下拉框。 |
cardBin | String | N | 发卡机构识别号 | 可指定开卡卡BIN段,请联系TripLink提供。 |
quoteId | String | N | 汇率ID | 查询汇率 返回的汇率ID。 若有效则以此汇率兑换,若无效则以实时汇率兑换。 (仅卡产品为 C05 时生效) |
timeZone | string | N | 卡时区 | 卡生效与失效日期时区,格式举例: 中国标准时间 GMT+08:00 ,北美东部标准时间 GMT-05:00 。默认值可在商户系统/设置/全局参数处配置。 |
userReferenceMap | Object | N | 用户自定义字段 | String 键值对,共20 个键可选。范围 useRef1Txt -useRef20Txt 。 |
TripLink仅会保存和展示用户自定义字段,没有业务逻辑与此相关。
卡分类层次
名称 | 描述 | 备注 |
---|---|---|
cardProductCode | 卡产品 | 枚举值,C01 ;C02 ;C03 ;C04 ;C05 |
cardType | 卡类型 | 枚举值,详见卡分类层次详情下拉框。 |
cardLabel | 卡组织 | 枚举值,MasterCard ;VISA |
卡分类层次详情
卡产品 | 卡账户 | 发卡地区 | 卡类型 | 卡组织 |
---|---|---|---|---|
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 | 贷记 | 新加坡 | TAE ;B2B | 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,
"cardProductCode": "C02",
"cardBin":"522981",
"cardType": "GWTTP",
"cardLabel": "MasterCard",
"userReferenceMap": {
"useRef1Txt": "anything"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
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 与(supportedMid 或supportedAccquirerId )都为空。 |
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 | (不固定) | 发卡行请求参数错误。 |
201000 | Card available balance exceeds the maximum limit | 卡可用额度超过限额。 |
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"
}
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.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);
}
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
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->setCardBin('522981');
$request->setCardType('GWTTP');
$request->setCardLabel('MasterCard');
$userReference = new UserReference();
$userReference->setUseRef1Txt('anything');
$request->setUserReferenceMap($userReference);
$response = $tripLinkAgent->createCard($request);
}
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
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 | 是否允许非卡币种交易 | |
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
}
2
3
4
5
6
7
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
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 | (不固定) | 发卡行请求参数错误。 |
201000 | Card available balance exceeds the maximum limit | 卡可用额度超过限额。 |
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"
}
}
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);
CardUpdateResponse response = tripLinkApi.update(request);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
$response = $tripLinkAgent->updateCard($request);
}
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专用卡标识。 |
rechargeAmount | Number | Y | 充值金额 | 小数,对应卡币种。 |
请求体示例
{
"requestId": "9340c297-e8b8-4148-b0b7-3d8aa5fcb487",
"customerId": "CSR47284A93E35E4",
"cardLogId": "9261267e66b808e9a2f62fe54e516192677236b943aa2dee1836284b369768d7",
"rechargeAmount": 100.12
}
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 | 卡已注销。 |
201000 | Card available balance exceeds the maximum limit | 卡可用额度超过限额。 |
300003 | Call JPM gateway error | 发卡行返回错误。 |
300004 | mcc link channel group is empty | 发卡行MCC组为空。 |
9XXXXX | (不固定) | 系统错误。 |
响应体示例
{
"returnCode": "000000",
"errorMessage": "Success"
}
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);
}
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);
}
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
}
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"
}
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);
}
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);
}
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"
}
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"
}
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);
}
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);
}
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"
}
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"
}
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);
}
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);
}
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"
}
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"
}
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);
}
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);
}
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"
}
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 | 是否允许非卡币种交易 | |
allow3ds | Boolean | 是否接受3DS交易 | 仅香港万事达卡生效 |
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 | 卡组织 | 枚举值,范围MasterCard ,VISA 。 |
cardType | String | 卡类型 | 枚举值,范围GWTTP ,MCO ,USDVCC 等。 |
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,
"allow3ds": 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"
}
}
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);
}
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);
}
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 | 同请求头。 |
请求体示例
{
"requestId": "3ddf14f6-04b0-4a66-840b-a21cf0c148ee",
"customerId": "CSR47284A93E35E4"
}
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
}
]
}
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);
}
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);
}
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专用卡标识。 |
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 | Number | N | 分页页码 | 整数,取值范围[1,100] ,默认值为1 。 |
pageSize | Number | N | 分页条数 | 整数,取值范围[1,100] ,默认值为5 。 |
请求体示例
{
"requestId":"7fb57ff0-ea70-4099-acf5-eacba55e18ef",
"customerId":"CSR47284A93E35E4",
"cardLogId":"c55d99dac26bb334c07879404a93d2c6a96b42f7372f9c04d14034d019203fe4",
"transactionStartTime":"2022-10-01 03:00:00",
"transactionEndTime":"2022-10-02 04:00:00",
"pageNo":1,
"pageSize":10
}
2
3
4
5
6
7
8
9
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
returnCode | String | 结果码 | 枚举值,6 位数字,详见结果码下拉框。(非 000000 表示请求处理失败) |
errorMessage | String | 结果码描述 | 详见结果码下拉框。 |
cardLogId | String | 卡ID | TripLink专用卡标识。 |
count | Number | 交易数量 | 整数,本次查询返回的交易数据量。 |
more | Boolean | 更多数据 | 是否还有更多的分页数据 true 表示本次请求查询条件下有更多的分页数据。 |
transactionData | Array | 授权交易 | 详见AuthTransaction 。 |
结果码
returnCode | errorMessage | 备注 |
---|---|---|
000000 | Success | 成功。 |
100007 | NOT_FIND_CARD | 卡不存在。 |
9XXXXX | (不固定) | 系统错误。 |
AuthTransaction
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
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 。 |
localTime | String | 交易发生本地时间 | 格式yyyy-MM-dd HH:mm:ss 。 |
merchantName | String | 商户名称 | |
mcc | String | 商户MCC | ISO 18245 商户类别,4 位数字。 |
merchantCountry | String | 商户所在国家 | (未标准化) |
isoMerchantCountryCode | String | 商户所在国家 | ISO 3166 国家代码,3 位字母。(可能为空值) |
merchantCity | String | 商户所在城市 | |
merchantId | String | 商户ID | |
acquiringBankId | String | 收单行ID | |
cardInitialBalance | Number | 卡片期初金额 | |
cardEndingBalance | Number | 卡片期末金额 | |
creditTransactionSign | String | 贷记交易标记 | 枚举值,1 -贷记交易 0 -借记交易 |
reversalType | String | 是否为授权释放交易 | 仅授权类型为6930 或6940 时该字段有意义。枚举值, 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 | Card canceled | 卡片已注销。 |
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 | 授权金额超出账户可用余额。 |
1118 | Limited usage with abnormal card status | 卡片状态异常暂不可用。 |
1201 | Authorization already in process, please wait until the last authorization completed | 授权过于频繁。 |
1203 | Not support 3ds | 卡不支持3DS交易。 |
2012 | Cardholder cancels identity verification | 持卡人取消身份验证。 |
2014 | Cardholder fails to complete identity verification within the specified time | 持卡人未能在规定时间内完成身份验证。 |
2019 | Cardholder fails to complete identity verification within the specified number of attempts | 持卡人未能在规定的尝试次数内完成身份验证。 |
2022 | Merchant requests invalid information | 商户请求信息不合法。 |
2222 | Authorization decision reject | 授权决策拒绝。 |
2299 | Authorization decision downgrade reject | 授权决策降级后拒绝。 |
3004 | Abnormal Card Scheme Network | 卡组网络异常。 |
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 | Card canceled | 卡片已注销。 |
1118 | Limited usage with abnormal card status | 卡片状态异常暂不可用。 |
响应体示例
{
"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",
"localTime":"2022-07-07 13:06:34",
"merchantName":"ALIEXPRESS.COM",
"mcc":"0015",
"merchantCountry":"SGP",
"merchantCity":"Singapore",
"merchantId":"87846545546",
"acquiringBankId":"213457",
"creditTransactionSign":"0",
"reversalType":"0"
}
]
}
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
# SDK示例
Java SDK
public void testQueryAuthorizationByPage() {
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 03:00:00");
request.setTransactionEndTime("2022-10-10 04:00:00");
QueryAuthTransactionByPageResponse response = tripLinkApi.authTransactionQueryByPage(request);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
PHP SDK
public function testQueryAuthorizationByPage(): 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 03:00:00');
$request->setEndTime('2022-10-10 04:00:00');
$response = $tripLinkAgent->authTransactionQueryByPage($request);
}
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专用卡标识。 |
settlementStartTime | String | Y | 起始日期 | 格式yyyy-MM-dd HH:mm:ss 。 |
settlementEndTime | String | Y | 截止日期 | 格式yyyy-MM-dd HH:mm:ss 。 |
pageNo | Number | N | 分页页码 | 整数,取值范围[1,100] ,默认值为1 。 |
pageSize | Number | N | 分页条数 | 整数,取值范围[1,100] ,默认值为5 。 |
请求体示例
{
"requestId": "9032aee1-85aa-41e8-bc46-7ff8bb36097d",
"customerId": "CSR47284A93E35E4",
"cardLogId": "c55d99dac26bb334c07879404a93d2c6a96b42f7372f9c04d14034d019203fe4",
"settlementStartTime": "2022-02-01 03:00:00",
"settlementEndTime": "2022-03-01 04:00:00"
}
2
3
4
5
6
7
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
returnCode | String | 结果码 | 枚举值,6 位数字,详见结果码下拉框。(非 000000 表示请求处理失败) |
errorMessage | String | 结果码描述 | 详见结果码下拉框。 |
cardLogId | String | 卡ID | TripLink专用卡标识。 |
count | Number | 交易数量 | 整数,本次查询返回的交易数据量。 |
more | Boolean | 更多数据 | 是否还有更多的分页数据 true 表示本次请求查询条件下有更多的分页数据。 |
settlementData | Array | 清算交易 | 详见SettlementTransaction 。 |
结果码
returnCode | errorMessage | 备注 |
---|---|---|
000000 | Success | 成功。 |
100000 | Input parameter is incorrect | 请求参数错误。 |
100007 | NOT_FIND_CARD | 卡不存在。 |
9XXXXX | (不固定) | 系统错误。 |
SettlementTransaction
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
serialNo | 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 | 商户所在国家 | (未标准化) |
isoMerchantCountryCode | String | 商户所在国家 | ISO 3166 国家代码,3 位字母。(可能为空值) |
posMerchantCity | String | 商户所在城市 | |
posAcquirerID | String | 收单行ID | |
transactionId | String | 交易关联ID | 关联同笔交易的关联ID |
清算类型
transactionCode | transactionType | 描述 | 借贷记 | 金额数值 |
---|---|---|---|---|
2010 | Purchase | 消费 | DEBT | 正 |
2110 | Refund | 消费退款 | CRED | 负 |
4060 | Chargeback Release | 争议释放 | DEBT | 正 |
4160 | Chargeback | 消费争议 | CRED | 负 |
响应体示例
# SDK示例
Java SDK
PHP SDK
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 | 收款账户名称 | |
beneficiaryBankName | String | Y | 收款银行名称 | |
beneficiaryBankCountryCode | String | Y | 收款银行所在国家 | ISO 3166 国家代码,2 位字母。 |
reference | String | Y | 附言 | 将直接传递给收款银行,长度不多于90 字符。 仅允许英文,数字,空格和部分特殊字符 , - ()./ |
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"
}
2
3
4
5
6
7
8
9
10
11
12
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
returnCode | String | 结果码 | 枚举值,6 位数字,详见结果码下拉框。(非 000000 表示请求处理失败) |
errorMessage | String | 结果码描述 | 详见结果码下拉框。 |
orderId | String | 订单号 | 全局唯一。 |
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"
}
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(UUID.randomUUID().toString());
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("f334f967102d");
PayoutCreateResponse response = tripLinkApi.payoutCreate(request);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PHP SDK
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": "68519520-66ef-404d-82cc-fa34f967002d",
"customerId": "CSR47284A93E35E4",
"oriRequestId": "9032aee1-85aa-41e8-bc46-7ff8bb36097d"
}
2
3
4
5
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
returnCode | String | 结果码 | 枚举值,6 位数字,详见结果码下拉框。(非 000000 表示请求处理失败) |
errorMessage | String | 结果码描述 | 详见结果码下拉框。 |
orderId | String | 订单号 | 全局唯一。 |
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"
}
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(UUID.randomUUID().toString());
request.setCustomerId("CSR2E54DC4B8A5D4");
request.setOriRequestId("9032aee1-85aa-41e8-bc46-7ff8bb36097d");
PayoutQueryResponse response = tripLinkApi.payoutQuery(request);
}
2
3
4
5
6
7
8
9
10
11
12
PHP SDK
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
}
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:ss (时区 UTC+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"
}
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);
}
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);
}
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 | 同请求头。 |
sellCurrency | String | Y | 卖出币种 | ISO 4217 货币编号,3 位数字。 |
buyCurrency | String | Y | 买入币种 | ISO 4217 货币编号,3 位数字。 |
fxDirection | Number | Y | 交易方向 | 0 :指定卖出,此时fxAmount 为卖出金额;1 :指定买入,此时fxAmount 为买入金额。 |
fxAmount | Number | Y | 交易金额 | 对应交易币种。 |
quoteId | String | N | 汇率ID | 查询汇率 返回的汇率ID。 若不传,则以实时汇率成交。 |
请求体示例
{
"requestId": "9032aee1-85aa-41e8-bc46-7ff8bb36097d",
"customerId": "CSR32384FAC033D4",
"sellCurrency": "840",
"buyCurrency": "157",
"fxDirection": "0",
"fxAmount": "200.99"
}
2
3
4
5
6
7
8
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
returnCode | String | 结果码 | 枚举值,6 位数字,详见结果码下拉框。(非 000000 表示请求处理失败) |
errorMessage | String | 结果码描述 | 详见结果码下拉框。 |
orderId | String | 交易订单号 | TripLink返回的唯一订单号。 |
acceptTime | String | 受理时间 | 格式yyyy-MM-dd HH:mm:ss 。 |
sellCurrency | String | 卖出币种 | ISO 4217 货币编号,3 位数字。 |
sellAmount | Number | 卖出金额 | 对应卖出币种。 |
buyCurrency | String | 买入币种 | ISO 4217 货币编号,3 位数字。 |
buyAmount | Number | 买入金额 | 对应买入币种。 |
rate | Number | 汇率 | 小数。 |
quoteId | String | 汇率ID |
结果码
returnCode | errorMessage | 备注 |
---|---|---|
000000 | Success | 成功。 |
100000 | Input parameter is incorrect | 请求参数错误。 |
100006 | No rate | 汇率不存在。 |
100010 | account currency not enough | 账户余额不足。 |
100017 | customer product is not support | 产品不支持。 |
120034 | RequestId is exists | 请求id已存在。 |
120035 | Fx info not match quote info | 换汇信息与询价信息不匹配。 |
120037 | The exchange amount is not within the limit | 换汇金额不在限制范围内。 |
9XXXXX | (不固定) | 系统错误。 |
响应体示例
{
"returnCode": "000000",
"errorMessage": "Success",
"orderId": "646873e2-4d3f-486b-83af-e6a0bc6d464c",
"acceptTime": "2024-01-08 14:38:17",
"sellCurrency": "840",
"sellAmount": "28.08",
"buyCurrency": "157",
"buyAmount": "200.99",
"rate": "7.15711345",
"quoteId": "ff36346e5c5c4562af194ba44165d759"
}
2
3
4
5
6
7
8
9
10
11
12
# SDK示例
Java SDK
public void testFxCreate() {
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);
FxCreateRequest request = new FxCreateRequest();
request.setRequestId(String.valueOf(UUID.randomUUID()));
request.setCustomerId("CSR2E54DC4B8A5D4");
request.setSellCurrency("840");
request.setBuyCurrency("344");
request.setFxDirection(0);
request.setFxAmount(new BigDecimal("100.03"));
FxCreateResponse response = tripLinkApi.fxCreate(request);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PHP SDK
public function testFxCreate(): 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 FxCreateRequest(uniqid(), CUSTOMER_ID);
$request->setSellCurrency('840');
$request->setBuyCurrency('157');
$request->setFxDirection(0);
$request->setFxAmount(2.98);
$request->setQuoteId('');
$response = $tripLinkAgent->fxCreate($request);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
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 | 同请求头。 |
oriRequestId | String | N | 原始请求流水号 | oriRequestId 与 orderId 其中一者必填。 |
orderId | String | N | 订单号 | oriRequestId 与 orderId 其中一者必填。 |
请求体示例
{
"requestId": "2024010800000001",
"customerId": "CSR32384FAC033D4",
"oriRequestId": "9032aee1-85aa-41e8-bc46-7ff8bb360976"
}
2
3
4
5
# 响应体
名称 | 类型 | 描述 | 备注 |
---|---|---|---|
returnCode | String | 结果码 | 枚举值,6 位数字,详见结果码下拉框。(非 000000 表示请求处理失败) |
errorMessage | String | 结果码描述 | 详见结果码下拉框。 |
orderId | String | 交易订单号 | TripLink返回的唯一订单号。 |
status | Number | 状态 | 0 :创建中,1 :成功,2 :失败。 |
acceptTime | String | 受理时间 | 格式yyyy-MM-dd HH:mm:ss 。 |
sellCurrency | String | 卖出币种 | ISO 4217 货币编号,3 位数字。 |
sellAmount | Number | 卖出金额 | 对应卖出币种。 |
buyCurrency | String | 买入币种 | ISO 4217 货币编号,3 位数字。 |
buyAmount | Number | 买入金额 | 对应买入币种。 |
rate | Number | 汇率 | 小数。 |
quoteId | String | 汇率ID |
结果码
returnCode | errorMessage | 备注 |
---|---|---|
000000 | Success | 成功。 |
100000 | Input parameter is incorrect | 请求参数错误。 |
120036 | Fx order not found | 换汇订单不存在。 |
9XXXXX | (不固定) | 系统错误。 |
响应体示例
{
"returnCode": "000000",
"errorMessage": "Success",
"orderId": "f1f0dded-a130-4bc9-be08-0d9cc9072dc4",
"status": 1,
"acceptTime": "2024-01-08 14:39:31",
"sellCurrency":"840",
"sellAmount":200.99,
"buyCurrency":"157",
"buyAmount":1438.51,
"rate":7.15711345,
"quoteId":"94eae20cbbc54c7e89c502a653ce41bc"
}
2
3
4
5
6
7
8
9
10
11
12
13
# SDK示例
Java SDK
public void testFxQuery() {
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);
FxQueryRequest request = new FxQueryRequest();
request.setRequestId(String.valueOf(UUID.randomUUID()));
request.setCustomerId("CSR2E54DC4B8A5D4");
request.setOriRequestId("testRequest1");
FxQueryResponse response = tripLinkApi.fxQuery(request);
}
2
3
4
5
6
7
8
9
10
11
12
PHP SDK
public function testFxQuery(): 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 FxQueryRequest(uniqid(), CUSTOMER_ID);
$request->setOrderId('27f4b30b-3ddc-4736-8c9d-a35d3e73cae7');
$response = $tripLinkAgent->fxQuery($request);
}
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公钥。
# 报表服务
# 报表分类
TripLink向客户提供多种维度报表,每种报表位于SFTP路径/production/report/类型
下(具体路径请联系 TripLink 商务团队确认),接入方可以选择需要的类型与周期。
名称 | 类型 | 周期 | 文件名格式 |
---|---|---|---|
结算报表 | SETTLEMENT_REPORT | 每日 每周 每月 | ST001_2023-02-02.csv ST010_2023-02-06.csv ST100_2023-02-01.csv |
周期结算报表 | CYCLE_SETTLEMENT_REPORT | 账期 | CST001_2023-02-01.csv |
账单报表 | BILL_REPORT | 账期 | SS001_2023-02-01.csv |
授权交易报表 | AUTHORIZATION_REPORT | 每天 | VA001_2023-02-01.csv |
开卡报表 | CARD_ISSUED_REPORT | 每天 | OV001_2023-02-01.csv |
还款报表 | REPAY_REPORT | 每天 | VPMT001_2023-02-01.csv |
争议报表 | CHARGEBACK_REPORT | 每月 | NATC100_2023-02-01.csv |
vcc充值报表 | VCC_CHARGE_REPORT | 每天 | TUP001_2023-02-01.csv |
授权计费报表 | AUTH_FEE_REPORT | 每天 | AF001_2023-02-01.csv |
资金明细报表 | FUNDS_DETAIL_REPORT | 每天 | FU001_2023-02-01.csv |
实时换汇授权报表 | EXCHANGE_REPORT | 每天 | RFX001_2023-02-01.csv |
奖励金报表 | REBATE_REPORT | 每月 | RB100_2023-02-01.csv |
# 报表触发方式
1.客户在TripLink的客户端中的报表服务菜单下,主动发起报表请求
2.系统根据客户的报表配置主动发起
# 报表送达方式
1.portal下载:客户在TripLink客户端主动发起的报表,文件生成后,可直接在客户端下载。
2.邮件推送:文件生成后向客户配置的接收邮箱中发送一份邮件,附件就是生成后的文件(邮件送达方式有附件的大小限制,当文件大于15M时,邮件方式无法送达,建议客户改接SFTP)。
3.SFTP推送:文件生成后,向客户目录下投递文件,格式为:/production/report/ + 报表类型 + /+ 具体文件名。例如:客户A配置了开卡报表,那么在文件生成后,会投递到该客户的文件服务器上,路径为:/production/report/CARD_ISSUED_REPORT/OV001_2022-06-15.csv。
# 报表表头说明
1.结算报表表头(含周期结算报表)
表头字段 | 字段类型 | 字段含义 |
---|---|---|
VANhistoryID | String | 结算记录唯一标识 |
CardlogID | String | 卡记录ID,加密后的卡号 |
ProductCode | String | 卡类型,卡的产品代码 |
TransID | String | 卡记录号(卡短号) |
ActivityType | String | 交易类型,Refund --退款,Purchase --消费,Rebate -奖励金,Chargeback -争议,ChargebackFee -争议手续费 |
IssuedToECN | String | 客户号 |
VAN | String | 卡号 |
TransDate | String | 入账日期,切日前, 格式 yyyy-MM-dd |
TransTime | String | 入账时间,清算完成时间, 格式yyyy-MM-dd HH:mm:ss |
TransCurr | String | 入账币种,卡入账币种, 如USD ,EUR ,HKD |
TransAmt | String | 入账金额,卡入账金额(交易金额转为卡本币的金额) |
POSAmt | String | 交易金额 |
POSCurr | String | 交易币种 |
ReconciliationAmount | String | 清算金额 |
ReconciliationCurrency | String | 清算币种 |
RequestedDate | String | 发卡日期, 格式yyyy-MM-dd |
RequestedTime | String | 发卡时间, 格式yyyy-MM-dd HH:mm:ss |
LocalTime | String | 交易时间(交易当地时间), 格式yyyy-MM-dd HH:mm:ss |
AuthTime | String | 授权时间 |
MinAmt | String | 卡最小授权金额 |
VANAmt | String | 开卡总金额 |
MaxAmt | String | 卡最大授权金额 |
ActivationDate | String | 卡可交易日期, 格式yyyy-MM-dd |
AuthAmt | String | 授权金额 |
AuthCurr | String | 授权币种 |
AuthCode | String | 授权码 |
ValidUntil | String | 卡失效日期 |
MerchID | String | MID,商户ID |
MerchCategoryCode | String | MCC, 商户MCC |
MerchCategoryName | String | MCC名称, 商户MCC名称 |
MerchName | String | 商户名 |
MerchAddress | String | 商户地址 |
MerchCity | String | 商户城市 |
MerchState | String | 商户州 |
MerchPostCode | String | 商户邮编 |
MerchCountry | String | 商户国家 |
CrossBoardType | String | 跨境类型, international -国际, domestic -国内 |
UserReference1 | String | 预留域1 |
UserReference2 | String | 预留域2 |
UserReference3 | String | 预留域3 |
UserReference4 | String | 预留域4 |
UserReference5 | String | 预留域5 |
UserReference6 | String | 预留域6 |
UserReference7 | String | 预留域7 |
UserReference8 | String | 预留域8 |
NatOrNot | String | 是否是Nat交易, yes -是 , no -否 |
OrderId | String | 交易的唯一id, 同授权报表OrderId |
2.授权交易报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
CardlogID | String | 卡记录ID,加密的卡号 |
ProductCode | String | 卡类型 |
TransID | String | 卡记录号(卡短号) |
Status | String | 卡状态 |
IssuedToECN | String | 客户号 |
CardType | String | 卡片类型 |
MerchantCategory | String | 商户类别 |
VAN | String | 卡号 |
TransactionProfileCode | String | 交易码, 6810 -消费授权,6510 -退款授权,6930 -消费授权冲正,6940 -退款授权冲正,6820 -授权查询 |
TransactionProfileType | String | 交易类型,Authorization (Purchase) -消费授权,Authorization (Refund) -退款授权,Authorization Reversal (Purchase) -消费授权冲正,Authorization Reversal (Refund) -退款授权冲正,Authorization Query -授权查询 |
RequestedTime | String | 发卡时间,格式yyyy-MM-dd HH:mm:ss |
ActivationDate | String | 可交易日期,格式yyyy-MM-dd |
ExpiryDate | String | 有效期, 格式yyyy-MM-dd |
VANCurrency | String | 开卡币种 |
MinAmt | String | 最小交易金额 |
MaxAmt | String | 最大交易金额 |
AvailableBalance | String | 剩余额度 |
AuthCount | String | 授权次数 |
VANMode | String | 单次/多次卡, Singleuse -单次卡,Multiuse -多次卡 |
VANhistoryID | String | 授权流水号 |
AuthStatus | String | 授权状态,success -成功,failure -失败 |
MsgType | String | 消息类型 |
AuthCode | String | 授权码 |
TransTime | String | UTC8时间,格式yyyy-MM-dd HH:mm:ss |
POSCurr | String | 刷卡币种 |
POSAmt | String | 刷卡金额 |
MerchID | String | MID |
MerchantName | String | 商户名称 |
MerchantCity | String | 商户城市 |
MerchantCountry | String | 商户国家 |
CrossBoardType | String | 跨境类型, international -国际, domestic -国内 |
MerchCategoryCode | String | MCC |
MerchCategoryName | String | MCC名称 |
UserReference1 | String | 预留域1 |
UserReference2 | String | 预留域2 |
UserReference3 | String | 预留域3 |
UserReference4 | String | 预留域4 |
UserReference5 | String | 预留域5 |
UserReference6 | String | 预留域6 |
UserReference7 | String | 预留域7 |
UserReference8 | String | 预留域8 |
Notes | String | N/A, 一般为空 |
OrderId | String | 交易id, |
3.开卡报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
VAN | String | 卡号 |
CardlogID | String | 加密卡号 |
ProductCode | String | 卡类型 |
TransID | String | 卡记录号(卡短号) |
RequestedDate | String | 申卡日期,格式 yyyy-MM-dd |
RequestedTime | String | 申卡时间, 格式yyyy-MM-dd HH:mm:ss |
VANCurrency | String | 开卡币种 |
VANAmt | String | 开卡额度 |
SettlementCurrency | String | 结算币种 |
ActivationDate | String | 可交易日期, 格式yyyy-MM-dd |
ExpiryDate | String | 有效期, 格式yyyy-MM-dd |
VANMode | String | 卡片模式,Singleuse -单次卡,Multiuse -多次卡 |
CloseRatio | String | 关卡百分比 |
MinAuthAmt | String | 最小授权金额 |
MaxAuthAmt | String | 最大授权金额 |
BookingNumber | String | 订单号 |
UserName | String | 开卡用户 |
4.还款报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
VANhistoryID | String | 交易明细ID |
IssuedToECN | String | 客户ID |
Account | String | 账户类型 |
ActivityType | String | 还款 |
PMTAmount | String | 还款金额 |
PMTCurrency | String | 还款币种 |
TransDate | String | 还款日期 |
TransTime | String | 还款时间 |
5.争议报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
ECN | String | 客户ID |
TransID | String | 卡记录号(卡短号) |
CardlogID | String | 卡记录id |
ProductCode | String | 卡类型 |
NATID | String | N/A, 一般为空 |
MerchantName/Location/MC | String | MCC |
VAN | String | 卡号 |
Amount | String | 金额 |
VANCurrency | String | 卡币种 |
NetSettled | String | 清算金额 |
SettlementCurrency | String | 清算币种 |
PosAmount | String | 交易金额 |
PosCurrency | String | 交易币种 |
VANAvailableBalance | String | 卡余额 |
VANIssuedDate | String | 开卡日期, 格式yyyy-MM-dd |
1stPresentmentDate | String | 首次请款日期, 格式yyyy-MM-dd |
ActionType | String | 交易类型, Chargeback in transit -争议中, Small Balance advances -小额垫付,Chargeback Release to Ctrip -争议释放给triplink,Chargeback Release to BU -争议释放给客户 |
ActionDate | String | 日期, 格式yyyy-MM-dd |
TransTime | String | 时间,格式yyyy-MM-dd HH:mm:ss |
ActionBy | String | UID |
ChargebackReason | String | N/A,一般是为空 |
Notes/Justification | String | N/A, 一般是为空 |
DocumentationFee | String | N/A, 一般是为空 |
MasterCardDocumentationFee | String | N/A,一般是为空 |
MasterCardDocumentationFee | String | N/A,一般是为空 |
6.vcc充值报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
Date | String | 日期, 格式yyyy-MM-dd |
ClientID | String | 客户ID |
ClientName | String | 客户名称 |
Top_up_Amount | String | 充值金额 |
Top_up_Currency | String | 充值币种 |
7.授权计费报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
Date | String | 日期,格式yyyy-MM-dd |
ClientID | String | 客户ID |
ClientName | String | 客户名称 |
Auth_Fee | String | 授权费用 |
Auth_Fee_Curr | String | 授权费用币种 |
CardlogID | String | 卡id |
ProductCode | String | 产品code |
TransID | String | 交易id |
VAN | String | 卡号 |
TransactionProfileCode | String | 授权码 |
TransactionProfileType | String | 授权类型 |
AuthStatus | String | 授权状态 |
MsgType | String | MSG |
AuthCode | String | 授权code |
TransTime | String | 授权时间 |
POSCurr | String | 授权币种 |
POSAmt | String | 授权金额 |
8.资金明细报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
Customer_id | String | 客户id |
Event_time | String | 变动时间, 格式yyyy-MM-dd HH:mm:ss |
ActivityType | String | 交易类型 |
VANhistoryID | String | 流水号, 唯一的 |
OrderID | String | 交易号 |
SettlementState | String | 是否清算 |
TransactionCurrency | String | 交易币种 |
TransactionAmount | String | 交易金额 |
CardlogId | String | 加密卡号 |
VAN | String | 卡号 |
Currency | String | 币种 |
Amount | String | 金额 |
BeginBalanceAmount | String | 期初金额 |
EndBalanceAmount | String | 期末金额 |
AuthCode | String | 授权码 |
9.实时换汇授权报表表头
表头字段 | 字段类型 | 字段含义 |
---|---|---|
CustomerId | String | 客户号 |
CardlogID | String | 加密卡号 |
VAN | String | 卡号 |
AuthCode | String | 授权码 |
TransTime | String | 授权时间, 格式yyyy-MM-dd |
POSCurr | String | 授权币种 |
POSAmt | String | 授权金额 |
QuotaId | String | 查询汇率id |
QuotaIdRate | String | 查询汇率 |
FXTime | String | 换汇时间, 格式yyyy-MM-dd HH:mm:ss |
BuyCurr | String | 买入币种 |
BuyAmt | String | 买入金额 |
SellCurr | String | 卖出币种 |
SellAmt | String | 卖出金额 |
Rate | String | 汇率(实际成交) |
10.奖励金报表
表头字段 | 字段类型 | 字段含义 |
---|---|---|
CardlogID | String | 加密卡号 |
orderid | String | 订单号 |
TransID | String | 记录ID |
ActivityType | String | 交易类型 |
VAN | String | 卡号 |
TransDate | String | 入账日期, 格式yyyy-MM-dd |
TransTime | String | 入账时间, 格式yyyy-MM-dd HH:mm:ss |
ReconciliationCurrency | String | 结算币种 |
ReconciliationAmount | String | 结算金额 |
product_code | String | 卡类型 |
crossboard_type | String | 跨境类型, international -国际, domestic -国内 |
commission_rate | String | 返点率 |
commission_mcc_group | String | mcc组 |
channel | String | 渠道 |
MerchName | String | 商户名称 |