Redirect and sample
Merchants have to specify redirect urls in the transaction request under the Postback node. Urls have to be specified for two payment status outcomes of payment requests:
- Successful payment
- Failed payment
A Redirect is executed after consumers submit payment details. Consumers are then redirected to url corresponding with the payment status of the payment request. Upon a successful payment the consumer is redirected to the url which is set in the UrlCompleted field of the Contract.Postback request. Upon payment rejection or fail, the consumer is redirected to the url set in the UrlError field of Contract.Postback request.
Often consumers submit payment details, kick off payment processing, and close the browser which causes the redirect not to be triggered. The payment is processed, however the status of the payment is unclear for the merchant as the redirect did not take place. Therefore postback notifications are sent asynchronously in order to inform merchants of the payment status.
The Redirect is an HTML GET, including values offering merchants more information regarding the payment. All values will be appended as GET parameters. The append process takes into account whether there already is a “?” or not in the UrlCompleted / UrlError page. Custom query string parameters can be used in UrlCompleted and UrlError fields. Please be aware that these parameters are publicly exposed and therefore should not contain any sensitive values. Do make sure to avoid name-clashes.
The redirect uses a checksum to allow verification of the content of the data. The checksum is a digital signature that authenticates the sender of the message. This prevents others from tampering and sending payment requests in your name. It also ensures that any received response or postback is sent by ICEPAY. Validation of the checksum is therefore crucial.
How to calculate the checksum
The checksum calculation for the redirect use the individual fields that are sent as GET query parameters by concatenating the values separated by the pipe (|) character in the following order: ContractProfileId|StatusCode|StatusDetails|Reference|TransactionId|ProviderTransactionId|PaymentMethod|Issuer|AmountInCents|CurrencyCode
Calculate the HMACSHA256-hash of this string and compare it with the checksum sent in the query parameters. The checksum is in HEX format.
Sample of a success URL: