• 概览
  • 集成模式
  • 支付方式
  • 开始接入
  • APIs
  • 附录
    • 返回码
    • 业务错误码
    • 订单状态
    • 国家编码
    • 州
    • 币种
    • 承运商
    • 资源下载
      • 插件
      • 对接 SDK - Java
      • 对接 SDK - PHP
      • 对接 SDK - Node
亮色模式
  1. 附录
  2. 资源下载

对接 SDK - Java

java-sdk 使用文档

一、简介

适用于 JAVA 8 及以上的开发环境。

二、使用说明

概述:连连支付将与服务端交互的接口(OpenAPI)封装在开发工具包(SDK)中,开发者无需自行实现同服务端交互的复杂逻辑,直接将 SDK jar 包引入自己的工程后,通过 OpenAPI 的示例代码实现同连连支付服务端的交互

适用人群

本文阅读对象:商户系统集成连连支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师等相关人员

三、支持接口

提供创单支付、退款、支付查询、退款查询、物流上传、支付取消、获取 iframe 支付 token 方法、解绑卡、支付/退款通知接口,开发者只需修改部分参数即可调用

目前已支持的接口,如APIs所示

四、开发准备

相关依赖

sdk 使用 demo 资源:
pay-v3-sdk-demo-java.zip

所需额外依赖资源:
https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.5.2

引入 sdk:

    maven:
    <dependency>
      <groupId>io.github.globalpay-dev</groupId>
      <artifactId>globalpay-sdk</artifactId>
      <version>1.0.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.2</version>
    </dependency>

    gralde:
      compile group: 'io.github.globalpay-dev', name:'globalpay-sdk', version:'1.0.3'
      complie group: 'org.apache.httpcomponents', name:'httpclient', version:'4.5.2'

修改商户参数

商户配置文件信息修改:商户号、连连公钥、商户私钥、环境设置

#可参考pay-v3-sdk-demo-java.zip中globalpay-merchant.properties
# ON / OFF
DEBUGGER_FLAG=ON
# (测试模式)ON / OFF
TEST_MODEL=ON
# 商户号 连连提供
MERCHANT_ID=
# 站点号 连连提供(若无则不填)
SUB_MERCHANT_ID=
# 见 AlgorithmEnum
SIGN_TYPE=RSA
# 配置商户秘钥
# RSA - 商户私钥 - 商户自己创建
# HMAC - 连连提供的HMAC key
MERCHANT_SIGN_KEY=
# 配置连连秘钥
# RSA - 连连公钥 - 连连提供
# HMAC - 连连提供的HMAC key
LL_SIGN_KEY=

# ON / OFF
HK_NET_MODEL=OFF

五、SDK 调用示例代码

LianLianpay SDK 集成说明:SDK 已经对加签验签逻辑做了封装,使用 SDK 时传入商户公钥等内容可直接通过 SDK 自动进行加验签,签名方法:如加签验签详情所示

创单支付调用示例

public class PaymentsTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final PaymentsService payService = new PaymentsService();

  public void testPaySuccess() {
    PaymentsRequest payRequest = buildCheckoutPagePayRequest();
    ApiResult<PaymentsResponse> s = payService.sendPaymentRequest(payRequest, merchant);
  }
}

备注:CheckoutPage 模式见代码 demo 包中 CheckoutPagePaymentsTest 测试类,IFrame 模式见 IFramePaymentsTest 测试类,Direct Api 模式见 DirectApiPaymentsTest 测试类。

退款调用示例

public class RefundTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final RefundService refundService = new RefundService();

  public void testRefund() {
    RefundRequest request = buildRefundRequest();
    //原始交易订单号 必填
    request.setOriginalTransactionId("");
    ApiResult<RefundResponse> refundResponseApiResult = refundService.sendRefundRequest(request, merchant);
  }
}

支付结果查询调用示例

public class PaymentsQueryTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final PaymentsQueryService paymentsQueryService = new PaymentsQueryService();

  public void testPaymentsQuery() {
    String merchantTransactionId = "";
    ApiResult<PaymentsResponse> payResponseApiResult = paymentsQueryService.sendPaymentQueryRequest(merchantTransactionId, merchant);
  }
}

