IntPay JAVA SDK
IntPay 官方 JAVA SDK,用于快速接入 IntPay 支付网关。
该 SDK 提供完整的服务端能力,帮助商户安全、高效地完成支付接入。
🚀 功能特点
- 内置接口一键对接
- POST 请求签名
- 响应验签
- Webhook 异步通知验签
- ReturnUrl GET 签名与验签
- 可直接运行的 Demo
🚀 接口列表
POST /payment/payments/iframeUrl(初始化)POST /payment/payments(支付接口)POST /payment/payments/WP26033148138(查询接口)
下载地址
https://developer.links-pay.com/sdk/linkpay-java-sdk.zip
1. 环境要求
- JDK 1.8+
- Maven
2. 安装依赖
发布到私有仓库或 Maven Central 后:
xml
<dependency>
<groupId>com.linkpay</groupId>
<artifactId>linkpay-java-sdk</artifactId>
<version>1.0.0</version>
</dependency>本地构建:
bash
mvn clean package -DskipTests3. 初始化客户端
java
LinkPayConfig config = LinkPayConfig.builder()
.baseUrl("https://api.links-pay.com")
.tenantId("YOUR_TENANT_ID")
.signKey("YOUR_MD5_SECRET_KEY")
.timeoutMs(60000)
.verifyResponseSignature(true)
.build();
LinkPayClient client = new LinkPayClient(config);4. 接口一:获取 iframe URL
请求地址
text
POST /payment/payments/iframeUrlJava Demo
java
IframeUrlRequest request = new IframeUrlRequest();
request.setChannel("iframeTest");
request.setSource("api");
request.setWebsite("www.example.com");
request.setCountry("US");
request.setPayMethodId(1);
request.setReference("DEMO_REF_20260331_001");
request.setAmount(1000);
request.setCurrency("USD");
ApiResponse<IframeUrlData> response = client.createIframeUrl(request);字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
| channel | 是 | 支付通道标识 |
| source | 否 | 来源标识,例如 api |
| website | 是 | 商户网站域名 |
| country | 是 | 用户国家,2 位大写编码 |
| payMethodId | 是 | 支付方式 ID |
| reference | 是 | 商户订单号 |
| amount | 是 | 金额,单位为最小货币单位 |
| currency | 是 | 币种,例如 USD |
成功响应示例
json
{
"success": true,
"data": {
"url": "https://checkout.example/iframe/xxxx",
"iframeToken": "IFRAME_TOKEN"
}
}5. 接口二:创建支付
请求地址
text
POST /payment/paymentsJava Demo
java
PaymentRequest request = new PaymentRequest();
request.setChannel("iframeTest");
request.setReference("DEMO_REF_20260331_001");
request.setAmount(1000);
request.setSubject("Demo Product");
request.setCurrency("USD");
request.setWebsite("www.example.com");
request.setIframeToken("IFRAME_TOKEN");
request.setNotifyUrl("https://www.example.com/payment/notify");
request.setReturnUrl("https://www.example.com/payment/return");
request.setType("iframe");
PaymentRequest.Card card = new PaymentRequest.Card();
card.setPayToken("PAY_TOKEN_FROM_IFRAME");
request.setCard(card);
ApiResponse<PaymentData> response = client.createPayment(request);支付结果说明
| 状态 | 说明 |
|---|---|
SUCCEEDED | 支付成功 |
FAILED | 支付失败 |
REQUIRES_ACTION | 需要继续动作,通常为 3DS |
典型响应示例
3DS 场景
json
{
"success": true,
"data": {
"id": "P251012110501493641651",
"reference": "DEMO_REF_20260331_001",
"amount": 1000,
"currency": "USD",
"status": "REQUIRES_ACTION",
"nextAction": {
"url": "https://3ds.example/redirect"
}
}
}成功场景
json
{
"success": true,
"data": {
"id": "P251012110501493641651",
"reference": "DEMO_REF_20260331_001",
"amount": 1000,
"currency": "USD",
"status": "SUCCEEDED",
"requiresAction": false
}
}失败场景
json
{
"success": true,
"data": {
"id": "P251012110501493641651",
"reference": "DEMO_REF_20260331_001",
"amount": 1000,
"currency": "USD",
"status": "FAILED",
"failureMessage": "Your card was declined. Please check with your bank or use a different card."
}
}6. 签名规则
POST 签名基串
text
<http-method> <http-uri>
<tenant-id>.<request-time>.<canonical-json>请求头
http
Content-Type: application/json
Tenant-Id: 220818025875
Request-Time: 1760238053626
Signature: algorithm=MD5,keyVersion=1,signature=54f99a2491f7008833eb3e72b5d141fdJava 调用
SDK 已自动完成请求签名与响应验签。
7. Webhook 验签
java
boolean verified = PaySignedClient.verifyWebhook(
"/payment/notify",
tenantId,
requestTime,
signatureHeader,
rawBody,
signKey,
5 * 60 * 1000L
);验签通过后再更新订单状态。
8. ReturnUrl GET 验签
java
Map<String, String> query = new HashMap<String, String>();
query.put("amount", "10000");
query.put("payId", "P251012110501493641651");
query.put("reference", "R202512040");
query.put("status", "SUCCEEDED");
query.put("signature", "f7c9428b5eab2056ff2efe376e75d904");
boolean verified = PaySignedClient.verifyGetSignature(query, "YOUR_MD5_SECRET_KEY");9. 可执行 Demo
运行:
bash
mvn -q -DskipTests exec:java -Dexec.mainClass=com.linkpay.sdk.example.QuickStart或先打包后运行自定义 Demo。
10. 发布到 Maven Central
当前项目已包含以下基础配置:
maven-source-pluginmaven-javadoc-pluginmaven-gpg-plugincentral-publishing-maven-plugin
发布前仅需替换:
groupIdscmdeveloperlicense- GPG 与 Central 账户配置
🔒 安全建议
- 必须校验回调签名
- 不要在前端暴露 app_key
- 生产环境必须使用 HTTPS
- 对输入参数进行校验
📜 License
本 SDK 仅用于 IntPay 官方接入使用。