直连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一起使用。

Card Number
Brand
描述

4242 4242 4242 4242

Visa

成功并立即处理付款。

3566 0020 2036 0505

JCB

成功并立即处理付款。

6011 1111 1111 1117

Discover

成功并立即处理付款。

3782 8224 6310 0052

American Express

成功并立即处理付款。

5555 5555 5555 4444

Mastercard

成功并立即处理付款。

4000002500003155

Visa

此卡需要对所有交易进行 3D身份验证

4000 0000 0000 0077

Visa

始终失败,拒绝代码为DECLINED

Last updated