ipayment Gateway API (IPG API)



Similar documents
ipay Checkout API (IPC API)

PROCESS TRANSACTION API

Virtual Payment Client Integration Reference. April 2009 Software version:

Netswipe Processing Implementation

MONETA.Assistant API Reference

MiGS Virtual Payment Client Integration Guide. July 2011 Software version: MR 27

QIWI Wallet Pull Payments API

Hosted Credit Card Forms Implementation Guide

DIRECT INTEGRATION GUIDE DIRECT INTEGRATION GUIDE. Version: 9.16

Process Transaction API

Buckaroo Payment Engine 3.0 Implementation Manual HTML gateway

This Annex uses the definitions set out in the Agreement on service of payment cards on the Internet (hereinafter the Agreement).

Merchant One Payment Systems Integration Resources. Direct Post API Documentation June 2007

MasterCard In tern et Gatew ay Service (MIGS)

Secure XML API Integration Guide. (with FraudGuard add in)

API For Chopstickpay Merchants Configuration: Server-to-server Version: 3.4 Status: Published

Credomatic Integration Resources. Browser Redirect API Documentation June 2007

COMMERCIAL-IN-CONFIDENCE

HOSTED INTEGRATION GUIDE HOSTED INTEGRATION GUIDE. Version: 9.16

Network Merchants Inc (NMI) Integration Resources. Direct Post API Documentation April 2010

Direct Post. Integration Guide

Server-to-Server Credit Card Implementation Guide

Web Services Credit Card Errors A Troubleshooter

Web Services Credit Card Errors A Troubleshooter

Swedbank Payment Portal Implementation Overview

Audi Virtual Payment Client Integration Manual

Platron API. Technical description. version 3.5

AS DNB banka. DNB Link specification (B2B functional description)

NAB TRANSACT. XML API Integration Guide

Cardsave Payment Gateway

Gateway Direct Post API

Web Services Credit Card Errors A Troubleshooter

SPARROW Gateway. Developer API. Version 2.00

Paynow 3rd Party Shopping Cart or Link Integration Guide

Mandiri e-cash Online

Global Transport Secure ecommerce. Web Service Implementation Guide

1. Version Control Introduction Prerequisites Payment Submission Workflow Return Parameter for CallbackURL...

Bitcoin Payment Gateway API

Online signature API. Terms used in this document. The API in brief. Version 0.20,

Secure XML API Integration Guide - Periodic and Triggered add in

Merchant Plug-In. Specification. Version SIX Payment Services

WEB TERMINAL AND RECURRING BILLING

SENTRY Payment Gateway

Merchant Service Provider Guide for Mobilpenge Based Acquiring

Payvision Payment Processor. Technical Integration

A BETTER WAY TO PAY Unified Merchants API (UMAPI).Net Integration Manual

Bank and SecurePay Response Codes

Order Notifications - reporting a payment status

DalPay Internet Billing. Checkout Integration Guide Recurring Billing

INTEGRATION PROCEDURES AND SPECIFICATIONS

JET Payment File Specification Version 1.3. JET File Technical Specification Appendix H

SVEA HOSTED SERVICE SPECIFICATION V1.13

Magento Extension User Guide: Payment Pages. This document explains how to install the official Secure Trading extension on your Magento store.

Barclaycard SmartPay. Hosted Payment Page Integration Guide. Version 3.0 released April 2012

DalPay Internet Billing. Technical Integration Overview

Merchant Implementation Guide

Korean Cyber Payment Services

PAY BUTTON USER GUIDE PAY BUTTON USER GUIDE. Version: 1.2

HireDesk API V1.0 Developer s Guide

Card-Present Transactions Implementation Guide Version 1.0

Three Step Redirect API V2.0 Patent Pending

Integration Guide. Rabo OmniKassa

Corporate Access File Transfer Service Description Version /05/2015

Authorization Interface

Virtual Terminal & Online Portal

MyGate Response Codes. Version 2.1

MasterCard In tern et Gateway Service (MIGS)

MERCHANT MANAGEMENT SYSTEM

INTRODUCTION MERCHANT INTEGRATION. Ha noi, 10/7/2012

Fairsail REST API: Guide for Developers

ANZ egate Virtual Payment Client

Server Protocol and Integration Guideline (Protocol v3.00) Published Date 27/08/2013

Payment Response Guide. Version 4.3 September 2012 Business Gateway

Implementation guide - Interface with the payment gateway PayZen 2.5

A: This will depend on a number of factors. Things to consider and discuss with a member of our ANZ Merchant Services team are:

Global Iris Integration Guide ecommerce Remote Integration

iyzico one-off payment and installment easy payment integration

