# 客户端SDK
欢迎使用 TripLink SDK,源代码位于 GitHub (opens new window)。
TripLink SDK 让您更轻松方便地对接 TripLink API,自动进行:加密与解密数据,生成与验证签名,校验基本参数以及发送 HTTPS 请求。
在使用 TripLink SDK 之前,您需要参考 快速接入 完成准备工作,包括准备AES
密钥、RSA
公钥等。
# Java SDK
# 安装
最低版本要求:Java 6
推荐通过 Maven 来管理项目依赖,您只需在项目的pom.xml
文件中声明依赖 Vcc SDK Java (opens new window)(请保持版本为最新版):
<dependency>
<groupId>io.github.ctripcorp</groupId>
<artifactId>triplink-api</artifactId>
</dependency>
1
2
3
4
2
3
4
# 功能
TripLink Java SDK 支持您扩展自己的HTTPS请求和日志实现。
HTTPS 请求
TripLink Java SDK 的 HTTPS 请求默认使用 Java 原生方法。您也可以实现HttpClient
接口,重写post
方法。
public class CustomHttpClient implements HttpClient<CallHttpResponse> {
@Override
public CallHttpResponse post(String requestJson, String url, Map<String, String> header) {
// 自定义实现
}
}
1
2
3
4
5
6
2
3
4
5
6
如果需要配置代理可以使用支持代理的HttpClientTripLinkHttpProxyClient
。
public class TripLinkHttpProxyClientTest {
public void test() {
//proxy的bean
TripLinkHttpProxyClient client = new TripLinkHttpProxyClient(proxyHost,proxyHost);
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
日志实现
TripLink Java SDK For 遵循slf4j
日志标准,您可以根据自己应用选择具体的实现:
Logback
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
1
2
3
4
2
3
4
SLF4J Simple
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</dependency>
1
2
3
4
2
3
4
Log4j
<dependency>
<groupId>log4j</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 示例
在 API文档 里每个接口的SDK示例下,都有可直接运行的测试方法提供。
package com.ctrip.ccard.creditcard.vcc.api.demo;
import com.ctrip.ccard.creditcard.vcc.api.V2.TripLinkApiImplV2;
import com.ctrip.ccard.creditcard.vcc.bean.CallHttpResponse;
import com.ctrip.ccard.creditcard.vcc.bean.V2.CardCreateRequest;
import com.ctrip.ccard.creditcard.vcc.bean.V2.CardCreateResponse;
import com.ctrip.ccard.creditcard.vcc.biz.V2.TripLinkBizImplV2;
import com.ctrip.ccard.creditcard.vcc.exception.BusinessException;
import com.ctrip.ccard.creditcard.vcc.exception.HttpException;
import com.ctrip.ccard.creditcard.vcc.util.HttpClient;
import com.ctrip.ccard.creditcard.vcc.util.TripLinkHttpClient;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class TripLinkSDKTest {
// API地址
private static final String BASE_URL = "https://compass.uat.ctripqa.com/compass/api";
// 客户ID
private static final String CUSTOMER_ID = "CUSTOMER_ID";
// AES密钥
private static final String AES_KEY = "AES_KEY";
// 客户RSA私钥
private static final String CUSTOMER_PRIVATE_KEY = "CUSTOMER_PRIVATE_KEY";
// TripLink RSA公钥
private static final String TRIPLINK_PUBLIC_KEY = "TRIPLINK_PUBLIC_KEY";
@Test
public void testCreateCard() {
// 初始化TripLinkApi实例
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);
try {
// 发送请求
CardCreateResponse response = tripLinkApi.create(request);
} catch (HttpException e) {
// 处理HTTPS请求异常
} catch (BusinessException e) {
// 处理业务异常
}
}
}
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# PHP SDK
# 安装
最低版本要求:PHP 7.3
# 功能
TripLink Java SDK 支持您扩展自己的HTTPS请求
HTTPS 请求
TripLink PHP SDK 的 HTTPS 请求默认使用Guzzle
。您也可以自己实现HttpClient
接口,重写post
方法。
class CustomHttpClient implements HttpClient {
public function post(string $url, array $headers, string $body): HttpResponse {
// 自定义实现
}
}
1
2
3
4
5
2
3
4
5
# 示例
在 API文档 里每个接口的SDK示例下,都有可直接运行的测试方法提供。
<?php declare(strict_types=1);
namespace v2\demo;
use PHPUnit\Framework\TestCase;
use v2\agent\support\SimpleTripLinkAgent;
use v2\client\support\GuzzleHttpClient;
use v2\config\Customer;
use v2\exception\TripLinkException;
use v2\model\core\CreateCardRequest;
use v2\model\core\UserReference;
// API地址
const BASE_URL = 'https://compass.uat.ctripqa.com/compass/api';
// 客户ID
const CUSTOMER_ID = 'CUSTOMER_ID';
// AES密钥
const AES_KEY = 'AES_KEY';
// 客户RSA私钥
const CUSTOMER_PRIVATE_KEY = 'CUSTOMER_PRIVATE_KEY';
// TripLink RSA公钥
const TRIPLINK_PUBLIC_KEY = 'TRIPLINK_PUBLIC_KEY';
class TripLinkSDKTest extends TestCase {
public function testCreateCard(): void {
// 初始化TripLinkAgent实例
$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);
try {
// 发送请求
$response = $tripLinkAgent->createCard($request);
} catch (TripLinkException $e) {
// 处理业务异常
}
}
}
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
50
51
52
53
54
55
56
57
58
59
60
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
50
51
52
53
54
55
56
57
58
59
60