post https://mercury-uat.phonepe.com/v3/charge
Request Payment APIs are used when the merchant wants to send a collect payment request to user's PhonePe app against an order.
Header Name | Header Value |
---|---|
Content-Type | application/json |
X-VERIFY | SHA256(base64 encoded payload + "/v3/charge" + salt key) + ### + salt index |
X-CALLBACK-URL | Callback Url where a request will be made once user responds to collect request. Click here to see about this request. |
X-PROVIDER-ID | Used for the cases where the merchant has multiple merchant IDs |
{
"merchantId":"MERCHANTUAT",
"transactionId":"TX123456789",
"merchantOrderId":"M123456789",
"amount":100,
"instrumentType":"MOBILE",
"instrumentReference":"9999999999",
"message":"collect for XXX order",
"email":"[email protected]",
"expiresIn":180,
"shortName":"DemoCustomer",
"storeId":"store1",
"terminalId":"terminal1"
}
{
"request": "eyAgCiAgICJtZXJjaGFudElkIjoiTUVSQ0hBTlRVQVQiLAogICAidHJhbnNhY3Rpb25JZCI6IlRYMTIzNDU2Nzg5IiwKICAgIm1lcmNoYW50T3JkZXJJZCI6Ik0xMjM0NTY3ODkiLAogICAiYW1vdW50IjoxMDAsCiAgICJpbnN0cnVtZW50VHlwZSI6Ik1PQklMRSIsCiAgICJpbnN0cnVtZW50UmVmZXJlbmNlIjoiOTk5OTk5OTk5OSIsCiAgICJtZXNzYWdlIjoiY29sbGVjdCBmb3IgWFhYIG9yZGVyIiwKICAgImVtYWlsIjoiYW1pdHh4eDc1QGdtYWlsLmNvbSIsCiAgICJleHBpcmVzSW4iOjE4MCwKICAgInNob3J0TmFtZSI6IkRlbW9DdXN0b21lciIsCiAgICJzdG9yZUlkIjoic3RvcmUxIiwKICAgInRlcm1pbmFsSWQiOiJ0ZXJtaW5hbDEiCn0="
}
Parameter Name | Type | Description | Mandatory |
---|---|---|---|
merchantId | String | Unique Merchant ID assigned to the merchant by PhonePe | Yes |
transactionId | String | Unique Transaction ID generated by the merchant to track this request to PhonePe transactionId length Should be unique for each collect request.should be less than 38 characters. | Yes |
merchantOrderId | String | Unique Order ID generated by the merchant merchantOrderId length should be less than 48 characters. | Yes |
amount | Long | Amount in Paisa | Yes |
instrumentType | ENUM | Has the value MOBILE | Yes |
instrumentReference | String | Mobile number of the user | Yes |
expiresIn | Long | expire time of payment completion.Payment should be completed with in this time else will be markedfailed . (default 30 days) | Yes |
message | String | Recommended to pass transaction id, order id and invoice number . | No |
email | String | Email Id of User | No |
shortName | String | Customer Name | No |
subMerchant | String | Sub-category of the merchant | No |
storeId | String | Store Id of store. Should be unique across. Special characters like " ", ",", "@" etc. are not allowed. Length should be lesser than 38 characters | Yes |
terminalId | String | Terminal Id of store. Should be unique for a store. Special characters like " ", ",", "@" etc. are not allowed. Length should be lesser than 38 characters | No |
{
"success": true,
"code": "SUCCESS",
"message": "Your request has been successfully completed.",
"data": {
"transactionId": "55fe801b-1092-461a-8480-c80d9781498a",
"amount": 300,
"merchantId": "MERCHANTUAT",
"providerReferenceId": "C2111161249027983263789"
}
}
Parameter Name | Type | Description |
---|---|---|
success | BOOLEAN | Success status of the request |
code | ENUM | See below section for list of codes |
message | STRING | Short message about status of request |
transactionId | STRING | Unique Transaction ID generated by the merchant to track this request to PhonePe |
merchantId | STRING | Unique Merchant ID assigned to the merchant by PhonePe |
amount | LONG | Transaction amount in paise |
providerReferenceId | STRING | PhonePe transaction Id |
mobileNumber | STRING | Mobile Number |
The code in the above API response could be:
SUCCESS
: Collect was successfully sent to VPAINTERNAL_SERVER_ERROR
: Something went wrong. Need to validate through check transaction status API first to know the payment status.INVALID_TRANSACTION_ID
: TransactionId in request was duplicateBAD_REQUEST
: Some mandatory parameter was missingAUTHORIZATION_FAILED
: Checksum sent in header was not valid
When the user responds to the collect request sent by the merchant, a request is sent to either the URL provided in X-CALLBACK-URL or the merchant's registered callback URL. By default, this is a POST request.
Note:
- The callback would be sent only for success/Failed scenarios. For pending cases, there won't be any callback. For such transactions payment status should be checked with below API.
- If payment is in pending state, Merchant should display a message "Payment is in progress, please wait for sometime."
- The payment will always be closed within the expiry time passed in the collect request.