Account Management System Guide

MySagePay. User Manual. Page 1 of 48

Refer to the Integration Guides for the Connect solution and the Web Service API for integration instructions and issues.

Merchant Integration Guide

1. Change Log Introduction Flow summary Flow Overview Premium SMS flow Pin Flow Redirect Flow...

Virtual Terminal User s Guide

My Sage Pay User Manual

Fraud Detection. Configuration Guide for the Fraud Detection Module v epdq 2014, All rights reserved.

Secure Payment Form User s Guide

Criteria for web application security check. Version

Elavon Payment Gateway Integration Guide- Remote

Rapid 3.0 Transparent Redirect API. Official eway Documentation. Version 0.82

Visa Checkout Integration Guide V1.0

Java SFA merchant integration guide

AliPay International Services

Realex Payments Integration Guide - Ecommerce Remote Integration. Version: v1.1

Pensio Payment Gateway Merchant API Integration Guide

Sage Pay Direct Integration and Protocol Guidelines Published: 01/08/2014

Batch Processing. Specification. Version SIX Payment Services

Authorization Interface

Transcription:

ipayment Gateway API (IPG API) Accepting e-commerce payments for merchants Version 3.2 Intercard Finance AD 2007 2015

Table of Contents Version control... 4 Introduction... 5 Security and availability... 6 Test IPG API... 6 Accepting e-commerce payments with IPG interface... 7 Overview... 7 HTTP POST... 7 Data Type Formats... 8 Signatures... 8 Example... 9 Signature verification example... 9 Understanding transmission mechanism... 11 Method standard properties... 12 Response standard properties... 13 IPG methods (alphabetical order)... 14 Purchase with payment card (API call: IPGPurchase)... 14 Purpose... 14 Method properties... 15 Cart Logical Record... 16 Example... 16 Processing MOTO transaction by Merchant (API call: IPGMoto)... 17 Purpose... 17 Method properties... 17 CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 2

Example... 18 Successful payment notification (API call: IPGPurchaseNotify / IPGPurchaseOK)... 18 Purpose... 18 Method properties... 18 Cancelation of payment notification (API call: IPGPurchaseCancel)... 19 Purpose... 19 Method properties... 19 Rollback of previous notification (API call: IPGPurchaseRollback)... 20 Purpose... 20 Method properties... 20 Get transaction status for previously executed payment (API call: IPGGetTxnStatus)... 20 Purpose... 20 Method properties... 20 Example of the xml... 21 Make a refund for previously executed payment (API call: IPGRefund)... 24 Purpose... 24 Method properties... 24 Example of the xml... 25 Make a reversal for previously executed payment (API call: IPGReversal)... 25 Purpose... 25 Method properties... 25 Example of the xml... 25 Appendix I Error messages... 26 CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 3

Version control N Author Description Date posted 1 Yavor Petrov Version 1.0 (obsolete) 12.2009 2 Yavor Petrov Version 2.0 (obsolete) 05.2010 3 Yavor Petrov Version 3.0 first full 11.05.2012 4 Yavor Petrov Shopping card format changed 15.05.2012 5 Milena Dyankova Added E-mail field 22.05.2012 6 Milena Dyankova Added MIDName and OrderLink fields. Added Appendix I. 7 Milena Dyankova Version 3.1 RequestDateTime and RequestDateSTAN parameters are removed from Method standard properties and are added to IPG Methods IPGPurchaseNotify / IPGPurchaseOK. 23.05.2012 05.07.2012 8 Milena Dyankova Added signature example 15.10.2012 9 Milena Dyankova Added new IPG method (IPGCreditRequest) 15.09.2013 10 Ivayla Santeva Version 3.2 Pan parameter is added to IPG Methods IPGPurchaseNotify / IPG PurchaseOK 21.08.2014 11 Ivayla Santeva Added link with currently used signatyres 14.10.2014 12 Ivayla Santeva Added method IPG Moto 21.03.2015 CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 4

Introduction This document describes the interface for e-commerce payments via payment gateway. The Merchant should integrate the ipayment Gateway API (IPG API) at the site accepting card payments. IPG API will gain access to the entry point of ipayment Gateway (IPG) managed by Intercard Finance AD (icard). IPG will handle and guide the cardholder during the payment process, will check the card sensitive data and will process a payment transaction through card schemes (VISA, MasterCard, JCB). IPG API will provide: Secured page and Secured communication channel with the Merchant Storing of merchant private data (shopping cart, amount, payment methods, transaction details etc.) Financial transactions to VISA, MasterCard, JCB transparent for the Merchant Operations for the front-end: Purchase transaction Operations for the back-end: Refund, Reversal, Get Transaction Status 3D processing Out of scope for this document: Merchant statements and payouts Merchant back-end (imerchant) The purpose of this document is to specify the IPG API Interface and demonstrate how it is used in the most common way. All techniques used within the interface are standard throughout the industry and should be very easy to implement on any platform. Continue on next page CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 5

