When using a hosted payment page, Paynova will POST-redirect the customer back to your server upon completion of the payment session using one of the URLs provided in Initialize Payment.
POST fields
Field name | Data type & format | Description |
---|---|---|
ORDER_ID required | guid | Paynova's unique identifier for the order. |
SESSION_ID required | guid | Paynova's unique identifier for the current payment session. |
ORDER_NUMBER required | string | Your order number. |
SESSION_STATUS required | string | The current status of the payment session. Possible values: 0 - New The payment session is new. 1 - Completed All payments have been completed beneath the session. 2 - Cancelled The payment session has been cancelled. 3 - Expired The payment session has expired. |
SESSION_STATUS_ID required | int | Paynova's ID for the session status, according to the table above for SESSION_STATUS. |
CUSTOM_DATA_COUNT required | int | The number of custom data fields present in the request. |
CUSTOM_DATA_#_KEY required | string | The key of the custom data field. |
CUSTOM_DATA_#_VALUE required | string | The value of the custom data field. |
CURRENCY_CODE required | string (3) | The currency code of the transactions taken place. |
PAYMENT_COUNT required | int | The number of payments present in the request. |
PAYMENT_#_STATUS required | string | The current status of the payment. Possible values: 0 - Pending The payment is pending. 1 - Completed The payment has been fully paid. 2 - Cancelled The payment has been cancelled. 3 - Failed The payment failed. 4 - Authorized The payment is authorized (finalize or annul required). 5 - PartiallyCompleted The payment is partially paid. 6 - Annulled The payment has been annulled. |
PAYMENT_#_STATUS_ID required | int | Paynova's ID for the payment status, according to the table above for PAYMENT_#_STATUS. |
PAYMENT_#_TRANSACTION_ID required | long (18) | Paynova's unique transaction id for the payment. |
PAYMENT_#_AMOUNT required | decimal (#.##) | The amount of the transaction, two decimal points, decimal point as separator. Example: 123.45 |
PAYMENT_#_PAYMENT_METHOD_ID required | int | Paynova's ID of the payment method that was used/attempted for this payment. |
PAYMENT_#_PAYMENT_METHOD_NAME required | string | The textual name of the payment method. |
PAYMENT_#_ACQUIRER_ID required | int (4) | Paynova's ID for the acquirer over which the transaction was processed. |
PAYMENT_#_ACQUIRER_REFERENCE_ID conditional | string | The transaction reference id that the customer should see on their statement. Note that not all payment methods will have a value here for all payment statuses. |
PAYMENT_#_CARD_FIRST_FOUR conditional | string (4) | The first four digits of the card number. Conditions: > Only applicable for card payments.. |
PAYMENT_#_CARD_LAST_FOUR conditional | string (4) | The last four digits of the card number. Conditions: > Only applicable for card payments. |
PAYMENT_#_TIMESTAMP required | timestamp: YYYY-MM-DD HH:MM:SSZ | UTC timestamp of the time the payment was created. |
DCC: Additional fields
If DCC (Dynamic Currency Conversion) is used, the following fields will also be sent.
Field Name | Data Type : Format | Description |
---|---|---|
PAYMENT_#_DCC_AMOUNT required | decimal | The amount the customer paid in their home currency. |
PAYMENT_#_DCC_CURRENCY_CODE required | string (3) | The converted currency the customer paid in. |
PAYMENT_#_DCC_EXCHANGE_RATE required | decimal | The exchange rate at which the currency conversion took place. |
PAYMENT_#_DCC_EXCHANGE_RATE_SOURCE_NAME required | string | The source bank of the exchange rate. |
PAYMENT_#_DCC_EXCHANGE_RATE_SOURCE_TIME_STAMP required | timestamp: YYYY-MM-DD HH:MM:SSZ | UTC timestamp of the time the exchange rate was sourced. |
PAYMENT_#_DCC_PROVIDER required | string | The DCC provider name. |
PAYMENT_#_DCC_COMMISSION_PERCENTAGE required | decimal | The commission (markup) percentage of the currency conversion. |
Calculating the DIGEST
The DIGEST is calculated from the parameters included in the POST like this:
Start with this string:
ORDERID;SESSION_ID;ORDER_NUMBER;SESSION_STATUS;CURRENCY_CODE;
and then for each payment (1…n) you append:
PAYMENT#STATUS;PAYMENT#TRANSACTION_ID;PAYMENT#_AMOUNT;
Then append the secret key to the end.
Calculate a SHA1 based on the UTF-8 encoded bytes of that string and convert it to upper case, then you should have the same digest.