One-time payment flow for Adyen UPI QR
Use Adyen UPI QR to process one-time UPI payments in Zuora by displaying a QR code on the hosted payment page, capturing customer authorization in their UPI app, and updating payment status based on Adyen webhooks.
How desktop UPI QR payments work
This section describes how one-time UPI payments are processed on desktop using a QR code.
When a customer selects UPI at checkout, Zuora initiates a payment request through Adyen and displays a QR code on the hosted payment page. The customer scans the QR code using a UPI-enabled mobile application and completes the payment in their app.
Payment processing behavior
On payment initiation
- Zuora initializes the UPI payment request through Adyen
- A payment timer window is started (default: 36 minutes)
- The hosted payment page displays:
- A QR code
- Instructions for completing the payment
- A countdown timer indicating validity
Customer action
- The customer scans the QR code using a UPI application such as Google Pay, PhonePe, or BHIM
- The customer confirms the payment in the UPI application
Gateway and system behavior
- Adyen returns an initial Pending response for the payment
- Adyen sends webhook events with the final payment result
- Zuora processes the webhook events and updates:
- Payment status
- Gateway state
- Payment page callback
- The QR code timer is closed when:
- A final result is received, or
- The timer expires
Result handling
Successful payment
- Payment status is set to Processed
- Gateway state is set to Settled
- A success callback is triggered
Failure or timeout
- Gateway state is set to FailedToSettle
If no webhook is received before the timer expires:
- Payment status is set to Payment_Status_Unknown
- You should query the payment status using the Retrieve Payment API