Security and availability Connection between Merchant and icard is handled through internet using HTTPS protocol (SSL over HTTP). Requests and responses are digitally signed both. icard host is located at tier IV datacenter in Luxembourg. Public address for IPG is BGP enabled and available through all first level internet providers. Exchange folder for partners (if needed) is located at a SFTP server which enables encrypted file sharing between parties. The partner receives the account and password for the SFTP directory via fax, email or SMS. icard supplies an emergency support line via e-mail or phone which is 7x24 enabled and reaches certified engineers. Test IPG API A by appointment test service is available which allows the validation of the API calls. Testers should negotiate an exclusive access to the testing service and ensure monitoring by icard engineer. Continue on next page CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 6

Accepting e-commerce payments with IPG interface Overview 1 8 6 4 5 Internet Customer Web Shop Checkout page 3 IPayment Gateway www.ipay.bg Authorization system Intercard Finance AD Card Schemes VISA, MasterCard, JCB 2 7 Web Server Merchant 1. Internet customer at web shop checkout page 2. Payment initiated by customer. 3. Merchant web server initiates payment through IPG. Merchant web server should redirect the browser to IPG web address. 4. Customer web browser is redirected to IPG web page. 5. Customer is requested to input the card data and press PAY. IPG handles the 3D secure processing and financial transaction messaging. 6. IPG receives the details for the payment successful or declined. 7. IPG passes the result to Merchant Web Server. 8. IPG redirects to Web Shop checkout result page. HTTP POST Data transfer between Merchant and IPG is made by HTTP POST. All the parameters for the requests are in the body in [parameter=value] form. Separator between tokens is [&]. The body is URL Encoded. Character encoding is UTF-8. Example: POST /somescript.php HTTP/1.1 Host: www.somesite.com User-Agent: Mozilla/4.0 Content-Length: 27 Content-Type: application/x-www-form-urlencoded userid=joe&password=guessme&user_type=1 CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 7

Data Type Formats Data Type in Description Example document int integer 1 String string This is a string Date ISO 8601 date string YYYY-MM-DD 2012-03-31 DateTime ISO 8601 datetime string YYYY-MM-DD HH:mm:SS 2012-03-31 23:59:59 A(n) Alpha string. [n] characters required Alpha string AN(n) Alphanumeric string. [n] characters required Alphanumeric string N(n) Numeric string. [n] characters required. Number 000123 is left-padded with zeroes. double Numeric string with decimal point. Only point is 34.56 used (no commas or other characters for decimal point) BASE64 Sting used to pass binary data. The binary data YW55IGNhcm5hbCBwbGVhc3VyZQ== should be converted to base64 standard. XML Simple in place XML array. <body> <param>1</param> <value>2</value> </body> Signatures In every message a signature is supplied. The signature is a signed HASH of all the values from properties sent in the request. All values must be URL encoded first. For signing process, both icard and the Merchant generate public and private key pairs and exchange the public keys. Key pairs are generated using RSA algorithm. Every of the parties are using the private key to sign the message and the opposite side authenticate the sender with corresponding public key. Signatures are calculated using the following mechanism. All data in POST request without the Signature property is used to calculate hash using SHA1 algorithm. Then SHA1 value is signed with RSA. The Signature property is concatenated at the end of the POST string. The opposite side should check the signature in the same way. Calculate SHA1 for the POST string excluding the Signature section then check with VerifySignature. During the business lifecycle, there could be a need the keys to be changed, or more than one key to be used in communication. IPG supports unlimited number of exchanged keys, for icard and Merchant both. A key index is assigned to every key, starting from 1 to MAXINT. The key index of the key used to sign the request is supplied as a parameter in every transmission. Current test keys are available on: http://devs.icards.eu/ipgtest/test_keys CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 8

