Notifications
Notifications (webhooks) are asynchronous responses from Payture with the results of processed requests.
Notification methods
Notification examples
Event code: [EnginePaySuccess]
Is3DS: [False]
ForwardedTo: [NotForwarded]
Notification: [EnginePaySuccess]
MerchantContract: [Merchant]
Success: [True]
TransactionDate: [08.05.2019 15:36:27]
ErrCode: [NONE]
OrderId: [e83f0323-fca0-0f91-9db9-393523563bc5]
Amount: [12677]
MerchantId: [1]- HTTP POST — an HTTP POST request. By default, the request is sent once. If needed, you can have Payture support configure the number of notification retry attempts and the interval between them (retries are made if a "200 OK" response is not received). The request body is a URL-encoded string containing key-value pairs separated by the "&" (ampersand) character. Keys and values are separated by the "=" (equals) character.
- Email — a message to the specified address, sent once.
For a detailed description of notifications — their structure, options for extending the parameter set and a description of all notification parameters — see the Notifications 2.0 (in Russian) document.
Setting up notifications
When setting up test access to the payment gateway, the Merchant sends a setup request to Payture support. The request must specify the chosen notification method and the address for receiving notifications, and list the operations for which notifications must be sent. If needed, also list any additional parameters to be included in the notification.
When you switch to production, all notification method parameters are set by default to the same values as the corresponding test access parameters.
Changes to the current notification parameters are made upon a separate request from the Merchant to Payture support.
Additional security
Examples of encrypted notifications
DATA=4Rk65RLgsa7fUBoB72rz3TwrL3nHouyDQf91kK2eAPEEIp9DYqPFm0AnJh2eQBTcPVsfG9F8XzGtMu0zUuuxU%2FNxUVaxGDFw54n3kb5d%2FdnUMU2HaGeFTHGm%2F2p9JwmtTow82ZszX9e10u07a9x5xmn%2B3VXRJNttFcsiDBCuH3qdEmBYo9EhOVROjngki1aGucw0ZL3ifY4MEPbQrj0IWWcQ3LBGe2jhcaXc6iAGyKiDQZKymW0PwDvc3YAO29POzP0YB7tJtwPjIJgr%2FOSt31030P7hCtjM2XYjGPN4iy%2Fi2CV5bCw8ve01ZWP8XkPFAt the Merchant's request, to improve payment security, encryption with the AES-256-ECB algorithm can be applied to the HTTP POST notification method. In this case, the request body contains a single DATA parameter whose value is an encrypted string containing key-value pairs separated by the ";" (semicolon) character. Keys and values are separated by the "=" (equals) character.
Encryption keys are exchanged during setup and can be replaced later, at the initiative of either party.
Payture API notifications
| Operation | Possible notifications |
|---|---|
| api/Pay | Success: EngineBlockSuccess, EngineChargeSuccess, EnginePaySuccess Fail: EnginePayFail, EngineBlockFail, EngineChargeFail Pending: EngineBlockPending, EngineChargePending |
| api/Block | Success: EngineBlockSuccess Fail: EngineBlockFail Pending: EngineBlockPending |
| api/Charge | Success: EngineChargeSuccess Fail: EngineChargeFail Pending: EngineChargePending |
| api/Refund | Success: EngineRefundSuccess Fail: EngineRefundFail Pending: EngineRefundPending Pending: EngineRefundPending |
| api/Unblock | Success: EngineUnblockSuccess Fail: EngineUnblockFail Pending: EngineUnblockPending |
InPay notifications
| Operation | Possible notifications |
|---|---|
| apim/Pay | Success, Fail or Pending: MerchantPay, MerchantBlock Success: EngineBlockSuccess, EngineChargeSuccess, EnginePaySuccess Fail: EngineBlockFail, EngineChargeFail, EnginePayFail Pending: EngineBlockPending, EngineChargePending |
| apim/Charge | Success: EngineChargeSuccess Fail: EngineChargeFail Pending: EngineChargePending |
| apim/Refund | Success, Fail or Pending: MerchantRefund Success: EngineRefundSuccess Fail: EngineRefundFail Pending: EngineRefundPending |
| apim/Unblock | Success: EngineUnblockSuccess Fail: EngineUnblockFail Pending: EngineUnblockPending |
eWallet notifications
| Operation | Possible notifications |
|---|---|
| vwapi/Pay | Success: EngineBlockSuccess, EngineChargeSuccess, CustomerPaySuccess, EnginePaySuccess Fail: EngineBlockFail, EngineChargeFail, CustomerPayFail, EnginePayFail Pending: EngineBlockPending, EngineChargePending |
| vwapi/Refund | Success: CustomerRefundSuccess, EngineRefundSuccess Fail: CustomerRefundFail, EngineRefundFail Pending: EngineRefundPending, CustomerRefundPending |
| vwapi/Charge | Success: EngineChargeSuccess Fail: EngineChargeFail Pending: EngineChargePending |
| vwapi/Unblock | Success: EngineUnblockSuccess Fail: EngineUnblockFail Pending: EngineUnblockPending |
| vwapi/Add | Success: EngineBlockSuccess, CustomerAddSuccess Fail: EngineBlockFail, CustomerAddFail Pending: EngineBlockPending |
| vwapi/Remove | Success or Fail: CustomerDeleteCard |
Receipt service notifications
| Possible notifications |
|---|
| ChequeSent, ChequeNotSent, ChequeAccepted, ChequeRejected, ChequeCreated, ChequeTimeout, ChequeNotAccepted |
ChargeBack notifications
| Possible notifications |
|---|
| ChargeBack |
Notification descriptions
| Name | Description | Example (Email) |
|---|---|---|
| EnginePaySuccess | Successful charge of funds in a one-step payment | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EnginePaySuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 12:58:16]ErrCode: [NONE]OrderId: [636694163154551367]Amount: [3500] |
| EnginePayFail | Failed charge of funds in a one-step payment | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EnginePayFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [09.08.2018 14:30:01]ErrCode: [AMOUNT_EXCEED]OrderId: [636694218513740423]Amount: [232] |
| EngineBlockSuccess | Successful hold of funds | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EngineBlockSuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 13:02:35]ErrCode: [NONE]OrderId: [636694166050528637]Amount: [2500] |
| EngineBlockFail | Failed hold of funds | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EngineBlockFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [09.08.2018 14:30:01]ErrCode: [AMOUNT_EXCEED]OrderId: [636694218513740423]Amount: [232] |
| EngineBlockPending | Hold of funds in progress | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EngineBlockPending]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 14:38:01]ErrCode: [NONE]OrderId: [636694218513739450]Amount: [2528] |
| EngineChargeSuccess | Successful capture of held funds | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EngineChargeSuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 14:25:08]ErrCode: [NONE]OrderId: [636694215634212517]Amount: [300] |
| EngineChargeFail | Failed capture of held funds | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EngineChargeFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [09.08.2018 14:31:33]ErrCode: [PROCESSING_ERROR]OrderId: [636694219488092941]Amount: [2800] |
| EngineChargePending | Charge of held funds in progress | ExampleIs3DS: [False]ForwardedTo: [NotForwarded]Notification: [EngineChargePending]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 14:39:33]ErrCode: [NONE]OrderId: [636694219488099943]Amount: [2342] |
| EngineUnblockSuccess | Successful release of held funds | ExampleIs3DS: [False]NewAmount: [0]OrderId: [636694215745929202]Amount: [1400]Notification: [EngineUnblockSuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 14:25:19]ErrCode: [NONE] |
| EngineUnblockFail | Failed release of held funds | ExampleIs3DS: [False]NewAmount: [1900]OrderId: [636694219992986858]Amount: [1900]Notification: [EngineUnblockFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [09.08.2018 14:32:24]ErrCode: [PROCESSING_ERROR] |
| EngineUnblockPending | Release of held funds in progress | ExampleIs3DS: [False]NewAmount: [2000]OrderId: [636694219992986858]Amount: [2000]Notification: [EngineUnblockPending]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 14:39:24]ErrCode: [NONE] |
| EngineRefundSuccess | Successful refund | ExampleIs3DS: [False]NewAmount: [0]OrderId: [636694215684050471]Amount: [800]Notification: [EngineRefundSuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [09.08.2018 14:25:13]ErrCode: [NONE] |
| EngineRefundFail | Failed refund | ExampleIs3DS: [False]NewAmount: [200]OrderId: [636694220420935985]Amount: [200]Notification: [EngineRefundFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [09.08.2018 14:33:06]ErrCode: [PROCESSING_ERROR] |
| EngineRefundPending | Refund in progress | ExampleIs3DS: [False]NewAmount: [200]OrderId: [636694220420999956]Amount: [300]Notification: [EngineRefundPending]MerchantContract: [Merchant]Success: [False]TransactionDate: [09.08.2018 14:53:06]ErrCode: [NONE] |
| MerchantBlock | Hold of funds (with the Success=True/False parameter) | ExampleSessionId: [43bb096a-f8ed-4dcf-824f-035b5f3a7b86]Is3DS: [False]ForwardedTo: [NotForwarded]Notification: [MerchantBlock]MerchantContract: [Merchant]Success: [True]TransactionDate: [10.08.2018 14:50:42]ErrCode: [NONE]OrderId: [d424050f-4e22-40be-85ee-19fcc1646688]Amount: [102] |
| MerchantPay | Charge of funds (with the Success=True/False parameter) | ExampleSessionId: [ab157c83-5a9d-4dde-b5f4-c8b448e607ff]Is3DS: [False]ForwardedTo: [NotForwarded]Notification: [MerchantPay]MerchantContract: [Merchant]Success: [True]TransactionDate: [10.08.2018 14:49:26]ErrCode: [NONE]OrderId: [17f76c0c-177f-46cb-b35c-620ed5b1189c]Amount: [102] |
| MerchantRefund | Refund (with the Success=True/False parameter) | ExampleIs3DS: [False]NewAmount: [0]OrderId: [b3ee1dd0-8fa3-41d7-96e7-537822b45d5a]Amount: [102]Notification: [MerchantRefund]MerchantContract: [Merchant]Success: [True]TransactionDate: [10.08.2018 14:51:43]ErrCode: [NONE] |
| CustomerAddSuccess | Successful card registration | ExampleCardNumber: [411111xxxxxx0023]CardId: [2770521a-597f-4a8d-b283-d9f5f8257589]VWUserLgn: [101@ya.ru]CardHolder: [CARD HOLDER]OrderId: [[CUSTOMERS_ADD]-[9416342]]Amount: [101]ExpDate: [12/2018]Notification: [CustomerAddSuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [10.08.2018 12:21:30]ErrCode: [NONE] |
| CustomerAddFail | Failed card registration | ExampleCardNumber: [411111xxxxxx0080]CardId: []VWUserLgn: [101@ya.ru]CardHolder: [CARD HOLDER]ExpDate: [12/2018]Notification: [CustomerAddFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [10.08.2018 12:20:35]ErrCode: [ISSUER_CARD_FAIL] |
| CustomerPaySuccess | Successful charge of funds | ExampleIs3DS: [False]SessionId: [b7d55d5b-c323-4f9f-9dc4-4e864011b0c9]CardNumber: [411111xxxxxx0023]CardId: [d85a6a7f-f908-4f02-a8bfdd9d33561213]VWUserLgn: [101@ya.ru]ForwardedTo: [NotForwarded]Notification: [CustomerPaySuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [10.08.2018 14:02:27]ErrCode: [NONE]OrderId: [1fb56e1f-a533-407d-bca3-cc2c8ef87f04]Amount: [102] |
| CustomerPayFail | Failed charge of funds | ExampleIs3DS: [False]SessionId: [1c3ab2b6-944e-489f-a686-c977c6d9fbde]CardNumber: [330000xxxxxx0001]CardId: [87ee56bd-ec6e-4932-a8cbc85c81437824]VWUserLgn: [101@ya.ru]ForwardedTo: [NotForwarded]Notification: [CustomerPayFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [10.08.2018 14:08:20]ErrCode: [AMOUNT_EXCEED]OrderId: [2031feb6-f2e6-4c21-be67-c669b9786027]Amount: [102] |
| CustomerRefundSuccess | Successful refund | ExampleIs3DS: [False]NewAmount: [0]OrderId: [6075f4c6-a1d0-4366-a4ca-3100625bafa6]Amount: [102]Notification: [CustomerRefundSuccess]MerchantContract: [Merchant]Success: [True]TransactionDate: [10.08.2018 14:09:36]ErrCode: [NONE] |
| CustomerRefundFail | Failed refund | ExampleIs3DS: [False]NewAmount: [102]OrderId: [80cc7ce0-b2da-46bb-96e7-02416cdb7bc7]Amount: [102]Notification: [CustomerRefundFail]MerchantContract: [Merchant]Success: [False]TransactionDate: [10.08.2018 14:10:32]ErrCode: [PROCESSING_ERROR] |
| CustomerRefundPending | Refund in progress | ExampleIs3DS: [False]NewAmount: [102]OrderId: [80cc7ce0-b2da-46bb-96e7-02416cdb7bc7]Amount: [102]Notification: [CustomerRefundPending]MerchantContract: [Merchant]Success: [False]TransactionDate: [10.08.2018 14:50:32]ErrCode: [NONE] |
| CustomerDeleteCard | Card removal (with the Success=True/False parameter) | ExampleDeleteDate: [10.08.2018 12:30:50]CardNumber: [411111xxxxxx0023]CardId: [6fd5fa99-7e26-4637-84a4-8cc90d49c4d1]VWUserLgn: [101@ya.ru]CardHolder: [CARD HOLDER]ExpDate: [12/2018]Notification: [CustomerDeleteCard]MerchantContract: [Merchant]Success: [True]TransactionDate: [10.08.2018 12:30:50]ErrCode: [NONE] |
| ChequeSent | The receipt was sent to the Customer | ExampleOrderId: []ChequeId: [bfh7k8f3j582c17d]Type: [Pay]Status: [Created]Cheque: [Receipt in Base64]Notification: [ChequeSent]MerchantContract: [Merchant]Success: [True]TransactionDate: [15.08.2018 19:02:53]ErrCode: [NONE]MerchantId: [140] |
| ChequeNotSent | The receipt was not sent to the Customer | ExampleOrderId: []ChequeId: [bfh7k8f3j582c17d]Type: [Pay]Status: []Cheque: [Receipt in Base64]Notification: [ChequeNotSent]MerchantContract: [Merchant]Success: [True]TransactionDate: [15.08.2018 19:02:53]ErrCode: [NONE] |
| ChequeCreated | The receipt was created | ExampleOrderId: []ChequeId: [bfh7k8f3j582c17d]Type: [Pay]Status: [Created]Cheque: [Receipt in Base64]Notification: [ChequeCreated]MerchantContract: [Merchant]Success: [True]TransactionDate: [15.08.2018 19:02:52]ErrCode: [NONE]MerchantId: [140] |
| ChequeAccepted | The receipt was accepted | ExampleOrderId: [dfe29039-c795-44aa-8297-ae61e7102fc9]ChequeId: []Type: [Pay]Status: [Accepted]Cheque: []Notification: [ChequeAccepted]MerchantContract: [Merchant]Success: [True]TransactionDate: [15.08.2018 16:48:04]ErrCode: [NONE]MerchantId: [140] |
| ChequeNotAccepted | The receipt was not accepted by the online cash register service | ExampleOrderId: [dfe29039-c795-44aa-8297-ae61e7102fc9]ChequeId: []Type: [Pay]Status: [NotAccepted]Cheque: []Notification: [ChequeNotAccepted]MerchantContract: [Merchant]Success: [True]TransactionDate: [15.08.2018 16:48:04]ErrCode: [NONE] |
| ChequeRejected | The receipt was rejected by the payment gateway | ExampleOrderId: []ChequeId: []Type: [Pay]Status: [Unknown]Cheque: []Notification: [ChequeRejected]MerchantContract: [Merchant]Success: [False]TransactionDate: [15.08.2018 16:27:26] ErrCode: [] |
| ChequeTimeout | The receipt was not sent within the allowed time | ExampleOrderId: [dfe29039-c795-44aa-8297-ae61e7102fc9]ChequeId: [636699484844436085331]Type: [Normal]Status: [Accepted]Cheque: []Notification: [ChequeTimeout]MerchantContract: [Merchant]Success: [False]TransactionDate: [15.08.2018 16:54:05]ErrCode: [CHEQUE_TIMEOUT] |
| ChargeBack | Chargeback | ExampleOrderId: [17f76c0c-177f-46cb-b35c-620ed5b1189c]Amount: [1500]ChargeBackDate: [27.08.2018 12:17:26]CardHolder: [CARD HOLDER]PANMask: [411111xxxxxx0080]Notification: [ChargeBack]MerchantContract: [Merchant]Success: [False]TransactionDate: [15.08.2018 16:27:26]ErrCode: [] |
