API-Direct

Use Server to Server : Connect through the JAVA SDK provided by MoneyCollect.

Download our SDK

1. Set up MoneyCollect

Firstly, make sure that you have set up an account name on the MoneyCollect dashboard.

2. Create PaymentMethod

PaymentMethod is the necessary prerequisite to charge.

PaymentMethod can specify different payment methods,such as credit cards, Alipay, WeChat Pay, etc. Different payment methods require different parameters. For example: Billing information and card information are required for credit cards, but not for Alipay.

The following code shows how to create a PaymentMethod through the SDK:

// Use your 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. Create a payment

 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);  //

Create a payment and automatically charge by setting the "confirm" parameter to true and specifying the "paymentMethod" parameter.

4. Confirm a payment

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

If you want to create a transaction and charge automatically, you can refer to the following code:

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. Verification action required

For some transactions, customers may be required to perform verification actions, such as 3D secure authentication or Alipay to scan code. Payment will return nextAction when confirming the charge. At this time, you need to do additional actions, redirect or display the QR code according to the different type of nextAction.

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

6. Inquire about a transaction

After the payment is completed, we will return the result to thereturnUrlyou set and send a notification tonotifyUrl. You can also inquire the result of this payment through API or SDK.

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

7.Additional testing resources

There are several test cards you can use to make sure your integration is ready for production. Use them with any CVC, postal code, and future expiration date.

Card NumberBrandDescription

4242 4242 4242 4242

Visa

Succeeds and immediately processes the payment.

3566 0020 2036 0505

JCB

Succeeds and immediately processes the payment.

6011 1111 1111 1117

Discover

Succeeds and immediately processes the payment.

3782 8224 6310 0052

American Express

Succeeds and immediately processes the payment.

5555 5555 5555 4444

Mastercard

Succeeds and immediately processes the payment.

4000002500003155

Visa

This card requires 3D authentication on all transaction

4000 0000 0000 0077

Visa

Always fails with a decline code of declined.

Last updated