Example <?php $postdata = array('ipgmethod'=>'ipgpurchase',...); #The $_POST array $privkey = '-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQC8oMfOTxHN0WRPmRojUVeaj992GpzcoKibAc2i6P2yM0mOeYho TsdSpKzVYDRYrtGlRb8B2+4/R67nxM9O/Tn5YtGXkLEVXI4mWrGTTRZr8afF97zx t1bthu/fmxpdfkgsqoq/d5sd7whiu/vago4xsvwxk5iqezy+rp9pco7rqqidaqab AoGASWTV2bRyXP8IZOBRh0RzLbSlYjLgrgflEssU1DqL2/aQvFsVdGCStdlVVoDk XU1ITWJh+7szbHPb3lp5v2ZQU8lVacwBpLY7RHZ/BXiwmcg3iMwqEFCF2S+cPijA EOXrvv0N7G8r1qYGfbEVs3mDtFaTCbJiAQFiUxfWGpmNK0ECQQDtgqf/azooeBWa 43UZnM+YIHVSkdQtsRVaw4gCv+RWZVonqjRg+zanqLzwSTcveRVSIZiu3CfG5/sk co54ki51akeay0/yzleifojv0q8eaneb5fgj5lvac+9lbzbsmko054s9hdbuthqz YDGi2TI6YRx/l/uRMNYTSmKjYt79gWQIHQJAdVf3HndgrXve2L6GLVhPLE7lCB1q YgS6kzRFr24VJyY965jo9f1HnH/+kQzrSfYdtY1JvSKiOGCGsRQ0FWRpvQJBAI4u sxcmfjeuw68lwggpwriucxgwz9ui1weoozkikjl9brjbhpbr53mmq0sxo7iwrat9 owqn0h/lk4greifq1oecqgakhrj9jmlnirf0a8whkjm8pbepu2oelfhk/hehpjmk xnecld/4rwex7ytm2+uvado1cjyu0ig0d127pt07+yk= -----END RSA PRIVATE KEY-----'; #This is an example of RSA private key $concdata = urlencode(stripslashes(implode('', $_POST))); # You need to concatenate all values from $postdata and to URL-encode the result $datahash = sha1($concdata); # Create sha1 hash of concatenated data $privkey = openssl_get_privatekey($privkey); openssl_sign($datahash, $signature, $privkey); # Signed data in binary $signature = base64_encode($signature); # Base64 encoding of the signature $postdata['signature'] = $signature; # Now you need to add the signature to the post request Signature verification example $data = $_POST; $pubkey = '-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4ur+fZBqNjnm1XJSJrzf8vyIv xfxew44rkjv9kppisetgariamqzhmwsw/fd2drnh1a6gcgfwiv/3zgr18gz/heqm h5n9hmqndhab2nznfloiol9v6awabqveqybmzp97ukruxxdtqejl7w8wkxearqpu BBbcPHA2gMp0hRN/MwIDAQAB -----END PUBLIC KEY-----'; $signeddata = $data['signature']; unset($data['signature']); $concdata = urlencode(stripslashes(implode('', $data))); $pubkeyid = openssl_get_publickey($pubkey); $signeddata = base64_decode($signeddata); $res = openssl_verify(sha1($concdata), $signeddata, $pubkey); openssl_free_key($pubkeyid); if($res==1){ CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 9

//success }else{ //not success } CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 10

Understanding transmission mechanism Transaction Processing Merchant IPG icard Authorization System Https://ipay.bg/paymentpage POST parameters: Amount, MID, URL_OK, URL_Cancel, URL_Notify, etc. Secured Payment page. Press PAY NO Cardholder action Is The Card 3D secure enebled Cancel Payment NO YES Merchant Cancel Payment page Redirect to URL_Cancel END Transaction Result from Authorization system NO Is 3D authentication Successfull Merchant checks the status of the payment Approved/Declined Is the Transaction Approved YES YES Authorization system processes payment IPG Notifies merchant on URL_Notify for the result Is the payment approved IPG Waits for HTTP OK from URL_Notify Mark the order: Paid / Not paid Redirect customer browser to URL_OK (END) YES Have HTTP OK NO Process Reversal (void) CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 11

Continues from previous page Transaction Processing Merchant IPG icard Authorization System Process Reversal (void) IPG Notifies merchant on URL_Notify for transaction VOID Merchant marks the payment as CANCELED (declined) IPG Waits for HTTP OK from URL_Notify End Transaction YES Have HTTP OK NO Schedule for next send. Next send in 5 minutes. In every request there are several parameters that are always supplied. Bellow they are called standard properties. Once defined bellow they won t be described in every single command listed bellow in the specification, they should be considered as existing to every command. Method standard properties Property Typical value Type Description IPGmethod IPGPurchase String Name of the method requested for execution from IPG. Signature Byte[] BASE64 Signed HASH for all properties in the command. Signature is ALWAYS THE LAST PARAMETER IN THE POST, as it is not used to calculate the hash. KeyIndex 1 Int Identifier of the private key used for signature (if more then 1) IPGVersion 3.2 string Version of protocol used for transition. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 12

