Method | HTTP request | Description |
---|---|---|
createAccountLinkQRCode | POST /v1/qr/sessions | Create an ACCOUNT LINK QR and display it to the user |
cancelPayment | DELETE /v2/payments/{merchantPaymentId} | Cancel a payment |
createPayment | POST /v2/payments | Create a payment |
createPaymentAuthorization | POST /v2/payments/preauthorize | Create a payment authorization to block the money |
createContinuousPayment | POST /v1/subscription/payments | Create a continuous payment and start the money transfer |
revertAuth | POST /v2/payments/preauthorize/revert | Revert a payment authorization |
capturePaymentAuth | POST /v2/payments/capture | Capture a payment authorization |
createQRCode | POST /v2/codes | Create a Code |
deleteQRCode | DELETE /v2/codes/{codeId} | Delete a Code |
getPaymentDetails | GET /v2/payments/{merchantPaymentId} | Get payment details |
getPaymentMethods | GET /v4/paymentMethods | Get payment methods |
getCodesPaymentDetails | GET /v2/codes/payments/{merchantPaymentId} | Get payment details for QR code |
getRefundDetails | GET /v2/refunds/{merchantRefundId} | Get refund details |
refundPayment | POST /v2/refunds | Refund a payment |
revertAuth | POST /v2/payments/preauthorize/revert | Revert a payment authorization |
NotDataResponse cancelPayment(merchantPaymentId)
Cancel a payment
This API is used in case, while creating a payment, the client can not determine the status of the payment. For example, client get timeout or the response cannot contain the information to indicate the exact payment status.
By calling this API, if accepted, the OPA will guarantee the money eventually goes back to user's account.
Note: The Cancel API can be used until 00:14:59 AM the day after the Payment has happened. For 00:15 AM or later, please call the refund API to refund the payment.
//Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
String merchantPaymentId = "MERCHANT_PAYMENT_ID";
try {
NotDataResponse result = apiInstance.cancelPayment(merchantPaymentId);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#cancelPayment");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/cancelPayment
PaymentDetails capturePaymentAuth(body)
Capture a payment authorization
This API is used to capture the payment authorization for a payment Timeout: 30s
//Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
CaptureObject captureObject = new CaptureObject();
captureObject.setMerchantCaptureId("MERCHANT_CAPTURE_ID");//UNIQUE ID
captureObject.setMerchantPaymentId("MERCHANT_PAYMENT_ID");
captureObject.setAmount(new MoneyAmount().amount(1).currency(MoneyAmount.CurrencyEnum.JPY));
captureObject.setOrderDescription("ORDER_DESCRIPTION");
captureObject.setRequestedAt(Instant.now().getEpochSecond());
try {
PaymentDetails result = apiInstance.capturePaymentAuth(captureObject);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#capturePaymentAuth");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/capturePaymentAuth
PaymentDetails createPayment(body, agreeSimilarTransaction)
Create a payment
Create a direct debit payment and start the money transfer. Timeout: 30s
NOTE: If you would like to specify payment method, see also getPaymentMethods.
//Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
Payment payment = new Payment();
payment.setAmount(new MoneyAmount().amount(1).currency(MoneyAmount.CurrencyEnum.JPY));
payment.setMerchantPaymentId("MERCHANT_PAYMENT_ID");
payment.setUserAuthorizationId("USER_AUTHORIZATION_ID");
payment.setRequestedAt(Instant.now().getEpochSecond());
payment.setStoreId("STORE_ID");
payment.setTerminalId("TERMINAL_ID");
payment.setOrderReceiptNumber("ORDER_RECEIPT_NUMBER");
payment.setOrderDescription("ORDER_DESCRIPTION");
MerchantOrderItem merchantOrderItem =
new MerchantOrderItem()
.category("pasteries").name("Moon Cake")
.productId("PRODUCT_ID").quantity(1)
.unitPrice(new MoneyAmount().amount(10).currency(MoneyAmount.CurrencyEnum.JPY));
List<MerchantOrderItem> merchantOrderItems = new ArrayList<>();
merchantOrderItems.add(merchantOrderItem);
payment.setOrderItems(merchantOrderItems);
String agreeSimilarTransaction = "false"; // (Optional) If the parameter is set to true, the payment duplication check will be bypassed.
try {
PaymentDetails result = apiInstance.createPayment(payment, agreeSimilarTransaction);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#createPayment");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/direct_debit#operation/createPayment
PaymentDetails createPaymentAuthorization(body, agreeSimilarTransaction)
Create a payment authorization
Create a payment authorization to block the money. Timeout: 30s
NOTE: If you would like to specify payment method, see also getPaymentMethods.
//Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
Payment payment = new Payment();
payment.setAmount(new MoneyAmount().amount(1).currency(MoneyAmount.CurrencyEnum.JPY));
payment.setMerchantPaymentId("MERCHANT_PAYMENT_ID");
payment.setUserAuthorizationId("USER_AUTHORIZATION_ID");
payment.setRequestedAt(Instant.now().getEpochSecond());
payment.setStoreId("STORE_ID");
payment.setTerminalId("TERMINAL_ID");
payment.setOrderReceiptNumber("ORDER_RECEIPT_NUMBER");
payment.setOrderDescription("ORDER_DESCRIPTION");
MerchantOrderItem merchantOrderItem =
new MerchantOrderItem()
.category("pasteries").name("Moon Cake")
.productId("PRODUCT_ID").quantity(1)
.unitPrice(new MoneyAmount().amount(10).currency(MoneyAmount.CurrencyEnum.JPY));
List<MerchantOrderItem> merchantOrderItems = new ArrayList<>();
merchantOrderItems.add(merchantOrderItem);
payment.setOrderItems(merchantOrderItems);
String agreeSimilarTransaction = "false"; //(Optional) If the parameter is set to true, the payment duplication check will be bypassed.
try {
PaymentDetails result = apiInstance.createPaymentAuthorization(payment, agreeSimilarTransaction);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#createPaymentAuthorization");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/preauth_capture#operation/createAuth
PaymentDetails createContinuousPayment(body)
Create a continuous payment Create a continuous payment and start the money transfer. Timeout: 30s
NOTE: If you would like to specify payment method, see also getPaymentMethods.
//Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
Payment payment = new Payment();
payment.setAmount(new MoneyAmount().amount(1).currency(MoneyAmount.CurrencyEnum.JPY));
payment.setMerchantPaymentId("MERCHANT_PAYMENT_ID");
payment.setUserAuthorizationId("USER_AUTHORIZATION_ID");// User should be with scope continuous_payments
payment.setRequestedAt(Instant.now().getEpochSecond());
payment.setStoreId("STORE_ID");
payment.setTerminalId("TERMINAL_ID");
payment.setOrderReceiptNumber("ORDER_RECEIPT_NUMBER");
payment.setOrderDescription("ORDER_DESCRIPTION");
MerchantOrderItem merchantOrderItem =
new MerchantOrderItem()
.category("pasteries").name("Moon Cake")
.productId("PRODUCT_ID").quantity(1)
.unitPrice(new MoneyAmount().amount(10).currency(MoneyAmount.CurrencyEnum.JPY));
List<MerchantOrderItem> merchantOrderItems = new ArrayList<>();
merchantOrderItems.add(merchantOrderItem);
payment.setOrderItems(merchantOrderItems);
try {
PaymentDetails result = apiInstance.createContinuousPayment(payment);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#createContinuousPayment");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/continuous_payments#operation/createPayment
PaymentDetails revertAuth(body)
Revert a payment authorization
This api is used in case, the merchant wants to cancel the payment authorization because of cancellation of the order by the user. Timeout: 30s
//Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
PaymentStateRevert payment = new PaymentStateRevert();
payment.setPaymentId("Payment_Transaction_ID");
payment.setMerchantRevertId(UUID.randomUUID().toString());
payment.setRequestedAt(Instant.now().getEpochSecond());
try {
RevertAuthResponse result = apiInstance.revertAuth(payment);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#revertAuth");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/preauth_capture#operation/revertAuth
QRCodeDetails createQRCode(body)
Create a Code
Create a Code to receive payments. Timeout: 30s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
QRCode qrCode = new QRCode();
qrCode.setAmount(new MoneyAmount().amount(amount).currency(MoneyAmount.CurrencyEnum.JPY));
qrCode.setMerchantPaymentId(MERCHANT_PAYMENT_ID);
qrCode.setCodeType("ORDER_QR");
qrCode.requestedAt(Instant.now().getEpochSecond());
qrCode.redirectUrl("REDIRECT_URL");
qrCode.redirectType(QRCode.RedirectTypeEnum.WEB_LINK);//For Deep Link, RedirectTypeEnum.APP_DEEP_LINK
qrCode.setOrderDescription("ORDER_DESCRIPTION");
MerchantOrderItem merchantOrderItem =
new MerchantOrderItem()
.category("Psteries").name("Moon Cake")
.productId("PRODUCT_ID").quantity(1)
.unitPrice(new MoneyAmount().amount(10).currency(MoneyAmount.CurrencyEnum.JPY));
List<MerchantOrderItem> merchantOrderItems = new ArrayList<>();
merchantOrderItems.add(merchantOrderItem);
qrCode.setOrderItems(merchantOrderItems);
try {
QRCodeDetails result = apiInstance.createQRCode(qrCode);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#createQRCode");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/createQRCode
NotDataResponse deleteQRCode(codeId)
Delete a Code
Delete a created Code. Timeout: 15s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
String codeId = "QR_CODE_ID";
try {
NotDataResponse result = apiInstance.deleteQRCode(codeId);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#deleteQRCode");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/deleteQRCode
PaymentDetails getPaymentDetails(merchantPaymentId)
Get payment details
Get payment details. Timeout: 15s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
String merchantPaymentId = "MERCHANT_PAYMENT_ID"; // String
try {
PaymentDetails result = apiInstance.getPaymentDetails(merchantPaymentId);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#getPaymentDetails");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/direct_debit#operation/getPaymentDetails
PaymentMethodsResponse getPaymentMethods(userAuthorizationId)
Get payment methods
Get payment methods. Timeout: 30s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
String userAuthorizationId = "USER_AUTHORIZATION_ID"; // String
ProductType productType = null; // Optional
try {
PaymentMethodsResponse result = apiInstance.getPaymentMethods(userAuthorizationId, productType);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#getPaymentMethods");
System.out.println(e.getResponseBody());
}
You can specify payment method by setPaymentMethodType
and setPaymentMethodId
.
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
String agreeSimilarTransaction = "false"; // (Optional) If the parameter is set to true, the payment duplication check will be bypassed.
String userAuthorizationId = "USER_AUTHORIZATION_ID"; // String
ProductType productType = null; // Optional
Payment payment = new Payment();
// ... set various fields to build a request body
try {
// Get availabkle payment methods
PaymentMethodsResponse paymentMethodsResponse = apiInstance.getPaymentMethods(userAuthorizationId, productType);
List<PaymentMethod> methods = paymentMethodsResponse.getData().getPaymentMethods();
// Set payment method if the response contains what you want for the payment
Optional<PaymentMethod> method = methods.stream()
.filter(x -> "PAY_LATER_CC".equals(x.getPaymentMethodType()))
.findFirst();
if (method.isPresent()) {
payment.setPaymentMethodType(method.get().getPaymentMethodType());
payment.setPaymentMethodId(method.get().getPaymentMethodId());
}
PaymentDetails result = apiInstance.createPayment(payment, agreeSimilarTransaction);
System.out.println(result);
} catch (ApiException e) {
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/direct_debit#tag/Payment/operation/GetPaymentMethods
PaymentDetails getCodesPaymentDetails(merchantPaymentId)
Get payment details
Get payment details. Timeout: 15s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
String merchantPaymentId = "MERCHANT_PAYMENT_ID";
try {
PaymentDetails result = apiInstance.getCodesPaymentDetails(merchantPaymentId);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#getCodesPaymentDetails");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/getPaymentDetails
RefundDetails getRefundDetails(merchantRefundId)
Get refund details
Get refund details. Timeout: 15s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
String merchantRefundId = "MERCHANT_REFUND_ID";
try {
RefundDetails result = apiInstance.getRefundDetails(merchantRefundId);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#getRefundDetails");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/getRefundDetails
RefundDetails refundPayment(body)
Refund a payment
Refund a payment. Timeout: 30s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
Refund refund = new Refund();
refund.setAmount(new MoneyAmount().amount(1).currency(MoneyAmount.CurrencyEnum.JPY));
refund.setMerchantRefundId("MERCHANT_REFUND_ID");
refund.setPaymentId("PAYMENT_ID");
refund.setReason("REFUND REASON");
refund.setRequestedAt(Instant.now().getEpochSecond())
try {
RefundDetails result = apiInstance.refundPayment(refund);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#refundPayment");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/refundPayment
RevertAuthResponse revertAuth(body)
Revert a payment authorization
This API is used in case, the merchant wants to cancel the payment authorization because of cancellation of the order by the user. Timeout: 30s
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
PaymentStateRevert body = new PaymentStateRevert();
payment.setPaymentId("PAYMENT_ID");
payment.merchantRevertId("MERCHANT_REVERT_AUTH_ID");
payment.setRequestedAt(Instant.now().getEpochSecond()); | Revert Authorized Order Request
try {
RevertAuthResponse result = apiInstance.revertAuth(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#revertAuth");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode#operation/revertAuth
LinkQRCodeResponse createAccountLinkQRCode(body)
Create an ACCOUNT LINK QR and display it to the user.
// Import classes:
import jp.ne.paypay.ApiException;
import jp.ne.paypay.api.PaymentApi;
PaymentApi apiInstance = new PaymentApi(apiClient);
AccountLinkQRCode accountLinkQRCode = new AccountLinkQRCode();
List<AuthorizationScope> scopes = new ArrayList<>();
scopes.add(AuthorizationScope.DIRECT_DEBIT);
accountLinkQRCode.setScopes(scopes);
accountLinkQRCode.setNonce(RandomStringUtils.randomAlphanumeric(8).toLowerCase());
accountLinkQRCode.setDeviceId("device_id");
accountLinkQRCode.setRedirectUrl("merchant.domain/test");
accountLinkQRCode.setPhoneNumber("phone_number");
accountLinkQRCode.setReferenceId("reference_id");
accountLinkQRCode.setRedirectType(QRCode.RedirectTypeEnum.WEB_LINK);
try {
LinkQRCodeResponse result = apiInstance.createAccountLinkQRCode(accountLinkQRCode);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling PaymentApi#createAccountLinkQRCode");
System.out.println(e.getResponseBody());
}
Please refer to the below document for more information :
https://www.paypay.ne.jp/opa/doc/v1.0/account_link#operation/createQRSession