All images © Mat Wright GOPI Training Technical Overview
Introduction What is GOPI? Global Online Payment Interface Why was it created? To act as a gateway between computer systems that require online payment capability and the Payment Service Provider (PSP) To prevent repeated implementation / integration for each system
In the beginning there was direct integration… Direct integration between each application and PSP resulting in duplicated testing and certification (JPM)
The only way is the GOPI way… Single development, testing and certification of integration between GOPI and PSPs
System components and technologies GOPI consists of four components: Core platform Admin UI Transaction tracker Client
System components and technologies Core Platform Purpose: A standard API gateway for integrating “Book and Pay” systems with Payment Service Providers (PSP) Technologies.NET Framework 4.0 ASP.NET MVC 4.0
System components and technologies Admin UI Purpose: Manage security (users and roles) Manage Payment Provider configuration Produce reconciliation reports Technologies:.NET Framework 4.0 ASP.NET MVC 4.0 & AngularJS
System components and technologies Transaction Tracker Purpose: Check transaction log (GOPI_LOG) for incomplete transactions Query the status of transactions with PSPs Notify calling system (ORS, REX etc) of outcome Technologies:.NET Framework 4.0 Console application Runs as scheduled task
System components and technologies Client Purpose: A client-access library to be used by calling systems (ORS, REX etc) Submits transaction details to GOPI and parses the outcome response Technologies:.NET Framework 4.0 Class library
System components and technologies And also the Test Client Purpose: To submit a test transaction to Core Platform environments Technologies:.NET Framework 4.0 ASP.NET MVC 4.0
Key aspects of database design There are two databases used by GOPI: GOPI_ADMIN – containing configuration, reconciliation data and security settings GOPI_LOG – containing transaction log data, and settings for transaction tracker
GOPI_ADMIN Database Configuration data is held in four tables.
GOPI_ADMIN Database MerchantProvider table Contains details of Payment Service Providers systems, currently JP Morgan Paymentech and Global Payments Global Iris ColumnPurposeJPM?GP? MerchantProviderIdInternal IDYY MerchantProviderNameName of PSPYY TestModeEnabledIndicates test systemY UserNameUsername for PSP systemYY PasswordPassword for PSP systemYY TerminalIdThe terminal IDY HandshakeUrlURL to setup sessionY PayUrlURL for payment pageYY QueryStatusUrlURL for querying statusYY CreditCardTypesSupported credit card typesY
GOPI_ADMIN Database MerchantProviderSettings table Merchant / Country / Currency settings ColumnPurposeJPM?GP? MerchantProviderIdMerchant provider IDYY CountryIsoCodeISO code of countryYY CurrencyCodeCurrency of transactionYY MerchantIdMerchant ID (JPM) / Account (GP)YY ThreeDSecurityEnabledIs 3D Secure enabledY CurrencyDecimalDigitsThe number of digits of currency sub-unit Y CreditCardTypesCredit cards available in this country Y
GOPI_ADMIN Database SystemAccount table The list of systems that are permitted to use GOPI, e.g. ORS, REX etc ColumnPurposeJPM?GP? SystemAccountIdInternal IDYY AccountNoSystem account codeYY WebSiteUrlURL of systemY HostedPageCssUrlURL of CSS to be used on DHPPY
GOPI_ADMIN Database SystemAccountCountrySettings table The list of permitted system, country and merchant combinations ColumnPurpose AccountNoSystem account code CountryIsoCodeISO code of country MerchantProviderIdID of merchant provider
GOPI_ADMIN Database - continued Reconciliation Reports in one table, and security in three tables.
GOPI_LOG Database Transaction log data in three tables.
GOPI_LOG Database GatewayActivityLog table Contains an record for each action performed by GOPI, denoted by LogTypeId ColumnPurposeJPM?GP? GatewayActivityLogIdGUIDYY LogDateTimeDate/Time of recordYY LogTypeIdType of actionYY PaymentGatewayProviderTokenToken from PSPY ParentGatewayActivityLogIdParent recordYY MerchantProviderIdID of merchant providerYY ResponseAcknowledgedOutcome confirmed by calling system YY
GOPI_LOG Database LogData table Detailed data relating to each entry in GatewayActivityLog ColumnPurpose GatewayActivityLogIdGUID of gateway activity log LogDataData received at gateway Exception RawDataData sent from gateway LogDateTimeDate/Time of record
GOPI_LOG Database ReferenceNumberTranslate table Contains mapping of system generated reference number and GOPI reference number ColumnPurpose IdInternal ID OriginalReferenceNumberReference number generated by calling system GeneratedReferenceNumberReference number generated by GOPI
GOPI_LOG Database - continued Transaction tracker data stored in three tables.
Fundamental architecture and data flow Core Platform uses three basic MVC routes: Request – transaction to be processed Response – response from PSP Acknowledge – confirmation from system that it is aware of outcome
Fundamental architecture and data flow There are seven Log Types: InitialRequest – request initially received by GOPI from calling system HandshakeResponse – response to a “handshake” with PSP Callback – callback received from PSP StatusCheck – response to query status with PSP FinalResponse – callback to calling system with outcome of transaction AcknowledgeResponse – Message from calling site that final reponse has been received
How JP Morgan (JPM) provider works GOPI integrates with JP Morgan Paymentech system. Two environments: Production, Test, Each environment has a different username & password. Access to both environments is restricted by IP address whitelist. Changes to our IP addresses that are whitelisted is done via a Technical Profile Questionnaire (TPQ) document. The Callback URL is specified in the XML submitted when initialising the a transaction session. Each country is assigned a Merchant ID (MID).
How JP Morgan (JPM) provider works Dynamic Hosted Payment Page The content of the Dynamic Hosted Payment Page (DHPP) is controlled by JPM, including all HTML and JavaScript. Branding of the DHPP is achieved via a single CSS file, which is hosted on GOPI web site. The CSS file limits us to changing the following; Banner image Styles Some text content, e.g. labels and buttons
How JP Morgan (JPM) provider works
Development environment - JPM The development environment for JPM provider is standard. A development workstation on GSN network connects to JPM Paymentech, assuming IP address is whitelisted.
Testing environment - JPM
Production environment - JPM