Language EN A(2) ISO 2-character code for the desired language on the payment page. If IPG cannot fulfill the requested language, it will set the English language as defaults. Currently supporting EN, FR, DE, BG, ES, RO. Originator 100 Int Value that uniquely identifies the merchant company that has signed a contract with Intercard Finance AD. Response standard properties Upon HTTP request, the party should respond with HTTP OK. Every other response should be treated as communication error, call error, server error or system malfunctions. In every HTTP response the party should include only the string OK. Every other content will be considered as an error status. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 13

IPG methods (alphabetical order) API function call Description MERCHANT TO IPG IPGMoto IPGPurchase IPGPurchaseIPAY IPGReversal IPGRefund IPGGetTxnStatus IPGPurchaseNotify IPGPurchaseOK IPGPurchaseCancel IPGPurchaseRollback This is a method for processing a MOTO transactions by merchant. This is the standard method for checkout at web shop. Same as above but purchase is made using ipay.eu account. This command cancels a previously executed payment (void). Usually for back-office. Credit to cardholder, e.g. return money. Usually for back-office. Returns the status and the parameters of a previously executed payment. Usually for back-office. IPG TO MERCHANT IPG will respond with this method on successful payment. The call will be made on previously supplied URL_Notify. IPG will redirect with this method on successful payment. The call will be made on previously supplied URL_OK. IPG will redirect with this method when the customer chooses cancel payment. The call will be made on previously supplied URL_Cancel. IPG will notify that a reversal is passed for previous successful authorization. The merchant should mark the order as not paid (in case, the merchant has received IPGPurchaseNotify method). This is used when IPG do not receive and HTTP OK from the merchant as a response for IPGPurchaseNotify method. All commands described bellow do not include the standard properties discussed in the previous topic. However the standard properties are mandatory for all commands. Purchase with payment card (API call: IPGPurchase) Purpose This method initiates the beginning of the payment process for a cardholder. The cardholder is placed on a page that requests entering payment card details. IPG will check: Valid MID. Valid currency with regards to the MID. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 14

Method properties Property Typical value Type Required Description MID 000000000000123 AN(15) YES Identifier of the virtual terminal used for the purchase. MIDName Merchant Web Shop String YES User friendly name of the merchant web shop. The cardholder will see this name on some notices in the payment page. Amount 23.45 Double YES The amount of the payment requested. Currency 978 N(3) YES ISO numeric currency code. The currency for the payment must be equal to the currency of the MID. CustomerIP 82.119.81.30 String YES Dotted-decimal string, that holds the customer IP address as reported at merchant web shop. OrderID 201203319999999 String YES Placeholder for the merchant. Used to put some data that will help the merchant to recognize for which order is the payment. Up to 255 characters. OrderLink http://site.ext/ String NO The link of the page with the order from the merchant web shop. BannerIndex 1 Int YES Index specified in IPG for every banner provided by the Merchant. The Merchant may choose to select a proper banner for every payment. The banner is displayed on the payment page. URL_OK http://site.ext/paymentok String YES The page where the cardholder should be redirected on successful payment. URL_Cancel http://site.ext/paymentnok String YES The page where the cardholder should be redirected when <Cancel> is pressed on the payment page. URL_Notify http://site.ext/paymentnotify String YES Address supplied by the partner, where the IPGPurchaseNotify API call will send the parameters for the successful payment. Note String NO Text associated with the purchase. CartItems 2 Int YES The number of rows (items) in the logical record Cart. If there will be some additional fees/taxes for the cardholder, they need to be added as new items. Cart Logical Holder Logical Record YES Array provided by the Merchant. The array describes the content of the shopping cart. The content will be displayed on the IPG payment page. Email name@website.com String YES This is the cardholder s email. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 15

*URL_OK, URL_Cancel and URL_Notify could be the same. IPG will supply the proper method in the property IPGmethod. Properties MID in combination with OrderID gives a unique identifier for the request of a partner. IPG will reject duplicated transmission. Cart Logical Record Cart logical record consists of standard POST parameters with the form name=value. For every consequent item an index is added that shows the logical record number for the item (ex. Atricle_1). Indexes are from 1 to <CartItems>. Property Typical value Type Description Article HP ProBook String Name of an article in the shopping cart. 6360b sticker Quantity 2 Int How many pieces of an article. Price 2.34 Double Price of a single unit. Amount 4.68 Double Quantity*Price for the article. Currency 978 N(3) Should be the same currency as in the purchase amount. Signature Byte[] BASE64 Signed HASH for all properties in the command. Signature is ALWAYS THE LAST PARAMETER IN THE POST, as it is not used to calculate the hash. Example New lines and tabulators are included for better reading and do not exist in the POST request. MID=000000000000123& MIDName=Example Web Shop Name& Amount=23.45& Currency=978& CustomerIP=82.119.81.30& OrderID=1854& OrderLink=http://site.ext& BannerIndex=1& URL_OK= http://site.ext/paymentok& URL_Cancel=http://site.ext/paymentNOK& URL_Notify=http://site.ext/paymentNotify& Note=note& CartItems=2& Email=name@website.com& Article_1=HP ProBook 6360b sticker& Quantity_1=2& Price_1=2.34& Amount_1=4.68& Currency_1=978& Article_2=HP ProBook 6360b sticker& Quantity_2=1& Price_2=2.00& Amount_2=2.00& Currency_2=978 CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 16

