Accept payments with PayPay Smart Payment

PayPay Smart Payment is a password-free payment JS SDK launched by PayPay, dedicated to optimizing the buyer's payment experience and improving payment success rates. It allows you to integrate PayPay's features into your user interface. After obtaining the buyer's authorization, subsequent payments can be completed without redirecting to the PayPay app.

User experience

The user experience for the first payment and subsequent payments is as follows:
First payment
Subsequent payments

User experience comparison

There is no difference in the user experience for the first payment and subsequent payments when integrated on the Web/WAP side. However, there are slight differences on mobile, as stated in the following table:

Payment flow

The following are flow chart for the first payment and subsequent payment:
First payment
Subsequent payments

Integration preparations

Before you start integrating, read the Integration Guide and API Overview documents to understand the integration steps of the server-side API and the precautions for calling the API. Furthermore, ensure that the following prerequisites are met:
  • Obtain a client ID
  • Complete the key configuration
  • Complete the configuration of paymentNotifyUrl to receive the asynchronous notification
  • Integrate the server-side SDK package, install the server-side library, and initialize a request instance. For more details, refer to Server-side SDKs.
To ensure compatibility and security in the payment process, the following lists the minimum version requirements for various browsers and applications. In particular, merchant WebViews and the PayPay app must run on the specified system versions or higher.
  • Browser version requirement:
  • The merchant WebView must support iOS 11 or later, and Android 4.4 (API level 19) or later.
  • The PayPay app must run on iOS 16 or later, and Android 9 or later.

Integration steps

Start your integration by taking the following steps:
  1. Create a payment order
  2. Get the payment continuation URL
  3. Receive the asynchronous notification

Step 1: Create a payment order
Server-side

Call the pay (One-time Payments) API. Specify paymentMethod.paymentMethodType as
PAYPAY
in the request, and set paymentMethod.paymentMethodMetadata.smartPaymentEnabled to
true
.
Note:
  • Both the first payment and subsequent payments require calling the pay (One-time Payments) API and redirecting to the returned normalUrl.
  • The paymentRedirectUrl provided by the merchant must start with https://.
The following shows a sample of how to call the pay (One-time Payments) API:
{
"order": {
  "env": {
    "osType": "IOS",
    "terminalType": "APP"
  },
  "orderAmount": {
    "currency": "JPY",
    "value": "1825"
  },
  "orderDescription": "TEST.COM",
  "referenceOrderId": "TEST4754300929"
},
"paymentAmount": {
  "currency": "JPY",
  "value": "1825"
},
"paymentMethod": {
  "paymentMethodMetadata": "{"smartPaymentEnabled":true}",
  "paymentMethodType": "PAYPAY"
},
"paymentNotifyUrl": "https://www.yourwebsite.com/notify/channel/notify",
"paymentRedirectUrl": "https://www.yourwebsite.com/redirect",
"paymentRequestId": "TEST4754300929",
"productCode": "CASHIER_PAYMENT",
"settlementStrategy": {
  "settlementCurrency": "JPY"
}
}
After receiving the request, Antom will return the corresponding PayPay payment continuation URL (normalUrl). Example code is as follows:
{
"normalUrl": "https://ac.alipay.com/page/antom-web-checkout-v2/payment-transition/pages/paypay/index.html?orderInfo=***test",
"paymentActionForm": "{"method":"GET","paymentActionFormType":"RedirectActionForm","redirectUrl":"https://ac.alipay.com/page/antom-web-checkout-v2/payment-transition/pages/paypay/index.html?orderInfo=***test"}",
"paymentAmount": {
"currency": "JPY",
"value": "1825"
},
"paymentCreateTime": "2025-09-16T20:48:47-07:00",
"paymentId": "20250917******450216341557",
"paymentRequestId": "PAYMENT_202*****46357_AUTO",
"redirectActionForm": {
"method": "GET",
"redirectUrl": "https://ac.alipay.com/page/antom-web-checkout-v2/payment-transition/pages/paypay/index.html?orderInfo=***test"
},
"result": {
"resultCode": "PAYMENT_IN_PROCESS",
"resultMessage": "payment in process",
"resultStatus": "U"
}
}

Step 2: Get the payment continuation URL
Client-side

After getting the payment continuation URL returned by Antom, the merchant server passes the address to the front end. The merchant front end redirects to the PayPay page. The different types of payment continuation URL are shown as follows:
Web/WAP
iOS
Android
Note:
  • The payment process must ensure a successful return from PayPay to the original browser page. If it fails to return to the original browser, the payment will not be completed.
  • When the buyer visits the store and makes subsequent purchases using the same device and browser as the initial payment, and the browser cookies have not been cleared within 395 days, payment can be made without logging in again during this period. If more than 395 days have passed since the last purchase or if the device or browser is changed, the buyer will need to log in again.
  • Incognito (private) mode does not support subsequent login-free payments.
  • During subsequent payment processes, the PayPay account must not be changed; otherwise, the transaction cannot proceed.

Step 3: Receive the asynchronous notification
Server-side

When a payment is completed or fails, Antom sends an asynchronous notification (notifyPayment) to the address that you specified in the pay (One-time Payments) API via the paymentNotifyUrl parameter.
Refer to Receive the asynchronous notification for detailed operations.
The first payment will return both authorization and payment results, while subsequent payments will only return payment results. The following are common scenarios:
Antom provides the capability to send asynchronous notifications and also supports actively querying payment results by calling the inquiryPayment API.
Payment success
Payment failure

Best practices

Depending on whether the buyer has installed the PayPay app on their mobile device, the system will provide different subsequent operations:
  • If the buyer has installed the PayPay app, you can choose to redirect externally to launch the PayPay app. For details, refer to the solution above.
  • If the buyer does not have installed the PayPay app, you can adopt the WebView in-app redirection process. For details, refer to the best practices below.
iOS
Android
Common questions
Q: If authorization is successful but payment fails, how should subsequent payments be handled?
A: After authorization, if payment fails, the following three scenarios may occur. Please handle them accordingly:
  • If authorization is successful but payment fails, the token remains valid in the browser. Therefore, during subsequent payments, only the PayPay payment confirmation page will be displayed, without redirecting to the PayPay app.
  • If during the initial authorization, the authentication is completed only on the PayPay side and redirects back to the merchant side without redirecting again to PayPay's paypayRedirectUrl, it indicates authorization failure. The token will not take effect in the browser, and the buyer needs to be guided to re-authorize and complete the payment.
  • If the buyer clears the browser cache, deletes app data, or reinstalls the app after successful initial authorization, the token will become invalid. The buyer must be guided to re-authorize and complete the payment.