UPI QR
Use the pay() method to initiate a payment via UPI QR. This generates a QR code that the customer can scan using any UPI app to complete the payment.
Request
Request Parameters
| Parameter Name | Data Type | Mandatory | Description |
merchantOrderId | String | Yes | Unique merchant order id generated by merchant. |
amount | Long | Yes | Order amount in paisa. |
| List | Yes | Different type of constraints that must be applied to the payment. |
metaInfo | Object | No | Merchant defined meta info to store additional information. same data will be returned in status and callback response. • For udf1 to udf10, there is no constraint and Maximum length for Udf1-10 = 256 characters • For udf11 to udf15, alphanumeric values with _-+@. are allowed and Maximum length for Udf11-15 = 50 characters • It is mandatory to keep the parameter names udf1, udf2, etc., exactly as they are in the metainfo block. Renaming these key values will result in a production error. |
Sample Request
import com.phonepe.sdk.pg.common.models.MetaInfo;
import com.phonepe.sdk.pg.common.models.request.PgPaymentRequest;
import com.phonepe.sdk.pg.common.models.response.PgPaymentResponse;
import java.util.UUID;
import com.phonepe.sdk.pg.Env;
import com.phonepe.sdk.pg.payments.v2.CustomCheckoutClient;
String clientId = "<clientId>";
String clientSecret = "<clientSecret>";
Integer clientVersion = <clientVersion>; // insert your client version here
Env env = Env.SANDBOX; // change to Env.PRODUCTION when you go live
CustomCheckoutClient customCheckoutClient = CustomCheckoutClient.getInstance(clientId, clientSecret,
clientVersion, env);
String merchantOrderId = UUID.randomUUID().toString();
long amount = 100;
MetaInfo metaInfo = MetaInfo.builder()
.udf1("free-text-value-1")
.udf2("free-text-value-2")
.udf3("free-text-value-3")
.udf4("free-text-value-4")
.udf5("free-text-value-5")
.udf6("free-text-value-6")
.udf7("free-text-value-7")
.udf8("free-text-value-8")
.udf9("free-text-value-9")
.udf10("free-text-value-10")
.udf11("ref_11")
.udf12("tag-12")
.udf13("user@13")
.udf14("code.14")
.udf15("val+15")
.build();
PgPaymentRequest pgPaymentRequest = PgPaymentRequest.UpiQrRequestBuilder()
.amount(amount)
.merchantOrderId(merchantOrderId)
.metaInfo(metaInfo)
.build();
PgPaymentResponse pgPaymentResponse = customCheckoutClient.pay(pgPaymentRequest);
String qrData = pgPaymentResponse.getQrData();Response
Extract the qrData from the response received. This string can be used to render the QR code on your app or website for the customer to scan and complete the payment.
| Field Name | Data Type | Description |
orderId | String | PG generated internal order id. |
state | String | State of the order created, initially it will be PENDING. |
expiryAt | Long | Order expiry date in epoch (in milliseconds). |
IntentUrl | String | Intent url for the amount mentioned. |
qrData | String | QR Data which will be used to generate the QR. |