Processing MOTO transaction by Merchant (API call: IPGMoto) Purpose This method is used by IPG to allow merchant to process MOTO transactions. Merchant is placed on a page that requests entering payment card details. IPG will check: Valid MID. Valid currency with regards to the MID. Method properties Property Typical value Type Required Description MID 000000000000123 AN(15) YES Identifier of the virtual terminal used for the purchase. MIDName Merchant Web Shop String YES User friendly name of the merchant web shop. The cardholder will see this name on some notices in the payment page. Amount 23.45 Double YES The amount of the payment requested. Currency 978 N(3) YES ISO numeric currency code. The currency for the payment must be equal to the currency of the MID. CustomerIP 82.119.81.30 String YES Dotted-decimal string, that holds the customer IP address as reported at merchant web shop. OrderID 201203319999999 String YES Placeholder for the merchant. Used to put some data that will help the merchant to recognize for which order is the payment. Up to 255 characters. OrderLink http://site.ext/ String NO The link of the page with the order from the merchant web shop. BannerIndex 1 Int YES Index specified in IPG for every banner provided by the Merchant. The Merchant may choose to select a proper banner for every payment. The banner is displayed on the payment page. URL_OK http://site.ext/paymentok String YES The page where the cardholder should be redirected on successful payment. URL_Cancel http://site.ext/paymentnok String YES The page where the cardholder should be redirected when <Cancel> is pressed on the payment page. URL_Notify http://site.ext/paymentnotify String YES Address supplied by the partner, where the IPGPurchaseNotify API call will send the parameters for the successful payment. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 17

Note String NO Text associated with the purchase. *URL_OK, URL_Cancel and URL_Notify could be the same. IPG will supply the proper method in the property IPGmethod. Properties MID in combination with OrderID gives a unique identifier for the request of a partner. IPG will reject duplicated transmission. Example New lines and tabulators are included for better reading and do not exist in the POST request. IPGmethod=IPGMoto& KeyIndex=1& BannerIndex=1& IPGVersion=3.2& Language=en& Originator=33& MID=112& MIDName=Example Web Shop Name& Amount=40& Currency=978& CustomerIP=82.119.81.30& OrderID=1426924312& OrderLink=& URL_OK=http://site.ext/paymentOK& URL_Cancel=http://site.ext/paymentNOK& URL_Notify=http://site.ext/paymentNotify& Note=Something Successful payment notification (API call: IPGPurchaseNotify / IPGPurchaseOK) Purpose This method is used by IPG to notify the merchant for a successful payment and to pass all needed parameters for the payment on URL_Notify. After successful response for this method IPG will redirect the customer browser to URL_OK and will pass same parameters with IPGPurchaseOK method. Method properties Property Typical value Type Description MID 000000000000123 AN(15) Echo from IPGPurchase. Amount 23.45 Double Echo from IPGPurchase. Currency 978 N(3) Echo from IPGPurchase. CustomerIP 82.119.81.30 String Echo from IPGPurchase. OrderID 201203319999999 string Echo from IPGPurchase. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 18

Approval 123456 String Approval code return by the issuer of the card. Used to identify the financial transaction within the card schemes and the issuer. IPG_Trnref 12345678923 String Used to uniquely identify a transaction in IPG. Used as a parameter for subsequent refund of reversal if needed. RequestDateTime 2012-03-31 23:59:59 DateTime Date/time of the request RequestSTAN 123456 N(6) Consequent number from 1 to 999999. Used for request unique match. Signature Byte[] BASE64 Signed HASH for all properties in the command. Signature is ALWAYS THE LAST PARAMETER IN THE POST, as it is not used to calculate the hash. Pan 0000 String Last four digits of the account number (PAN) for the transaction Cancelation of payment notification (API call: IPGPurchaseCancel) Purpose This method is used by IPG to notify the merchant that the customer has canceled the payment. IPG will redirect with this method when the customer choose cancel payment. The call will be made on previously supplied URL_Cancel. Method properties Property Typical value Type Description MID 000000000000123 AN(15) Echo from IPGPurchase. Amount 23.45 Double Echo from IPGPurchase. Currency 978 N(3) Echo from IPGPurchase. CustomerIP 82.119.81.30 String Echo from IPGPurchase. OrderID 201203319999999 string Echo from IPGPurchase. Signature Byte[] BASE64 Signed HASH for all properties in the command. Signature is ALWAYS THE LAST PARAMETER IN THE POST, as it is not used to calculate the hash. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 19

