直连API

使用服务器到服务器直连模式,可以对支付流程进行灵活控制:可通过 MoneyCollect 提供的 Java SDK 进行连接。

Download our SDK

这种方式会增大商户的PCI认证开销,需要通过PCI Level1认证的商家才能申请。

1. 设置 MoneyCollect账户

首先,请确保您已在MoneyCollect 后台上设置了账户信息。

2. 创建PaymentMethod

PaymentMethod 是支付接口的必要前提。

PaymentMethod 可以指定不同的支付方式,如信用卡、支付宝、微信支付等。不同的支付方式需要不同的参数。例如:信用卡需要账单信息和卡片信息,而支付宝不需要。

下面的代码显示了如何通过 SDK 创建 PaymentMethod

// 使用您的私钥private key
MoneyCollect.apiKey = "live_pr_KQjlYQdmWygTO8m*********";

// Build card
PaymentMethodCreateParams.Card card = PaymentMethodCreateParams.Card.builder()
        .setCardNo("4242424242424242")
        .setExpYear("2024")
        .setExpMonth("12")
        .setSecurityCode("123")
        .build();
        
// Build billing details for card
PaymentMethodCreateParams.BillingDetails billingDetails = PaymentMethodCreateParams.BillingDetails.builder()
        .setAddress(PaymentMethodCreateParams.Address.builder()
                .setCity("Hong Kong")
                .setCountry("CN")
                .setLine1("193 Prince Edward Road")
                .setLine2("")
                .setPostalCode("12222")
                .setState("Hong Kong").build() )
        .setEmail("test@mc.com")
        .setFirstName("Su")
        .setLastName("Diana")
        .setPhone("12222211")
        .build();
// Build payment method
PaymentMethodCreateParams params =
        PaymentMethodCreateParams.builder()
                .setType(PaymentMethodCreateParams.PaymentMethodType.CARD)
                .setCard(card)
                .setBillingDetails(billingDetails)
                .build();
// Create payment method
PaymentMethod paymentMethod = PaymentMethod.create(params);

3. 创建付款

 PaymentCreateParams params =
        PaymentCreateParams.builder()
                .setAmount(18*100L)
                .setCurrency("USD")
                .setOrderNo("MC"+System.currentTimeMillis())
                .setNotifyUrl("http://localhost:4242/notify")
                .setIp("103.48.140.12") // customer ip 
                .build();

Payment payment =  Payment.create(params);  //

通过将“confirm”参数设置为 true 并指定“ paymentMethod" 参数。

4. 确认付款

PaymentConfirmParams paymentConfirmParams = PaymentConfirmParams.builder()
                                            .setPaymentMethod({{paymentMethodId}})
                                            .build();
Payment payment = Payment.retrieve({{paymentId}});
payment.confirm(paymentConfirmParams);

如果您想创建交易并自动收费,可以参考以下代码:

PaymentCreateParams params =
        PaymentCreateParams.builder()
                .setAmount(18*100L)
                .setCurrency("USD")
                .setOrderNo("MC"+System.currentTimeMillis())
                .setNotifyUrl("http://localhost:4242/notify")
                .setIp("103.48.140.12") // customer ip
                .setConfirm(true)
                .setPaymentMethod({{paymentMethodId}})
                .build();

Payment payment =  Payment.create(params);  

5. 需要验证操作

对于某些交易,客户可能需要执行验证操作,例如 3D 安全认证或支付宝扫码。付款将在确认收费时返回 nextAction。这个时候,您需要根据不同的情况进行额外的操作,根据的不同 nextAction``type ,重定向或显示二维码。

"nextAction": {
    "type": "redirect",
    "redirectToUrl": "
        https://test-payment.moneycollect.com/authentication?type=2&param=eyJwYXltZW50SWQiOiJwdF8xNDk4MTE3MzQxMjc0NDIzMjk4IiwidGhyZWVEc1VybCI6Imh0dHBzOi8XXXXXXXX
}

6. 查询交易

付款完成后,我们会将结果返回并通知给您设置的 returnUrl 。您也可以通过 API 或 SDK 查询本次支付结果。

Payment payment = Payment.retrieve("pt_1497139547656585217");

7.其他测试资源

您可以使用几个测试卡来确保您的集成已准备好投入生产。

这些卡可以与任何 CVC, postal code, 以及 future expiration date一起使用。

Last updated