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 nameData type & formatDescription
ORDER_ID
required
guidPaynova's unique identifier for the order.
SESSION_ID
required
guidPaynova's unique identifier for the current payment session.
ORDER_NUMBER
required
stringYour order number.
SESSION_STATUS
required
stringThe 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
intPaynova's ID for the session status, according to the table above for SESSION_STATUS.
CUSTOM_DATA_COUNT
required
intThe number of custom data fields present in the request.
CUSTOM_DATA_#_KEY
required
stringThe key of the custom data field.
CUSTOM_DATA_#_VALUE
required
stringThe value of the custom data field.
CURRENCY_CODE
required
string (3)The currency code of the transactions taken place.
PAYMENT_COUNT
required
intThe number of payments present in the request.
PAYMENT_#_STATUS
required
stringThe 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
intPaynova'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
intPaynova's ID of the payment method that was used/attempted for this payment.
PAYMENT_#_PAYMENT_METHOD_NAME
required
stringThe 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
stringThe 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:SSZUTC 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 NameData Type : FormatDescription
PAYMENT_#_DCC_AMOUNT
required
decimalThe 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
decimalThe exchange rate at which the currency conversion took place.
PAYMENT_#_DCC_EXCHANGE_RATE_SOURCE_NAME
required
stringThe source bank of the exchange rate.
PAYMENT_#_DCC_EXCHANGE_RATE_SOURCE_TIME_STAMP
required
timestamp: YYYY-MM-DD HH:MM:SSZUTC timestamp of the time the exchange rate was sourced.
PAYMENT_#_DCC_PROVIDER
required
stringThe DCC provider name.
PAYMENT_#_DCC_COMMISSION_PERCENTAGE
required
decimalThe 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.