Rollback of previous notification (API call: IPGPurchaseRollback) Purpose This method is used by IPG to notify that a reversal is passed for previous successful authorization. The merchant should mark the order as not paid (in case, the merchant has received IPGPurchaseNotify method). This is used when IPG do not receive and HTTP OK from the merchant as a response for IPGPurchaseNotify method. The call will be posted to URL_Notify. Method properties Property Typical value Type Description MID 000000000000123 AN(15) Echo from IPGPurchase. Amount 23.45 Double Echo from IPGPurchase. Currency 978 N(3) Echo from IPGPurchase. CustomerIP 82.119.81.30 String Echo from IPGPurchase. OrderID 201203319999999 string Echo from IPGPurchase. Signature Byte[] BASE64 Signed HASH for all properties in the command. Signature is ALWAYS THE LAST PARAMETER IN THE POST, as it is not used to calculate the hash. Get transaction status for previously executed payment (API call: IPGGetTxnStatus) Purpose This method is used by Merchant to get the current status of previously executed payment. The IPG API will return an xml with detailed information about a specific OrderID. This method is intended to be utilized by the Merchant in his website back-end. The Merchant could decide whether or not to use this method. Method properties Property Typical value Type Required Description OrderID 201203319999999 String YES Placeholder for the merchant. Used to put some data that will help the merchant to recognize for which order is the payment. Up to 255 characters. MID 000000000000123 AN(15) YES Identifier of the virtual terminal used for the purchase. OutputFormat xml String NO Output format of data. The property can be xml or json. If it is not specified in the request, the default value is xml. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 20

Example of the xml <?xml version="1.0"?> <ipg_responce> <method>ipggettxnstatus</method> <order_id>xxxxxx</order_id> <log> <time>18.07.2012 11:43:58</time> <action>received new POST request</action> <result> <MID>XXXXXXXXXXXXXXX</MID> <MIDName>XXXXXXXXXXXXXXXXX</MIDName> <IPGmethod>IPGPurchase</IPGmethod> <Currency>978</Currency> <CustomerIP>193.48.246.14</CustomerIP> <OrderID>XXXXXX</OrderID> <BannerIndex>1</BannerIndex> <URL_OK>http://www.website.com/OK</URL_OK> <URL_Cancel>http://www.website.com/Cancel</URL_Cancel> <URL_Notify>http://www.website.com/Notify</URL_Notify> <Language>EN</Language> <IPGVersion>3.2</IPGVersion> <Originator>XXX</Originator> <KeyIndex>1</KeyIndex> <Email>customer@website.com</Email> <CartItems>2</CartItems> <Article_1>Article name</article_1> <Quantity_1>1</Quantity_1> <Price_1>10.00</Price_1> <Amount_1>10.00</Amount_1> <Currency_1>978</Currency_1> <Article_2>Delivery</Article_2> <Quantity_2>1</Quantity_2> <Price_2>8.90</Price_2> <Amount_2>8.90</Amount_2> <Currency_2>978</Currency_2> <Amount>18.90</Amount> <Signature>XwVlhn0yQsp9zLK5WANPSDQkvMWfbNHE8ZCjF5VGlkosTECitZc1/GedVNc+VpWmw5JRTcqv0 4orFv2YWSWdXkF8dmHo3sqJKYO0WJcahPpYk+xXf+F3J9U1tsUUkMGTLhXNCq+zKS/DDTlTVLY2gBiMSsoEn T116OC5+nMl6vs=</Signature> </result> <time>18.07.2012 11:43:58</time> <action>checking is purchase paid on Start page</action> <time>18.07.2012 11:43:58</time> <action>checking version</action> <time>18.07.2012 11:43:58</time> <action>checking method</action> CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 21

