Links

Pre-authorize a payment

1 Create a pre-authorized payment

Checkout page
Payment
When creating Checkout session, set the value of preAuth property to 'y'.
  • The value is y:indicates that the current payment is pre-authorized. After the cardholder completes the authorization, the status of the payment is'uncaptured'. And you need to capture funds, the payment can be finalized.
  • The value is n:indicates this is an ordinary payment and 'n'is the default value.
// Use your private key
MoneyCollect.apiKey = "test_pr_NWZsa******";
​
SessionCreateParams params =
SessionCreateParams.builder()
.setReturnUrl("http://localhost:4242/success.html")
.setCancelUrl("http://localhost:4242/cancel.html")
.setNotifyUrl("http://localhost:4242/success.html")
.setAmountTotal(19 * 100L)
.setCurrency("USD")
.setOrderNo("C"+System.currentTimeMillis())
.setWebsite("https://www.mc.com")
.setPreAuth(SessionCreateParams.PreAuth.YES)
.build();
Session session = Session.create(params);
When creating Payment, set the value of preAuth property to 'y'.
  • The value is y:indicates that the current payment is pre-authorized. After the cardholder completes the payment, the status of the payment is'uncaptured'. And you need to capture funds, the payment can be finalized.
  • The value is n:indicates this is an ordinary payment and 'n'is the default value.
// Use your private key
MoneyCollect.apiKey = "test_pr_NWZsa******";
​
PaymentCreateParams params =
PaymentCreateParams.builder()
.setAmount(14 * 100L)
.setCurrency("USD")
.setOrderNo("MC"+System.currentTimeMillis())
.setIp("103.48.140.12")
.setPaymentMethod("{PAYMENT_METHOD_ID}")
.setConfirmationMethod(PaymentCreateParams.ConfirmationMethod.AUTOMATIC)
.setPreAuth(PaymentCreateParams.PreAuth.YES)
.build();
Payment payment = Payment.create(params);
When a payment is pre-authorized, but it cannot be captured or canceled in 7days, MoneyCollect will automatically cancel this payment.

2 Capture a pre-authorized payment

  1. 1.
    Use API Capture a Payment to capture payment in 'uncaptured' status.
  • paymentId The ID of the payment you capture.
  • comment the description for capture.
// Use your private key
MoneyCollect.apiKey = "test_pr_NWZsa******";
​
PaymentCaptureParams params = PaymentCaptureParams.builder()
.setPaymentId("py_1451067513881452545")
.setComment("capture all")
.build();
Payment payment = Payment.capture(params);
return JSONObject.toJSONString(payment);
2. Use MoneyCollect Dashboard to capture
Capture a pre-authorized payment, only supports to capture full amount. That is to say, we don't support partially capture a payment.

3 Cancel the pre-authorization

Use API Cancel a Payment to cancel the payment in 'uncaptured' status.
  • paymentId the ID of the payment you cancel.
  • cancellationReason The reason why you cancel the pre-authorization.
// Use your private key
MoneyCollect.apiKey = "test_pr_NWZsa******";
​
PaymentCancelParams params = PaymentCancelParams.builder()
.setPaymentId("py_1451067513881452545")
.setCancellationReason("I want to cancel.")
.build();
Payment payment = Payment.cancel(params);
return JSONObject.toJSONString(payment);
You can also cancel a Pre-auth payment in your MoneyCollect Dashboard.