Headers
Field | Mandatory | Description |
---|---|---|
Content-Type | Yes | application/json |
X-Verify | Yes | SHA256(base64 encoded payload + “/v3/recurring/subscription/cancel” + salt key) + ### + salt index |
X-CALLBACK-URL | Yes | The callback URL to receive the server to server callback response. |
{
"merchantId":"MID12345",
"merchantUserId":"U123456789",
"subscriptionId":"OMS2006110139450123456789",
}
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": "ewoJIm1lcmNoYW50SWQiOiJNSUQxMjM0NSIsCgkibWVyY2hhbnRVc2VySWQiOiJVMTIzNDU2Nzg5IiwKCSJzdWJzY3JpcHRpb25JZCI6Ik9NUzIwMDYxMTAxMzk0NTAxMjM0NTY3ODkiLAp9"
}
Request Parameters
Field Name | Data Type | Mandatory | Description |
---|---|---|---|
merchantId | String | Yes | Unique Id assigned to the merchant in the PhonePe system. Assigned during merchant onboarding. |
merchantUserId | String | Yes | Unique Customer Id maintained by the merchant |
subscriptionId | String | Yes | PhonePe generated Subscription Id |
{
"success": true,
"code": "SUCCESS",
"message": "Your subscription has been successfully suspended.",
"data": {
"subscriptionId": "OMS2006110139450123456789",
"state": "CANCEL_IN_PROGRESS"
}
}
Response Parameters
Field Name | Data Type | Description | Comments |
---|---|---|---|
subscriptionId | String | PhonePe Subscription Id | |
state | String | CANCEL_IN_PROGRESS | Inline state response is available only when the user authentication is not required |
Failure Response Fields Details
Field Name | Data Type | Description |
---|---|---|
message | String | |
code | String | Values can be: ● SUBSCRIPTION_NOT_FOUND ● SUBSCRIPTION_NOT_ACTIVE ● SUBSCRIPTION_EXPIRED ● SUBSCRIPTION_FAILED ● SUBSCRIPTION_REVOKE_IN_PROGRESS ● SUBSCRIPTION_ALREADY_REVOKED ● SUBSCRIPTION_CANCEL_IN_PROGRES ● INVALID_SUBSCRIPTION_STATE ● SUBSCRIPTION_ALREADY_CANCELLED |
S2S Callback – Cancel Subscription
Callback for Cancel Subscription
The server to server callback for Cancel Subscription will have the “callbackType”: “SUBSCRIPTION”.
Validations
Validate the checksum which has been passed in the response headers received in the Server to Server callback.
Callback Headers
Following are the response headers sent with a callback.
Header Name | Header Value |
---|---|
Content-Type | application/json |
X-VERIFY | SHA256(base64response + salt key) + ### + salt index |
Sample Response
{
"response":"eyJzdWNjZXNzIjp0cnVlLCJjb2RlIjoiU1VDQ0VTUyIsIm1lc3NhZ2UiOiJZb3VyIHN1YnNjcmlwdGlvbiByZXF1ZXN0IGhhcyBiZWVuIHJldm9rZWQuIiwiZGF0YSI6eyJjYWxsYmFja1R5cGUiOiJTVUJTQ1JJUFRJT04iLCJtZXJjaGFudElkIjoiTUVSQ0hBTlRVQVQiLCJtZXJjaGFudFN1YnNjcmlwdGlvbklkIjoiYTcyOGE4NGEtIiwic3Vic2NyaXB0aW9uRGV0YWlscyI6eyJzdWJzY3JpcHRpb25JZCI6Ik9NUzIxMDcyMTEyMzYzNDUzNTU4NzM3OTUiLCJzdGF0ZSI6IlJFVk9LRUQifX19"
}
{
"success": true,
"code": "SUCCESS",
"message": "Your subscription request has been cancelled.",
"data": {
"callbackType": "SUBSCRIPTION",
"merchantId": "MERCHANTUAT",
"merchantSubscriptionId": "a728a84a-",
"subscriptionDetails": {
"subscriptionId": "OMS2107211236345355873795",
"state": "CANCELLED"
}
}
}
{“method”:”post”,”url”:”/v3/recurring/subscription/cancel”,”auth”:”required”,”results”:{“codes”:[{“name”:””,”code”:”{\n \”success\”: true,\n \”code\”: \”SUCCESS\”,\n \”message\”: \”Your subscription has been successfully suspended.\”,\n \”data\”: {\n \”subscriptionId\”: \”OMS2006110139450123456789\”,\n \”state\”: \”CANCEL_IN_PROGRESS\”\n }\n}”,”language”:”json”,”status”:200},{“name”:””,”code”:”{\n \”success\”: false,\n \”code\”: \”SUBSCRIPTION_NOT_FOUND\”,\n \”message\”: \”No Subscription found with the given details.\”,\n \”data\”: {}\n}”,”language”:”json”,”status”:400}]},”params”:[{“name”:”Content-Type”,”type”:”string”,”enumValues”:””,”default”:”application/json”,”desc”:””,”required”:true,”in”:”header”,”ref”:””,”_id”:”60adeee6456229005a66586f”},{“name”:”X-VERIFY”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”SHA256(base64 encoded payload + \”/v3/recurring/subscription/cancel\” + salt key) + ### + salt index”,”required”:true,”in”:”header”,”ref”:””,”_id”:”60adeee6456229005a66586e”},{“name”:”request”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”base64 encoded payload”,”required”:true,”in”:”body”,”ref”:””,”_id”:”60b75a5b2c88440064baa036″},{“name”:”X-CALLBACK-URL”,”type”:”string”,”enumValues”:””,”default”:””,”desc”:”Dynamic callback URL for server to server callback”,”required”:false,”in”:”header”,”ref”:””,”_id”:”611b639d79490b001667708a”}],”apiSetting”:”63bb01b11abcf7046d98754c”,”examples”:{“codes”:[]}}
https://api-preprod.phonepe.com/apis/pg-sandbox