<time>18.07.2012 11:43:59</time> <action>checking signature</action> <time>18.07.2012 11:43:59</time> <action>trying to get MID info </action> <time>18.07.2012 11:43:59</time> <action>checking if the MID is related with this CID</action> <time>18.07.2012 11:43:59</time> <action>checking is amount >0</action> <time>18.07.2012 11:43:59</time> <action>checking valid currency and if the post currency is the currency of MID</action> <time>18.07.2012 11:43:59</time> <action>checking is order_id unique</action> <time>18.07.2012 11:43:59</time> <action>trying to get banner GUID for CID</action> <time>18.07.2012 11:43:59</time> <action>checking is cart_items >0</action> <time>18.07.2012 11:43:59</time> <action>checking the URLs (url_ok, url_cancel, url_notify)</action> <time>18.07.2012 11:43:59</time> <action>checking cart</action> <time>18.07.2012 11:43:59</time> <action>valid parameters</action> <time>18.07.2012 11:43:59</time> CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 22

<action>display page:</action> <result>payment page</result> <time>18.07.2012 11:45:04</time> <action>client is redirected to register payment page (page after "Pay" button)</action> <time>18.07.2012 11:45:04</time> <action>checking if purchase is already paid (on register payment page)</action> <time>18.07.2012 11:45:04</time> <action>starting card details validation</action> <result></result> <time>18.07.2012 11:45:04</time> <action>checking for required fields</action> <time>18.07.2012 11:45:04</time> <action>checking PAN</action> <time>18.07.2012 11:45:04</time> <action>checking Expire date</action> <time>18.07.2012 11:45:04</time> <action>checking CVC</action> <time>18.07.2012 11:45:04</time> <action>card successfully validated</action> <result></result> <time>18.07.2012 11:45:04</time> <action>checking Merchant for 3DS for card scheme</action> <result>v</result> <time>18.07.2012 11:45:04</time> <action>merchant is 3DS</action> <result></result> <time>18.07.2012 11:45:04</time> <action>start checking card for 3DS...</action> CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 23

<result></result> <time>18.07.2012 11:45:06</time> <action>card check for 3DS</action> <result>y</result> <time>18.07.2012 11:45:06</time> <action>redirecting to ACS</action> <result> <ACS_URL>https://ACS.website.com</ACS_URL> <TransactionAmount>1890</TransactionAmount> <TransactionDisplayAmount>18.90 EUR</TransactionDisplayAmount> </result> </log> <status>0</status> <status_msg>success</status_msg> </ipg_responce> Make a refund for previously executed payment (API call: IPGRefund) Purpose This method is used by Merchant to initiate a refund of previously executed payment. The IPG API will return an xml with the result. This method is intended to be utilized by the Merchant in his website backend. The Merchant could decide whether or not to use this method. Method properties Property Typical value Type Required Description MID 000000000000123 AN(15) YES Identifier of the virtual terminal used for the purchase. IPG_Trnref 12345678923 String YES Used to uniquely identify a transaction in IPG. Used as a parameter for subsequent refund of reversal if needed. Amount 23.45 Double YES The amount of the payment requested. Currency 978 N(3) YES ISO numeric currency code. The currency for the payment must be equal to the currency of the MID. OutputFormat xml String NO Output format of data. The property can be xml or json. If it is not specified in the request, the default value is xml. CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 24

Example of the xml <ipg_responce> <method>ipgrefund</method> <trnref>12345667</trnref> <amount>0.1</amount> <currency>978</currency> <status>0</status> <status_msg>success</status_msg> </ipg_responce> Make a reversal for previously executed payment (API call: IPGReversal) Purpose This method is used by Merchant to initiate a reversal of previously executed payment. The IPG API will return an xml with the result. This method is intended to be utilized by the Merchant in his website backend. The Merchant could decide whether or not to use this method. Method properties Property Typical value Type Required Description IPG_Trnref 12345678923 String Yes Used to uniquely identify a transaction in IPG. Used as a parameter for subsequent refund of reversal if needed. OutputFormat xml String No Output format of data. The property can be xml or json. If it is not specified in the request, the default value is xml. Example of the xml <ipg_responce> <method>ipgreversal</method> <trnref>123456789</trnref> <status>0</status> <status_msg>success</status_msg> </ipg_responce> CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 25

Appendix I Error messages Status code Status message Description 0 Success 1 E_MISSING_REQ_PARAMS Some of required fields from the POST request are missing. 2 E_SIGNATURE_FAILED The parameter Signature is not correct. 3 E_INTERNAL_ERROR Invalid or missing response from IPG servers. Please contact IPG engineers. 4 E_INVALID_MID The MID is not valid. 5 E_INVALID_PARAMS One or more of the other parameters from the POST request are not correct. 99 E_UNDEFINED_ERROR Other unspecified error. Note: These error messages will be visible on the payment page only in test environment. In production environment the cardholder will see an error page with the following text: You are not able to proceed with the payment process. Some of required information is missing. Please try again. << Return to [MIDName] CONFIDENTIAL INTERCARD FINANCE AD 2007 2015 PAGE 26