When integrating to the gateway, note that several fields have special considerations to be aware of. Those fields are listed here; your application should treat these correctly to avoid inconsistencies on requests and responses.
Every request to and response from the Gateway includes a SHA-512 HASH parameter. This is a security element to ensure that none of the sensitive request or response data has been modified by a “man-in-the-middle” attack. This is achieved by including all the sensitive fields into a string, which varies per request type, along with the Shared Secret, configured per terminal. This string is then used as the basis of an SHA-512 HASH.
When explaining the data structure for requests and responses, our API Specification is going to present in each section the formation rule of its Request HASH and its Response HASH. Those rules are going to look like this:
TERMINALID:ORDERID:AMOUNT:DATETIME:SECRET
The “:” (colon) used in the example above is the separator used to concatenate the elements in a string and it ALWAYS NEEDS TO BE ADDED to define the separation of two elements.
It's important to understand that the separator should only be used to separate two elements with values.
For example, if a HASH rule formation defines an element which your request doesn't have, you can't use the separator for that element.
Consider a HASH for the following data using the structure presented above:
Consider sha512 your method to apply the SHA-512 encryption, which receives the string formed with the data elements separated by the colon.
String hash = sha512("678002:300145858:325.56:15-3-2006:10:43:01:673:x4n35c32RT");
The final hash string variable would have the value of:
5b39821025c33a3c37560196f36af68668e46e82afc4017434d72e62dbc4c06781afc6364e992d5594656fb185c901ece65adf85e8822832b8985f602e533eba
Note that the sha512 method should always use a character encoding of UTF-8, when appropriate, as should all data sent to the payment gateway.
Remember to implement the specific hash rule for each request and response you decide to use from our solutions, exactly as they are described in each section. A few of them may seem similar, but they can differ in small details.
The card types that are supported by the Gateway in the US are:
The card types that are supported by the Gateway in Canada are:
Please note that Interac Debit (Canada) is not supported.
For testing purposes we recommend using the test card numbers in our Testing Guide.
The following is a list of currency types supported by the Gateway. Other may be added upon request.
CURRENCY | CURRENCY CODE | CODE |
---|---|---|
EURO | EUR | 978 |
BRITISH POUNDS | GBP | 826 |
UNITED STATES DOLLARS | USD | 840 |
AUSTRALIAN DOLLARS | AUD | 36 |
CANADIAN DOLLARS | CAD | 124 |
SWISS FRANC | CHF | 756 |
DANISH KRONE | DKK | 208 |
HONG KONG DOLLAR | HKD | 344 |
JAPANESE YEN | JPY | 392 |
NORWEGIAN KRONE | NOK | 578 |
NEW ZEALAND DOLLAR | NZD | 554 |
SWEDISH KRONA | SEK | 752 |
SOUTH AFRICAN RAND | ZAR | 710 |
CZECH KORUNA | CZK | 203 |
SINGAPORE DOLLAR | SGD | 702 |
THAI BAHT | THB | 764 |
ICELANDIC KRONA | ISK | 352 |
HUNGARIAN FORINT | HUF | 348 |
ARGENTINE PESO | ARS | 32 |
BAHAMIAN DOLLAR | BSD | 44 |
BAHRAINI DINAR | BHD | 48 |
BARBADOS DOLLAR | BBD | 52 |
BERMUDIAN DOLLAR | BMD | 60 |
CHINESE YUAN | CNY | 156 |
COLOMBIAN PESO | COP | 170 |
INDIAN RUPEE | INR | 365 |
ISRAELI SHEQEL | ILS | 376 |
KENYAN SHILLING | KES | 404 |
SOUTH KOREAN WON | KRW | 410 |
KUWAITI DINAR | KWD | 414 |
LATVIAN LATS | LVL | 428 |
MALAYSIAN RINGGIT | MYR | 458 |
MEXICAN PESO | MXN | 484 |
MOROCCAN DIRHAM | MAD | 504 |
OMANI RIAL | OMR | 512 |
PANAMANIAN BALBOA | PAB | 590 |
QUATARI RIAL | QAR | 634 |
RUSSIAN RUBLE | RUB | 643 |
SAUDI RIYAL | SAR | 682 |
TRINIDAD AND TOBAGO DOLLAR | TTD | 780 |
UAE DIRHAM | AED | 784 |
NEW TAIWAN DOLLAR | TWD | 901 |
VENEZUELAN BOLIVAR | VEF | 937 |
ROMANIAN LEU | RON | 946 |
TURKISH LIRA | TRY | 949 |
UKRAINIAN HRYVNIA | UAH | 980 |
POLISH ZLOTY | PLN | 985 |
BRAZILIAN REAL | BRL | 986 |
Custom Fields allow you to send data to our systems with transactions in name-value pairs so that it is stored and can be included in reports, receipts and for other uses. There are two different types of custom fields: Explicit and Implicit.
A Custom Field is set up to be one of three types:
Additionally to that, each Custom Field also defines how it is going to be used:
More details will be provided in each section about the use of the Custom Fields in their requests and responses, but be aware that the use of a Custom Field is limited by its configuration.
The configuration of Custom Fields involve two main steps: one realized at the Gateway side and another done at the Merchant side.
In case your application requires to use Custom Fields with Subscriptions, there's still one more configuration step: under the relevant Stored Subscription, the Custom Field needs to be selected.
After that, you can use start using the Custom Fields in your integration, but be sure all the Custom Fields you use are still in place and configured as you expect before putting your integration live.
To use a custom field with a request, first verify if the request you want to use allows custom field. If so, add to the request as many custom field tags as you need, using its original NAME at the NAME tag attribute and then send the request.
Example: registering a Secure Card with custom fields to include the client's loyalty system id (custom field ClientLSID) and the current amount of accumulated points (custom field ClientLSCP).
<SECURECARDREGISTRATION> ... ... <CUSTOMFIELD NAME="ClientLSID">343f34fsg68laocaw</CUSTOMFIELD> <CUSTOMFIELD NAME="ClientLSCP">2650</CUSTOMFIELD> ... </SECURECARDREGISTRATION>
Transaction descriptors describe a particular payment transaction in order to help the Card Holder to identify this transaction on his/ her bank statement or online bank interface. It's a good practice which helps Merchants to minimize the risk of chargebacks.
Our Dynamic Descriptor feature provides this capability to our Merchants.
The text that appears on the Card Holders statements will be composed of:
Not all Acquirer Banks/ Payment Processors allow this feature, so you need to know if your Terminal has the right one configured.
This feature works together with the Custom Field feature and has basically two main steps: one realized at the Gateway side and another done at the Merchant side.
Once you configured a Terminal with Dynamic Descriptors, different possibilities are going to be available, for example:
Case 01
PROPERTY | VALUE |
---|---|
Terminal Name | “Merchant Example” |
Dynamic Descriptor Prefix | “Order N.” |
Dynamic Descriptor Default Value | “Purchase at Merchant Example” |
Interface using the Dynamic Descriptor | Other |
Associated Custom Field to the Dynamic Descriptor | “Order Number” |
If a Transaction is sent to the gateway with a custom field order number “1805000453”, the Card Holder would see in his/ her bank statement the following additional information for the purchase: “Order N * 1234”.
If a Transaction is sent to the gateway with no order number, the Card Holder would see in his/ her bank statement the following additional information for the purchase: “Purchase at Merchant Example”.
Case 02
PROPERTY | VALUE |
---|---|
Terminal Name | “Merchant Example” |
Dynamic Descriptor Prefix | “Order N.” |
Dynamic Descriptor Default Value | “” |
Interface using the Dynamic Descriptor | Other |
Associated Custom Field to the Dynamic Descriptor | “Order Number” |
If a Transaction is sent to the gateway with a custom field order number “1805000453”, the Card Holder would see in his/ her bank statement the following additional information for the purchase: “Order N * 1234”.
If a Transaction is sent to the gateway with no order number, the Card Holder would see in his/ her bank statement the following additional information for the purchase: “Merchant Example”.
Case 03
PROPERTY | VALUE |
---|---|
Terminal Name | “Merchant Example” |
Dynamic Descriptor Prefix | “” |
Dynamic Descriptor Default Value | “” |
Interface using the Dynamic Descriptor | Other |
Associated Custom Field to the Dynamic Descriptor | “Order Number” |
If a Transaction is sent to the gateway, the Card Holder would see in his/ her bank statement the following additional information for the purchase: “Merchant Example”.
Some Acquiring Banks support Multi-currency Terminals. They allow Merchants processing transactions in one of a number of pre-defined currencies for a Terminal. These Terminals have their own terminal ID and may be identified with the letters ‘MC’ after the terminal ID.
It's important to understand that, when processing transactions with one of those Terminals using an integration, your solution has to consider that the Currency Type must be added to the request HASH calculation and is going to be added to the response HASH calculation. Details on the HASH calculation for requests and responses involving Multi-currency Terminals are provided by each feature when explaining the HASH body field.
We will inform you if your Terminal ID supports multi-currency. Contact our support team if you have any questions relating to multi-currency terminals.
The signature field is used by some of the features' requests, and follows a set of rules to be formed, as such:
MaxMind MinFraud is a complementary service that works with the HPP and XML integration methods.
When used, this service provides a score for the transaction between 0.01 and 100 (riskScore), effectively the percentage chance that it could be fraudulent.
Certain fields are required for performing fraud scoring on the transaction using the MaxMind MinFraud service. There is no charge for this service, and it can be enabled in the Terminal Setup section of our SelfCare System (Merchant Portal).
To use this service, make sure the terminal in use has this feature enabled and that your integration is providing the data necessary for the verification.
Learn more about this service on the MaxMind website.