退款结果查询调用示例

public class RefundQueryTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final RefundQueryService refundQueryService = new RefundQueryService();

  public void testRefundQuery() {
    String merchantTransactionId = "";
    ApiResult<RefundResponse> refundResponseApiResult = refundQueryService.sendRefundQueryRequest(merchantTransactionId, merchant);
  }
}

支付取消调用示例

public class PaymentsCancelTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final PaymentsCancelService paymentsCancelService = new PaymentsCancelService();

  public void testPaymentsCancel() {
    String merchantTransactionId = "";
    ApiResult<CancelPayResponse> cancelPayResponseApiResult = paymentsCancelService.sendPaymentCancelRequest(merchantTransactionId, merchant);
  }
}

物流上传调用示例

public class ShipmentsUploadTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final ShipmentsService shipmentsService = new ShipmentsService();

  public void testShipmentsUpload() {
    ShipmentRequest shipmentRequest = buildShipmentRequest();
    ApiResult<?> apiResult = shipmentsService.sendShipmentsRequest(shipmentRequest, merchant);
  }
}

获取 iframe 支付 token 调用示例

public class IFrameToken {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final IFrameTokenService iFrameTokenService = new IFrameTokenService();

  public void testGetIframeToken() {
    ApiResult<String> iFrameTokenRes = iFrameTokenService.sendIFrameTokenRequest(merchant);
  }
}

支付结果通知调用示例

public class PaymentsNotifyTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final PaymentNotifyService paymentNotifyService = new PaymentNotifyService();


  public void testPaymentNotify() {
    //通知头部信息
    Map<String, String> headers;
    //通知body体信息
    String requestBody;
    PaymentsNotifyRequest paymentsNotifyRequest = paymentNotifyService.checkNotifySignAndGetPaymentsNotifyRequest(headers, requestBody, merchant);
  }
}

退款结果通知调用示例

public class RefundNotifyTest {
  private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
  private final RefundNotifyService refundNotifyService = new RefundNotifyService();

  public void testRefundNotify() {
    //通知头部信息
    Map<String, String> headers;
    //通知body体信息
    String requestBody;
    RefundNotifyRequest refundNotifyRequest = refundNotifyService.checkNotifySignAndGetRefundNotifyRequest(headers, requestBody, merchant);
  }
}

绑卡结果通知调用示例

public class testTokenEventNotify {
    private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
    private final CardTokenNotifyService cardTokenNotifyService = new CardTokenNotifyService();

    public void testRefundNotify() {
        // Notification header information
        Map<String, String> headers;
        // Notification body information
        String requestBody;
        CardTokenNotifyRequest cardTokenNotifyRequest = cardTokenNotifyService.checkNotifySignAndGetPaymentsNotifyRequest(headers, requestBody, merchant);
    }
}

获取 Iframe 凭证接口调用示例

public class IFrameCardTokenPaymentsTest {
    private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
    private final IFrameCardTokenService iFrameCardTokenService = new IFrameCardTokenService();

    public void postCardTokenTest() {
        CardTokenRequest cardTokenRequest = generateCardTokenRequest();
        ApiResult<String> iFrameTokenRes = iFrameCardTokenService.sendCardTokenRequest(cardTokenRequest,merchant);
    }
}

解绑卡接口调用示例

public class MerchantCardTokenTest {
    private final MerchantPropertyReader merchant = new MerchantPropertyReader("/globalpay-merchant.properties");
    private MerchantUnbindTokenService merchantUnbindTokenService = new MerchantUnbindTokenService();

    public void postCardTokenTest() {
        CardTokenRequest cardTokenRequest = generateCardTokenRequest();
        ApiResult<?> iFrameTokenRes = merchantUnbindTokenService.sendUnbindCardTokenRequest(cardTokenRequest, merchant);
    }
}

生成公私钥示例

public class RsaPairKeyTest {
  public static void main(String[] args) throws Exception {
    ImmutablePair<String, String> rsaKeyPair = SignUtil.initRsaKey();
    System.out.println("获取Rsa公钥:" + rsaKeyPair.getLeft());
    System.out.println("获取Rsa私钥:" + rsaKeyPair.getRight());
  }
}