Eposnet: A Fiserv Global Digital Commerce Platform
Eposnet: A Fiserv Global Digital Commerce Platform
Eposnet: A Fiserv Global Digital Commerce Platform
Version: 2020-3
Contents
Getting Support 3
1. Introduction 4
2. Payment process options
Checkout option ‘classic’ 4
Checkout option ‘combinedpage’ 5
3. Getting Started 5
Checklist 5
ASP Example 5
PHP Example 6
Amounts for test transactions 7
4. Mandatory Fields 8
5. Optional Form Fields 9
6. Using your own forms to capture the data 13
payonly Mode 13
payplus Mode 13
fullpay Mode 14
Validity checks 15
7. Additional Custom Fields 16
8. Data Vault 17
9. Recurring Payments 18
10. Transaction Response 19
Response to your Success/Failure URLs 19
Server-to-Server Notification 21
Appendix I – How to generate a hash 232
Appendix II – ipg-util.asp 253
Appendix III – ipg-util.php 276
Appendix IV – Currency Code List 287
Appendix V – Payment Method List 321
You can e.g. let customers select their preferred payment method within your webshop and submit that payment
method in your request to Connect – or if you should prefer not to send the payment method, the Connect
solution will automatically show a payment method selection page to your customer where they can choose
from all payment methods that are activated for your store.
With three different modes, you can define the range of data that shall be captured by the payment platform:
• payonly: shows a hosted page to collect the minimum set of information for the transaction
(e. g. cardholder name, card number, expiry date and card code for a credit card transaction)
• payplus: in addition to the above, the payment gateway collects a full set of billing information on an
additional page
• fullpay: in addition to the above, the payment platform displays a third page to also collect shipping
information
The most important aspect around the usage of hosted payment pages is the security of sensitive cardholder
data. When you decide to let your customers enter their credit card details on the page that we provide and host
on our servers for this purpose, it facilitates your compliance with the Data Security Standard of the Payment
Card Industry (PCI DSS) as the payment processing is completely hosted by Fiserv.
This hosted page also shows your merchant name at the top and allows you to display a summary of the
purchased items to your customer.
3. Getting Started
This section provides a simple example on how to integrate your website using the “classic” checkout option in
payonly Mode. Examples are provided using ASP and PHP. This section assumes that the developer has a basic
understanding of his chosen scripting language.
Checklist
In order to integrate with the payment gateway, you must have the following items:
• Store Name
• Shared Secret
ASP Example
The following ASP example demonstrates a simple page that will communicate with the payment platform in
payonly mode.
When the cardholder clicks Submit, they are redirected to the Fiserv secure page to enter the card details. After
payment has been completed, the user will be redirected to the merchants receipt page. The location of the
receipt page can be configured.
<html>
<head><title>IPG Connect Sample for ASP</title></head>
<body>
<p><h1>Order Form</h1></p>
The code presented in Appendix II represents the included file ipg-util.asp. It includes code for generating a hash
as is required by Fiserv. The provision of a hash in the example ensures that this merchant is the only merchant
that can send in transactions for this store.
Note, the POST URL used is for integration testing only. When you are ready to go into production, please contact
Fiserv and you will be provided with the live production URL.
Note, the included file, ipg-util.asp uses a server side JavaScript file to build the hash. This file can be provided
on request. To prevent fraudulent transactions, it is recommended that the hash is calculated within your server
and JavaScript is not used like shown in the samples mentioned.
PHP Example
The following PHP example demonstrates a simple page that will communicate with the payment platform in
payonly mode.
<html>
<head><title>IPG Connect Sample for PHP</title></head>
<body>
<p><h1>Order Form</h1>
Note that the POST URL used in this example is for integration testing only. When you are ready to go into
production, please contact Fiserv and you will be provided with the live production URL.
The code presented in Appendix III represents the included file ipg-util.php. It includes code for generating a hash
as is required by Fiserv. The provision of a hash in the example ensures that this merchant is the only merchant
that can send in transactions for this store.
4. Mandatory Fields
Depending on the transaction type, the following form fields must be present in the form being submitted to the
payment platform (X = mandatory field). Please refer to this Integration Guide’s Appendixes for implementation
details in relation to alternative payment methods and the other product options.
PostAuth*
PreAuth*
Void
Sale
txntype 'sale’, 'preauth’, 'postauth’ or 'void’ X X X X
(preauth) (postauth (void)
(the transaction type – please note the (sale) )
Africa/Johannesburg
America/New_York
America/Sao_Paulo
Asia/Calcutta
Australia/Sydney
Europe/Amsterdam
Europe/Berlin
Europe/Dublin
Europe/London
Europe/Rome
txndatetime YYYY:MM:DD-hh:mm:ss X X X X
(exact time of the transaction)
• HMACSHA256
• HMACSHA384
• HMACSHA512
Please see a list of currencies and their ISO codes in Appendix IV.
cardFunction This field allows you to indicate the card function in case of combo cards which
provide credit and debit functionality on the same card. It can be set to ‘credit’
or ‘debit’.
The field can also be used to validate the card type in a way that transactions
where the submitted card function does not match the card’s capabilities will
be declined. If you e.g. submit “cardFunction=debit” and the card is a credit
card, the transaction will be declined.
customerid This field allows you to transmit any value, e. g. your ID for the customer.
dynamicMerchantName The name of the merchant to be displayed on the cardholder’s statement. The
length of this field should not exceed 25 characters. If you want to use this field,
please contact your local support team to verify if this feature is supported in
your country.
invoicenumber This field allows you to transmit any value, e. g. an invoice number or class of
goods. Please note that the maximum length for this parameter is 48
characters.
item1 up to item999 Line items are regular Connect integration key-value parameters (URL-encoded),
where:
The ‘item1’ to ‘item999’ parameters allow you to send basket information in the
following format:
id;description;quantity;item_total_price;sub_total;vat_tax;shipping
'shipping' always has to be set to '0' for single line item. If you want to include a
shipping fee for an order, please use the predefined id IPG_SHIPPING.
For other fees that you may want to add to the total order, you can use the
predefined id IPG_HANDLING.
When you want to apply a discount, you should include an item with a negative
amount and change accordingly the total amount of the order. Do not forget to
regard the ‘quantity’ when calculating the values e.g.: subtotal and VAT since
they are fixed by items.
Examples:
A;Product A;1;5;3;2;0
B;Product B;5;10;7;3;0
C;Product C;2;12;10;2;0
10
IPG_SHIPPING;Shipping costs;1;6;5;1;0
IPG_HANDLING;Transaction fee;1;6.0;6.0;0;0
language This parameter can be used to override the default payment page language
configured for your merchant store.
Language Value
Czech cs_CZ
Danish da_DK
Dutch nl_NL
Finnish fi_FI
French fr_FR
German de_DE
Greek el_GR
Hungarian hu_HU
Italian it_IT
Japanese ja_JP
Polish pl_PL
Slovak sk_SK
Spanish es_ES
Swedish sv_SE
merchantTransactionId Allows you to assign a unique ID for the transaction. This ID can be used to
reference to this transactions in a PostAuth or Void request
(referencedMerchantTransactionId).
mobileMode If your customer uses a mobile device for shopping at your online store you can
submit this parameter with the value ‘true’, when using the ‘classic’ checkout
option. This will lead your customer to a payment page flow that has been
specifically designed for mobile devices.
numberOfInstallments This parameter allows you to set the number of instalments for a Sale transaction
if your customer pays the amount in several parts.
11
Please note that for Direct Debit transactions, a maximum of 78 characters can
be submitted to the bank.
paymentMethod If you let the customer select the payment method (e. g. MasterCard, Visa) in
your shop environment or want to define the payment type yourself, transmit
the parameter ‘paymentMethod’ along with your Sale or PreAuth transaction.
If you do not submit this parameter, the payment gateway will display a drop-
down menu to the customer to choose from the payment methods available for
your shop.
refer This field describes who referred the customer to your store.
referencedSchemeTransactionId Credentials on file (COF) specific parameter. This field allows you to include in
your request ‘schemeTransactionId’ that has been returned in the response of
the initial transaction in order to provide a reference to the original transaction,
which stored the credentials for the first time.
responseFailURL The URL where you wish to direct customers after a declined or unsuccessful
transaction (your Sorry URL) – mandatory if not setup in Virtual Terminal /
Customization.
responseSuccessURL The URL where you wish to direct customers after a successful transaction
(your Thank You URL) – mandatory if not setup in Virtual Terminal /
Customization.
shipping This parameter can be used to submit the shipping fee, in the same format as
‘chargetotal’. If you submit ‘shipping’, the parameters ‘subtotal’ and ‘vattax’
have to be submitted as well. Note that the ‘chargetotal’ has to be equal to
‘subtotal’ plus ‘shipping’ plus ‘vattax’.
trxOrigin This parameter allows you to use the secure and hosted payment form
capabilities within your own application. Possible values are:
vattax This field allows you to submit an amount for Value Added Tax or other taxes,
e.g. GST in Australia. Please ensure the sub total amount plus shipping plus tax
equals the charge total.
12
payonly Mode
After your customer has decided how to pay, you present a corresponding HTML-page with a form to enter the
payment data as well as hidden parameters with additional transaction information.
In addition to the mandatory fields listed above, your form needs to contain the following fields (part of them
can be hidden):
Maestro
payplus Mode
Using payplus mode, it is possible to additionally transfer billing information to the payment platform. The
following table describes the format of these additional fields:
characters,
spaces, and
13
characters,
spaces, and
dashes limited to 96
characters,
including
spaces
characters,
including
spaces
characters,
including
spaces
characters,
including
spaces
characters,
including
spaces
fullpay Mode
Using fullpay mode, it is possible to additionally transfer shipping information to the payment platform. The
billing information is as specified above. The following table describes the format of the shipping fields:
characters,
14
dashes limited to 96
characters,
including
spaces
characters,
including
spaces
characters,
including
spaces
characters,
including
spaces
characters,
including
spaces
Validity checks
Prior to the authorization request for a transaction, the payment platform performs the following validation
checks:
If the submitted data should not be valid, the payment platform presents a corresponding data entry page to the
customer.
To avoid this hosted page when using your own input forms for the payment process, you can transmit the
following additional parameter along with the transaction data:
full_bypass=true
15
Up to ten custom fields can be submitted in a way that they will be stored within the payment platform so that
they appear in the Virtual Terminal’s Order Detail View as well as in the response to Inquiry Actions that you
send through our Web Service API .
customParam_key If you want to use this feature, please send the custom fields in the format
customParam_key=value.
Example:<input type="hidden"
name="customParam_color" value="green"/>
For Uruguay the key “taxRefundIndicator” must be sent with one of the following values:
Value Description
URY_RETURNS_IMESI_LAW_18083 Works only on batch. The gateway does not return the tax
refund value
URY_RETURNS_AFAM_LAW_18910 Return of 22% for local cards with social benefits only
16
If the submitted data does not include this field, the default value “NO_TAX_REFUND” will apply.
8. Data Vault
With the Data Vault product option you can store sensitive cardholder data in an encrypted database in Fiserv’s
data center to use it for subsequent transactions without the need to store this data within your own systems.
If you have ordered this product option, the Connect solution offers you the following functions:
If you want to assign multiple IDs to the same payment information record, you can submit the
parameter ‘hosteddataid’ several times with different values in the same transaction.
If you prefer not to assign a token yourself but want to let the payment platform do this for you, send
the parameter ‘assignToken’ and set it to ‘true’. The gateway will then assign a token and include it in
the transaction response as ‘hosteddataid’.
If you have use cases where you need some of the tokens for single transactions only (e.g. for consumers
that check out as a “guest”, use the additional parameter ‘tokenType’ with the values ‘ONETIME’ (card
details will only be stored for a short period of time) or ‘MULTIPAY’ (card details will be stored for use
in future transactions).
When using multiple Store IDs, it is possible to access stored card data records of a different Store ID
then the one that has been used when storing the record. In that way you can for example use a shared
17
See further possibilities with the Data Vault product in the Integration Guide for the Web Service API.
9. Recurring Payments
For card transactions, it is possible to install recurring payments using Connect. To use this feature, the following
additional parameters will have to be submitted in the request:
week
month
year
characters,
including
spaces
Note that the start date of the recurring payments will be the current date and will be automatically calculated
by the system.
The recurring payments installed using Connect can be modified or cancelled using the Virtual Terminal or Web
Service API.
18
approval_code Approval code for the transaction. The first character of this parameter is the most
helpful indicator for verification of the transaction result.
“?” indicates that the transaction has been successfully initialized, but a final result is
not yet available since the transaction is now in a waiting status. The transaction
status will be updated at a later stage.
oid Order ID
status Transaction status, e.g. ‘APPROVED’, ‘DECLINED’ (by authorization endpoint or due
to fraud prevention settings), ‘FAILED’ (wrong transaction message
content/parameters, etc.)
ipgTransactionId Transaction identifier assigned by the gateway, e.g. to be used for a Void
Please note that response codes can be different depending on the used payment
type and backend system. For card payments, the response code ‘00’ is the most
common response for an approval.
cccountry 3 letter alphanumeric ISO code of the cardholder’s country (e.g. USA, DEU, ITA, etc.)
Filled with “N/A” if the cardholder’s country cannot be determined or the payment
type is not credit card
MASTERCARD
VISA
19
DINERSCLUB
JCB
CUP
CABAL
MAESTRO
RUPAY
BCMC
SOROCRED
Filled with “N/A” for any payment method which is not a credit card or debit card
For merchants activated for the MasterCard real-time account updater service:
When your store is enabled for the MasterCard real-time account updater service and you have the payment
information vaulted on your side then when applicable the updates are sent as part of the platform response
and you have to react upon it accordingly i.e.: update the account number for a token when you store PAN and
a token on your side.
20
Server-to-Server Notification
In addition to the response you receive in hidden fields to your ‘responseSuccessURL’ or ‘responseFailURL’, the
platform can send server-to-server notifications with the above result parameters to a defined URL. This is
especially useful to keep your systems in synch with the status of a transaction. To use this notification method,
you can specify an URL in the Customisation section of the Virtual Terminal or submit the URL in the following
additional transaction parameter ‘transactionNotificationURL’.
• The Transaction URL is sent as received therefore please don’t add additional escaping (e.g. using %2f
for a Slash (/).
• The Notification URL needs to listen either on port 80 (http) or port 443 (https) – other ports are not
supported.
The response hash parameter for validation (using the same algorithm that you have set in the transaction
request) ‘notification_hash’ is calculated as follows:
chargetotal|currency|txndatetime|storename|approval_code
Shared secret (‘sharedsecret’) will be used as a key in HMAC to calculating the hash with the above hash
string.
Such notifications can also be set up for Recurring Payments that get automatically triggered by the gateway.
Please contact your local support team to get a Shared Secret agreed for these notifications. You can configure
your Recurring Transaction Notification URL in the Virtual Terminal (Customisation/ Store URL Settings).
chargetotal|currency|txndatetime|storename|approval_code
21
22
• chargetotal= 13.00
• currency= 978
• paymentMethod=M
• responseFailURL=https://localhost:8643/webshop/response_failure.jsp
• responseSuccessURL=https://localhost:8643/webshop/response_success.jsp
• sharedsecret=sharedsecret
• storename=10123456789
• timezone= Europe/Berlin
• transactionNotificationURL=https://localhost:8643/webshop/transactionNotification
• txndatetime=2020:04:17-17:32:41
• txntype=sale
Step 1. Extended hash needs to be calculated using all request parameters in ascending order of the parameter
names. Join the parameters’ values to one string with pipe separator (use only parameters’ values and not the
parameters’ names).
stringToExtendedHash =
13.00|978|M|https://localhost:8643/webshop/response_failure.jsp|https://localhost:8643/webshop/respons
e_success.jsp|10123456789|Europe/Berlin|https://localhost:8643/webshop/transactionNotification|2020:04:
17-17:32:41|sale
Corresponding hash string does not include ‘sharedsecret’, which has to be used as the secret key for the
HMAC instead.
Step 2. Pass the created string to the HMACSHA256 algorithm and using shared secret as a key for calculating
the hash value.
HmacSHA256(stringToExtendedHash, sharedsecret)
Step 3. Use the value returned by the HMACSHA256 algorithm and submit it to our payment gateway in the
given form.
8CVD62a88mwr/Nfc+t+CWB+XG0g5cqmSrN8JhFlQJVM=
23
24
/*
Function that calculates the hash of the following parameters:
- chargetotal
- currency
- paymentMethod
- responseFailURL
- responseSuccessURL
- sharedsecret
- storename
- timezone
- transactionNotificationURL
- txndatetime
- txntype
*/
Response.Write(extendedhash);
}
25
26
function getDateTime() {
global $dateTime;
return $dateTime;
}
/*
Function that calculates the hash of the following parameters:
- Store Id
- Date/Time(see $dateTime above)
- chargetotal
- currency (numeric ISO value)
- shared secret
*/
function createExtendedHash($chargetotal, $currency) {
// Please change the store Id to your individual Store ID
$storeId = "10123456789";
// NOTE: Please DO NOT hardcode the secret in that script. For example read
it from a database.
$sharedSecret = "sharedsecret";
$separator = "|";
return $hash;
}
?>
27
28
29
30
31
If you let your consumer select the payment method in your website or want to define the payment method
yourself, submit the parameter ‘paymentMethod’ in your transaction request. If you do not submit this
parameter, the platform will display a hosted page to the consumer to choose from the payment methods that
are enabled for your store and supported for the combination of the consumer’s country and the transaction
currency.
American Express A
Argencard ARGENCARD
Automatica AUTOMATICA
BBPS BBPS
Cetelem CETELEM
Consumax CONSUMAX
Coopeplus COOPEPLUS
Crediguia CREDIGUIA
Credimas CREDIMAS
Diners C
Elebar ELEBAR
Favacard FAVACARD
Grupar GRUPAR
Italcred ITALCRED
JCB J
Kadicard KADICARD
Maestro MA
MasterCard M
Mira MIRA
Naranja NARANJA
Nativa NATIVA
Nevada NEVADA
32
Tuya TUYA
Visa V
33
34