Praxis Wiki logo

Payment API Notification webhook


Notification webhook is sent in case of asynchronous flow (3D Secure confirmation by the customer) - when the transaction status has changed to it's final status, usually it's confirmation, cancellation or timeout.

The asynchronous flow can be recognized by the transaction status received in response - pending_async.

{danger.fa-exclamation} IMPORTANT #1: In case if your API response contains "status":-1 or responds in unrecognized format, the notification will be resent automatically within approximately 5 minutes.


{danger.fa-exclamation} IMPORTANT #2: It is important to always pay attention at charge_amount. Sometimes the amount processed differs from amount due to conversion rate (especially for crypto currencies) or fees applied.


{danger.fa-exclamation} IMPORTANT #3: Sometimes transaction_id (PSP transaction identifier) is empty, this may happen in the cases when the PSP has rejected the processing attempt due to input validation or payment service unavailability.

REQUEST PARAMETERS

Variable Type Description
transaction_type varchar(16) Required. Transaction type. Allowed values are:
sale (deposit)
payout (withdrawal)
refund (return deposit funds)
authorize (authorization and capture)
transaction_status varchar(16) Required.

Deposit
- pending - processing initiated, final response expected from PSP
- pending_async - customer is sent to 3DSecure verification or EWallet to finalize the transaction
- authorized - transaction authorized, capture is expected
- approved - processing was successful
- declined (obsolete)- processing failed
- rejected - processing failed
- chargeback - customer requested to get funds back
- reversed - refund done at PSP side
- cancelled - transaction cancelled by agent (manager) using the Agent API or the merchant dashboard at Praxis
- error - processing or configuration error

Payout
- requested - merchant action/approval expected
- pending_async - customer is sent to 3DSecure verification or EWallet to finalize the transaction
- authorized - transaction authorized by manager, manual processing is expected
- in progress - processing at PSP side
- approved - processing was successful
- rejected - processing cancelled by the merchant or client
- reversed - refund done at PSP side
- error - processing or configuration error
transaction_id varchar(50) Optional. PSP transaction identifier
trace_id int(11) Required. transaction identifier
order_id varchar(50) sale - Optional. Transaction identifier in your system
payout - Required. Transaction identifier in your system
application_key varchar(32) Required. Identifier of your application (website)
pin varchar(50) Required. Unique customer id in your system
amount int(20) Required. Transaction amount in cents
Please note: for certain currencies (see full list here) there is a fraction other than 100 cents per unit, this is important if you multiply by 100 to send the amount in cents
currency varchar(3) Required. Transaction currency
charge_amount int(20) Required. Amount (in actual processing currency) in cents.
Please note: for certain currencies (see full list here) there is a fraction other than 100 cents per unit, this is important if you multiply by 100 to send the amount in cents
charge_currency varchar(3) Required. Actual currency processed
payment_method varchar(50) Required. Payment method
payment_processor varchar(50) Required. Payment processor
gateway varchar(32) Optional. Gateway doing the processing
created_by varchar(50) Optional. Transaction was created by
edited_by varchar(50) Optional. Transaction was edited by
auth_token varchar(32) Optional. Auth token provided upon Cashier session init call
merchant_id varchar(50) Required. Merchant API client account identifier
card_number varchar(19) Optional. Customer card number (4444 44** **** 1233)
card_type varchar(10) Optional. Customer card type (AMEX, DinersClub, Discover, Electron, JCB, Maestro, MasterCard, Mir, VISA)
card_exp varchar(8) Optional. Customer card exp (10/2023)
account_identifier varchar(256) Optional. Customer account ID or login at PSP
cascade_level int(2) Optional. Transaction retry number
is_cascade int(1) Optional. Is this transaction goes through cascade
error_code varchar(32) Optional. Error code for rejected transactions
error_details varchar(256) Optional. Error description for rejected transactions
reference_id int(11) Optional. ID of transaction to reverse
version varchar(16) Required. API version
timestamp int(11) Required. Request time. URL will be active during 1 min after this time
variable1 varchar(256) Optional. Your custom field which will consist some neсessary information
variable2 varchar(256) Optional. Your custom field which will consist some neсessary information
variable3 varchar(256) Optional. Your custom field which will consist some neсessary information
signature varchar(96) Required. Request signature. Please refer to How to Build Signature for details on signing the request.

RESPONSE PARAMETERS

Variable Type Description
status int Required.
- 0 if the request was successful
- Negative integer if internal server/network error occurs
- Positive integer if application/logical error occurs
description varchar(256) Required. Accurate description of the result. Return the actual error for any exception as it helps to diagnose issues in production
timestamp int(11) Required. Request time. URL will be active during 1 min after this time
version varchar(16) Required. API version
signature varchar(96) Required. sha384 HASH code of response (same algorithm as request signature)

EXAMPLE

For example below: Merchant Secret = "MerchantSecretKey"

Request

curl -X POST \ https://api.merchant.com/v1/deposits/tx-1560610955 \
-H 'Content-Type: application/json' \
-d '{
    "account_identifier": null,
    "amount": 2500,
    "application_key": "Sandbox",
    "auth_token": "a60927468a5b32afe31468d780c57a32",
    "card_exp": "12\/2024",
    "card_number": "411111******1111",
    "card_type": "VISA",
    "cascade_level": null,
    "created_by": "INTERNET",
    "currency": "EUR",
    "edited_by": "INTERNET",
    "error_code": null,
    "error_details": null,
    "gateway": "s-pTSZyK23E1Ee5KZpcNbX_aFl0HuhQ0",
    "merchant_id": "Test-Integration-Merchant",
    "order_id": null,
    "payment_method": null,
    "payment_processor": "TestPP",
    "pin": "7",
    "reference_id": null,
    "timestamp": 1578878718,
    "trace_id": 756850,
    "transaction_id": "13348",
    "transaction_status": "approved",
    "transaction_type": "sale",
    "version": "1.2",
    "signature": "10a50f11c352be546b6d7ee8ef56d11c53e3d7e671684592eb77868f4cb4e87a04a0af7a44e0af3bb548619a5d2384ca"
}' 

Response (OK)

{
    "description":"Notification registered successfully",
    "status":0,
    "timestamp":1560644992,
    "version":"1.2",
    "signature":"8c9e2bc711f64671fec91dee9a948388496a1476ffc8c90de6d581ed3189f086432428fb7455bf074c0d8ce4c6949432"
}

Response (ERR)

{
    "description": "Notification handling failed",
    "status": 1,
    "timestamp": 1579217988,
    "version": "1.2",
    "signature": "6ba6e5a9072d18e3e3ed11ac1447e9362a5c88c288c3220fc0ad174ee7049428d7c57df4114b122490c3bf1f1a32332d"
}

Please refer to How to Build Signature for details on signing the request.

You are currently viewing version 3.4 Latest version here