Sequence
Subscription Flow Type | Link to Refer |
---|---|
Subscription – UPI Intent Flow | Submit Auth Request -UPI Intent Flow |
Subscription – Collect Flow | Submit Auth Request – Collect Flow |
Subscription – QR Flow | Submit Auth Request – QR Flow |
Request Parameters | Submit Auth Request – Request Parameters |
Response Parameters | Submit Auth Request – Response Parameters |
S2S Callback | Submit Auth Request – S2S Callback |
Headers
Field | Mandatory | Description |
---|---|---|
Content-Type | Yes | application/json |
X-Verify | Yes | SHA256(base64 encoded payload + “/v3/recurring/auth/init” + salt key) + ### + salt index |
X-CALLBACK-URL | Yes | The callback URL to receive the server-to-server callback response. |
Subscription – UPI Intent Flow
UPI Autopay Intent – When authWorkflowType is TRANSACTION
SAMPLE Payload (ANDROID)
{
"merchantId": "MID12345",
"merchantUserId": "U123456789",
"subscriptionId": "OMS2006110139450123456789",
"authRequestId": "TX123456789",
"amount": 39900,
"paymentInstrument": {
"type": "UPI_INTENT",
"targetApp": "com.phonepe.app"
},
"deviceContext" : {
"deviceOS" : "ANDROID"
}
}
SAMPLE Payload (IOS)
{
"merchantId" : "MERCHANTUAT",
"subscriptionId" : "OMS2301191527473651197003",
"merchantUserId" : "5330F4FB-C66C-4646-8691-11544B580547",
"authRequestId" : "D2500CEFBBE481095A43D6D5B7A787F",
"amount" : 39900,
"paymentInstrument": {
"type": "UPI_INTENT",
"targetApp":"PHONEPE"
},
"deviceContext" : {
"deviceOS" : "IOS",
"merchantCallBackScheme" : "iOSIntentIntegration" //Only for iOS
}
}
Convert the JSON Payload to Base64 Encoded Payload
The above JSON request payload should be converted to the Base64 Encoded Payload and then the request should be sent in the below format.
SAMPLE Request (ANDROID)
{
"request":"ewogICJtZXJjaGFudElkIjogIk1JRDEyMzQ1IiwKICAibWVyY2hhbnRVc2VySWQiOiAiVTEyMzQ1Njc4OSIsCiAgInN1YnNjcmlwdGlvbklkIjogIk9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAogICJhdXRoUmVxdWVzdElkIjogIlRYMTIzNDU2Nzg5IiwKICAiYW1vdW50IjogMzk5MDAsCiAgInBheW1lbnRJbnN0cnVtZW50IjogewogICAgInR5cGUiOiAiVVBJX0lOVEVOVCIsCiAgICAidGFyZ2V0QXBwIjogImNvbS5waG9uZXBlLmFwcCIKICB9LAogICJkZXZpY2VDb250ZXh0IjogewogICAgImRldmljZU9TIjogIkFORFJPSUQiCiAgfQp9"
}
SAMPLE Request (IOS)
{
"request":"ewogICAgImFtb3VudCI6IDM5OTAwLCAKICAgICJhdXRoUmVxdWVzdElkIjogIkQyNTAwQ0VGQkJFNDgxMDk1QTQzRDZENUI3QTc4N0YiLCAKICAgICJkZXZpY2VDb250ZXh0IjogewogICAgICAgICJkZXZpY2VPUyI6ICJJT1MiLCAKICAgICAgICAibWVyY2hhbnRDYWxsQmFja1NjaGVtZSI6ICJpT1NJbnRlbnRJbnRlZ3JhdGlvbiIKICAgIH0sIAogICAgIm1lcmNoYW50SWQiOiAiTUVSQ0hBTlRVQVQiLCAKICAgICJtZXJjaGFudFVzZXJJZCI6ICI1MzMwRjRGQi1DNjZDLTQ2NDYtODY5MS0xMTU0NEI1ODA1NDciLCAKICAgICJwYXltZW50SW5zdHJ1bWVudCI6IHsKICAgICAgICAidGFyZ2V0QXBwIjogIlBIT05FUEUiLCAKICAgICAgICAidHlwZSI6ICJVUElfSU5URU5UIgogICAgfSwgCiAgICAic3Vic2NyaXB0aW9uSWQiOiAiT01TMjMwMTE5MTUyNzQ3MzY1MTE5NzAwMyIKfQ=="
}
UPI Autopay Intent – When authWorkflowType is PENNY_DROP
SAMPLE Payload (ANDROID)
{
"merchantId": "MID12345",
"merchantUserId": "U123456789",
"subscriptionId": "OMS2006110139450123456789",
"authRequestId": "TX123456789",
"paymentInstrument": {
"type": "UPI_INTENT",
"targetApp": "com.phonepe.app"
}
"deviceContext" : {
"deviceOS" : "ANDROID"
}
}
SAMPLE Payload (IOS)
{
"merchantId" : "MERCHANTUAT",
"subscriptionId" : "OMS2301191527473651197003",
"merchantUserId" : "5330F4FB-C66C-4646-8691-11544B580547",
"authRequestId" : "D2500CEFBBE481095A43D6D5B7A787F",
"paymentInstrument": {
"type": "UPI_INTENT",
"targetApp":"PHONEPE"
},
"deviceContext" : {
"deviceOS" : "IOS",
"merchantCallBackScheme" : "iOSIntentIntegration"
}
}
Convert the JSON Payload to Base64 Encoded Payload
The above JSON request payload should be converted to the Base64 Encoded Payload and then the request should be sent in the below format.
SAMPLE Request (ANDROID)
{
"request":"ewogICJtZXJjaGFudElkIjogIk1JRDEyMzQ1IiwKICAibWVyY2hhbnRVc2VySWQiOiAiVTEyMzQ1Njc4OSIsCiAgInN1YnNjcmlwdGlvbklkIjogIk9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAogICJhdXRoUmVxdWVzdElkIjogIlRYMTIzNDU2Nzg5IiwKICAicGF5bWVudEluc3RydW1lbnQiOiB7CiAgICAidHlwZSI6ICJVUElfSU5URU5UIiwKICAgICJ0YXJnZXRBcHAiOiAiY29tLnBob25lcGUuYXBwIgogIH0sCiAgImRldmljZUNvbnRleHQiOiB7CiAgICAiZGV2aWNlT1MiOiAiQU5EUk9JRCIKICB9Cn0="
}
SAMPLE Request (IOS)
{
"request":"ewogICJtZXJjaGFudElkIiA6ICJNRVJDSEFOVFVBVCIsCsKgICJzdWJzY3JpcHRpb25JZCIgOiAiT01TMjMwMTE5MTUyNzQ3MzY1MTE5NzAwMyIswqAgCsKgICJtZXJjaGFudFVzZXJJZCIgOiAiNTMzMEY0RkItQzY2Qy00NjQ2LTg2OTEtMTE1NDRCNTgwNTQ3IiwKwqAgImF1dGhSZXF1ZXN0SWQiIDogIkQyNTAwQ0VGQkJFNDgxMDk1QTQzRDZENUI3QTc4N0YiLAogICJwYXltZW50SW5zdHJ1bWVudCI6IHsKICAgICJ0eXBlIjogIlVQSV9JTlRFTlQiLAogICAgInRhcmdldEFwcCI6IlBIT05FUEUiCiAgfSwKwqAgImRldmljZUNvbnRleHQiIDogewrCoCDCoCAiZGV2aWNlT1MiIDogIklPUyIsCsKgIMKgICJtZXJjaGFudENhbGxCYWNrU2NoZW1lIiA6ICJpT1NJbnRlbnRJbnRlZ3JhdGlvbiIKwqAgfQp9"
}
Handling Android and iOS Intent
Android
- The value of “paymentInstrument.type” should be “UPI_INTENT“.
- The value of “paymentInstrument.targetApp”
- [Android] should be the package name of the UPI app selected for the payment. Supported Apps – PhonePe, Paytm, and BHIM UPI.
- To invoke the app-specific Intent, set the package name using setPackage() as shown below based on the app selected by the user.
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(intentUrl));
i.setPackage(APP_PACKAGE_NAME);
startActivityForResult(i, PHONEPE_REQUEST_CODE);
IOS
- The value of “paymentInstrument.type” should be “UPI_INTENT“.
- The value of “paymentInstrument.targetApp”
- [iOS] should be the static value of the UPI app selected by the user. Supported Apps(Values) – PhonePe(PHONEPE), PayTm(PAYTM) and Gpay (GPAY).
- For merchantCallbackScheme, Refer to this link.
Sample Response
SAMPLE RESPONSE (ANDROID)
{
"success": true,
"code": "SUCCESS",
"message": "Your request has been successfully completed.",
"data": {
"redirectType": "INTENT",
"redirectUrl": "upi://mandate?pn=SUBSCRIBEMID&pa=MID12345@ybl&tid=YBL6663638d0312408a8f54f7df8f1bd6b9&tr=P1812191027266848105909&am=399.00&mam=399.00&cu=INR&url=https://phonepe.com&mc=7299&tn=Payment%20for%20TXN123456789&utm_source=TXN123456789&utm_medium=MID12345&utm_campaign=SUBSCRIBE_AUTH"
}
}
SAMPLE RESPONSE (IOS – PhonePe)
{
"success": true,
"code": "SUCCESS",
"message": "Your request has been successfully completed.",
"data": {
"redirectType": "INTENT",
"redirectUrl": "ppe://mandate?pn=SUBSCRIBEMID&pa=MID12345@ybl&tid=YBL6663638d0312408a8f54f7df8f1bd6b9&tr=P1812191027266848105909&am=399.00&mam=399.00&cu=INR&url=https://phonepe.com&mc=7299&tn=Payment%20for%20TXN123456789&utm_source=TXN123456789&utm_medium=MID12345&utm_campaign=SUBSCRIBE_AUTH"
}
}
Subscription – Collect Flow
Collect – When authWorkflowType is TRANSACTION
{
"merchantId": "MID12345",
"merchantUserId": "U123456789",
"subscriptionId": "OMS2006110139450123456789",
"authRequestId": "TX123456789",
"amount": 39900,
"paymentInstrument": {
"type": "UPI_COLLECT",
"vpa": "test-vpa@ybl"
}
}
Convert the JSON Payload to Base64 Encoded Payload
The above JSON request payload should be converted to the Base64 Encoded Payload and then the request should be sent in the below format.
{
"request": "ewogICJtZXJjaGFudElkIjogIk1JRDEyMzQ1IiwKICAibWVyY2hhbnRVc2VySWQiOiAiVTEyMzQ1Njc4OSIsCiAgInN1YnNjcmlwdGlvbklkIjogIk9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAogICJhdXRoUmVxdWVzdElkIjogIlRYMTIzNDU2Nzg5IiwKICAiYW1vdW50IjogMzk5MDAsCiAgInBheW1lbnRJbnN0cnVtZW50IjogewogICAgInR5cGUiOiAiVVBJX0NPTExFQ1QiLAogICAgInZwYSI6ICJ0ZXN0LXZwYUB5YmwiCiAgfQp9"
}
Collect – When authWorkflowType is PENNY_DROP
{
"merchantId": "MID12345",
"merchantUserId": "U123456789",
"subscriptionId": "OMS2006110139450123456789",
"authRequestId": "TX123456789",
"paymentInstrument": {
"type": "UPI_COLLECT",
"vpa": "test-vpa@ybl"
}
}
Convert the JSON Payload to Base64 Encoded Payload
The above JSON request payload should be converted to the Base64 Encoded Payload and then the request should be sent in the below format.
{
"request": "ewogICJtZXJjaGFudElkIjogIk1JRDEyMzQ1IiwKICAibWVyY2hhbnRVc2VySWQiOiAiVTEyMzQ1Njc4OSIsCiAgInN1YnNjcmlwdGlvbklkIjogIk9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAogICJhdXRoUmVxdWVzdElkIjogIlRYMTIzNDU2Nzg5IiwKICAicGF5bWVudEluc3RydW1lbnQiOiB7CiAgICAidHlwZSI6ICJVUElfQ09MTEVDVCIsCiAgICAidnBhIjogInRlc3QtdnBhQHlibCIKICB9Cn0="
}
Subscription – Collect Flow
- The value of “paymentInstrument.type” should be UPI_COLLECT
- The value of “paymentInstrument.vpa” should be the UPI ID entered by the user.
Validate VPA
Kindly validate the VPA entered by the user using the Verify VPA API. Only if the VPA is valid then the Create Subscription API followed by Submit Auth Request API with VPA in the request payload have to be passed.
Sample Response
{
"success": true,
"code": "SUCCESS",
"message": "Your request has been successfully completed.",
"data": null
}
Subscription – QR Flow
QR – When authWorkflowType is TRANSACTION
{
"merchantId": "MID12345",
"merchantUserId": "U123456789",
"subscriptionId": "OMS2006110139450123456789",
"authRequestId": "TX123456789",
"amount": 39900,
"paymentInstrument": {
"type": "UPI_QR"
}
}
Convert the JSON Payload to Base64 Encoded Payload
The above JSON request payload should be converted to the Base64 Encoded Payload and then the request should be sent in the below format.
{
"request": "ewogICAgIm1lcmNoYW50SWQiOiAiTUlEMTIzNDUiLAogICAgIm1lcmNoYW50VXNlcklkIjogIlUxMjM0NTY3ODkiLAogICAgInN1YnNjcmlwdGlvbklkIjogIk9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAogICAgImF1dGhSZXF1ZXN0SWQiOiAiVFgxMjM0NTY3ODkiLAogICAgImFtb3VudCI6IDM5OTAwLAogICAgInBheW1lbnRJbnN0cnVtZW50IjogewogICAgICAgICJ0eXBlIjogIlVQSV9RUiIKICAgIH0KfQ=="
}
QR – When authWorkflowType is PENNY_DROP
{
"merchantId": "MID12345",
"merchantUserId": "U123456789",
"subscriptionId": "OMS2006110139450123456789",
"authRequestId": "TX123456789",
"paymentInstrument": {
"type": "UPI_QR"
}
}
Convert the JSON Payload to Base64 Encoded Payload
The above JSON request payload should be converted to the Base64 Encoded Payload and then the request should be sent in the below format.
{
"request": "ewogICAgIm1lcmNoYW50SWQiOiAiTUlEMTIzNDUiLAogICAgIm1lcmNoYW50VXNlcklkIjogIlUxMjM0NTY3ODkiLAogICAgInN1YnNjcmlwdGlvbklkIjogIk9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAogICAgImF1dGhSZXF1ZXN0SWQiOiAiVFgxMjM0NTY3ODkiLAogICAgInBheW1lbnRJbnN0cnVtZW50IjogewogICAgICAgICJ0eXBlIjogIlVQSV9RUiIKICAgIH0KfQ=="
}
Subscription – QR Flow
- The value of “paymentInstrument.type” should be UPI_QR
Sample Response
{
"success": true,
"code": "SUCCESS",
"message": "Your request has been successfully completed.",
"data": {
"redirectType": "QR",
"redirectUrl": "upi://mandate?mn=Autopay&ver=01&purpose=14&mid=SWIGGY8&am=499.00&pa=SWIGGY8%40ybl&cu=INR&mc=5812&mg=ONLINE&pn=Swiggy&Rev=Y&QRts=2022-01-17T11%3A27%3A01.168%2B05%3A30&Mode=24&QRexpire=2022-01-17T11%3A32%3A01.168%2B05%3A30&Amrule=MAX&txnType=CREATE&Validitystart=17012022&Validityend=17012023&qrMedium=00&Block=N&Share=Y&Tr=TX312131232223231234&Recur=ASPRESENTED&orgid=500044&sign=MEYCIQDjgF5nN2zh67CfJZ80/M1Tb4ElF+6QKiUoIsNSMf5X9QIhAJBDW0WPIStMzCIzLfsNM7xX1cRTUBzExBUGIPFT8RrZ"
}
}
Request Parameters
Field Name | Data Type | Mandatory | Description |
---|---|---|---|
merchantId | String | Yes | MID provide by PhonePe |
merchantUserId | String | Yes | User’s unique Id maintained by merchant |
subscriptionId | String | Yes | PhonePe subscription Id |
authRequestId | String | Yes | Merchant’s unique transaction Id Note: – authRequestId length should be less than 36 characters. – Should be alphanumeric only. |
amount | Long | Conditional | ● Mandatory when authWorkflowType is TRANSACTION
● Do not pass when |
paymentInstrument.type | String | Yes | ● UPI_INTENT – For UPI Intent flow ● UPI_COLLECT – For UPI Collect flow ● UPI_QR – For UPI QR flow |
paymentInstrument.targetApp | String | Conditional | Mandatory if paymentInstrument.type = UPI_INTENT
Possible values for iOS: Possible values for Android: |
paymentInstrument.vpa | String | Conditional | Mandatory if paymentInstrument.type = UPI_COLLECT |
Response Parameters
Field Name | Data Type | Description | Comments |
---|---|---|---|
redirectType | String | Values: ● WEB ● INTENT | The WEB redirectType is not supported in v1 |
redirectUrl | String | Based on the redirect type, url is either an intent url or web url. | The web url will not be returned in v1. |
code | String | “SUCCESS”, “INTERNAL_SERVER_ERROR”, “SUBSCRIPTION_NOT_FOUND”, “SUBSCRIPTION_EXPIRED”, “INVALID_SUBSCRIPTION_STATE”, “BAD_REQUEST”, “INVALID_TRANSACTION_ID” |
S2S Callback – Submit Auth Request
Callback for Submit Auth Request
The server to server callback for Submit Auth Request will have the “callbackType”: “AUTH”.
Validations
Validate the checksum and amount which has been passed with the response received in the Server to Server callback.
S2S Callback – ACTIVE state
When authWorkflowType is TRANSACTION
{
"response": "ewogICJzdWNjZXNzIjogdHJ1ZSwKICAiY29kZSI6ICJTVUNDRVNTIiwKICAibWVzc2FnZSI6ICJZb3VyIHN1YnNjcmlwdGlvbiBpcyBhY3RpdmUuIiwKICAiZGF0YSI6IHsKICAgICJjYWxsYmFja1R5cGUiOiAiQVVUSCIsCiAgICAibWVyY2hhbnRJZCI6ICJNSUQxMjM0NSIsCiAgICAiYXV0aFJlcXVlc3RJZCI6ICJUWDEyMzQ1Njc4OSIsCiAgICAidHJhbnNhY3Rpb25EZXRhaWxzIjogewogICAgICAicHJvdmlkZXJSZWZlcmVuY2VJZCI6ICJQMTgwNjE1MTMyMzA5MzkwMDU1NDk1NyIsCiAgICAgICJhbW91bnQiOiAzOTkwMCwKICAgICAgInN0YXRlIjogIkNPTVBMRVRFRCIsCiAgICAgICJwYXlSZXNwb25zZUNvZGUiOiAiU1VDQ0VTUyIsCiAgICAgICJwYXltZW50TW9kZXMiOiBbCiAgICAgICAgewogICAgICAgICAgIm1vZGUiOiAiQUNDT1VOVCIsCiAgICAgICAgICAiYW1vdW50IjogMzk5MDAsCiAgICAgICAgICAidXRyIjogIjgxNjYyNjUyMTYxNiIsCiAgICAgICAgICAiaWZzYyI6ICJIREZDMDAwMDk5OSIsCgkJCQkJIm1hc2tlZEFjY291bnROdW1iZXIiOiAiWFhYWFhYOTk5IiwKCQkJCQkidW1uIjogIjkxMjNkYWMzNTdkZTEyM2NiMmNiZDQ1MjgzNDEyMzA1QHlibCIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICAic3Vic2NyaXB0aW9uRGV0YWlscyI6IHsKICAgICAgInN1YnNjcmlwdGlvbklkIjogIk9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAogICAgICAic3RhdGUiOiAiQUNUSVZFIgogICAgfQogIH0KfQ=="
}
{
"success": true,
"code": "SUCCESS",
"message": "Your subscription is active.",
"data": {
"callbackType": "AUTH",
"merchantId": "MID12345",
"authRequestId": "TX123456789",
"transactionDetails": {
"providerReferenceId": "P1806151323093900554957",
"amount": 39900,
"state": "COMPLETED",
"payResponseCode": "SUCCESS",
"paymentModes": [
{
"mode": "ACCOUNT",
"amount": 39900,
"utr": "816626521616",
"ifsc": "HDFC0000999",
"maskedAccountNumber": "XXXXXX999",
"umn": "9123dac357de123cb2cbd45283412305@ybl"
}
]
},
"subscriptionDetails": {
"subscriptionId": "OMS2006110139450123456789",
"state": "ACTIVE"
}
}
}
When authWorkflowType is PENNY_DROP
{
"response": "ewogICJzdWNjZXNzIjogdHJ1ZSwKICAiY29kZSI6ICJTVUNDRVNTIiwKICAibWVzc2FnZSI6ICJZb3VyIHN1YnNjcmlwdGlvbiBpcyBhY3RpdmUuIiwKICAiZGF0YSI6IHsKICAgICJtZXJjaGFudElkIjogIk1JRDEyMzQ1IiwKICAgICJhdXRoUmVxdWVzdElkIjogIlRYMTIzNDU2Nzg5IiwKICAgICJzdWJzY3JpcHRpb25EZXRhaWxzIjogewogICAgICAic3Vic2NyaXB0aW9uSWQiOiAiT01TMjAwNjExMDEzOTQ1MDEyMzQ1Njc4OSIsCiAgICAgICJzdGF0ZSI6ICJBQ1RJVkUiCiAgICB9CiAgfQp9"
}
{
"success": true,
"code": "SUCCESS",
"message": "Your subscription is active.",
"data": {
"merchantId": "MID12345",
"authRequestId": "TX123456789",
"subscriptionDetails": {
"subscriptionId": "OMS2006110139450123456789",
"state": "ACTIVE"
}
}
}
S2S Callback – FAILED state
When authWorkflowType is TRANSACTION
{
"response": "ewogICJzdWNjZXNzIjogdHJ1ZSwKICAiY29kZSI6ICJTVUNDRVNTIiwKICAibWVzc2FnZSI6ICJZb3VyIHN1YnNjcmlwdGlvbiBpcyBmYWlsZWQuIiwKICAiZGF0YSI6IHsKICAgICJjYWxsYmFja1R5cGUiOiAiQVVUSCIsCiAgICAibWVyY2hhbnRJZCI6ICJNSUQxMjM0NSIsCiAgICAiYXV0aFJlcXVlc3RJZCI6ICJUWDEyMzQ1Njc4OSIsCiAgICAidHJhbnNhY3Rpb25EZXRhaWxzIjogewogICAgICAicHJvdmlkZXJSZWZlcmVuY2VJZCI6ICJQMTgwNjE1MTMyMzA5MzkwMDU1NDk1NyIsCiAgICAgICJhbW91bnQiOiAzOTkwMCwKICAgICAgInN0YXRlIjogIkZBSUxFRCIsCiAgICAgICJwYXlSZXNwb25zZUNvZGUiOiAiQVVUSE9SSVpBVElPTl9GQUlMRUQiLAogICAgICAicGF5bWVudE1vZGVzIjogWwogICAgICAgIHsKICAgICAgICAgICJtb2RlIjogIkFDQ09VTlQiLAogICAgICAgICAgImFtb3VudCI6IDM5OTAwLAogICAgICAgICAgInV0ciI6ICI4MTY2MjY1MjE2MTYiCiAgICAgICAgfQogICAgICBdCiAgICB9LAogICAgInN1YnNjcmlwdGlvbkRldGFpbHMiOiB7CiAgICAgICJzdWJzY3JpcHRpb25JZCI6ICJPTVMyMDA2MTEwMTM5NDUwMTIzNDU2Nzg5IiwKICAgICAgInN0YXRlIjogIkZBSUxFRCIKICAgIH0KICB9Cn0="
}
{
"success": true,
"code": "SUCCESS",
"message": "Your subscription is failed.",
"data": {
"callbackType": "AUTH",
"merchantId": "MID12345",
"authRequestId": "TX123456789",
"transactionDetails": {
"providerReferenceId": "P1806151323093900554957",
"amount": 39900,
"state": "FAILED",
"payResponseCode": "AUTHORIZATION_FAILED",
"paymentModes": [
{
"mode": "ACCOUNT",
"amount": 39900,
"utr": "816626521616"
}
]
},
"subscriptionDetails": {
"subscriptionId": "OMS2006110139450123456789",
"state": "FAILED"
}
}
}
When authWorkflowType is PENNY_DROP
{
"response": "ewogICJzdWNjZXNzIjogdHJ1ZSwKICAiY29kZSI6ICJTVUNDRVNTIiwKICAibWVzc2FnZSI6ICJZb3VyIHN1YnNjcmlwdGlvbiBpcyBmYWlsZWQuIiwKICAiZGF0YSI6IHsKICAgICJtZXJjaGFudElkIjogIk1JRDEyMzQ1IiwKICAgICJhdXRoUmVxdWVzdElkIjogIlRYMTIzNDU2Nzg5IiwKICAgICJzdWJzY3JpcHRpb25EZXRhaWxzIjogewogICAgICAic3Vic2NyaXB0aW9uSWQiOiAiT01TMjAwNjExMDEzOTQ1MDEyMzQ1Njc4OSIsCiAgICAgICJzdGF0ZSI6ICJGQUlMRUQiCiAgICB9CiAgfQp9"
}
{
"success": true,
"code": "SUCCESS",
"message": "Your subscription is failed.",
"data": {
"merchantId": "MID12345",
"authRequestId": "TX123456789",
"subscriptionDetails": {
"subscriptionId": "OMS2006110139450123456789",
"state": "FAILED"
}
}
}
Integration Steps on iOS App Side
- In your Info.plist, create or append a new Array type node LSApplicationQueriesSchemes to append the following values:
<array>
<string>ppemerchantsdkv1</string>
<string>ppemerchantsdkv2</string>
<string>ppemerchantsdkv3</string>
<string>gpay</string>
</array>