Skip to content

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 -DskipTests

3. 初始化客户端

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/iframeUrl

Java 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/payments

Java 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=54f99a2491f7008833eb3e72b5d141fd

Java 调用

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-plugin
  • maven-javadoc-plugin
  • maven-gpg-plugin
  • central-publishing-maven-plugin

发布前仅需替换:

  • groupId
  • scm
  • developer
  • license
  • GPG 与 Central 账户配置

🔒 安全建议

  • 必须校验回调签名
  • 不要在前端暴露 app_key
  • 生产环境必须使用 HTTPS
  • 对输入参数进行校验

📜 License

本 SDK 仅用于 IntPay 官方接入使用。