secure epayments card processing cpi integration guide · securecode support address verification...
TRANSCRIPT
-
Secure ePayments Card ProcessingCPI Integration Guide
Version 1.0
“COPYRIGHT. HSBC HOLDINGS PLC 2003.All rights reserved. No part of this publication may be reproduced, stored in a retrieval system,or transmitted, on any form or by any means, electronic, mechanical, photocopying, recording,or otherwise, without the prior written permission of HSBC Bank plc”
-
ContentsAudience 1
About this guide 1
Introduction 2
Background 2
Verified by Visa and MasterCard 2SecureCode Support
Address Verification Service 2
CPI integration software requirements 3
Testing the integration 3
Secure ePayments 4high level flow
Integration 5
Pre-Integration tasks 5
Integration requirements 5
CPI Hash Key 5
Implementing OrderHashes 5
Multi-currency 6
Merchant / CPI data exchange 6
Generating the merchant POST 6
Billing / delivery information 7
Handling the CPI return POST 7
Appendix A 8
Glossary 8
Appendix B 9
POST specifications 9
The merchant POST 9
Merchant security and order details 9-11
Billing information 12
Delivery information 13
CPI returned POST 14-15
CPI Returned OrderHash 15
CpiResultsCode breakdown 16
Appendix C 17
Example code 17
Java code sample 17
C code sample 18
Sample HTML form code 19
CGI code sample 20
Appendix D 21
OrderHash Generation 21
Appendix E 22
Currency codes 22
Appendix F 23
Country codes 23
Appendix G 24
Supported encryption technologies 24
Appendix H 25
Store administrator tool 25
Index of Figures
Figure 1 Secure ePayments 4high level flow outline
Index of Tables
Table 1 Merchant security 9-11and order details
Table 2 Billing information 12
Table 3 Delivery information 13
Table 4 CPI returned POST – 14obligatory returned fields
Table 5 CPI return POST – 14optionally returned fields
Table 6 CpiResultsCode values 16
Table 7 Currency Codes 22
-
Audience
This document is intended for use by:
• merchants integrating the HSBCCardholder Payment Interface (CPI)
• merchants’ web development partners(third party integrators)
About This Guide
This guide is designed to provide our Internetmerchants details of the integration process oftheir storefront(s) with the HSBC CPI.It contains a description of the process,along with detailed coding examples tosimplify integration.
Note: A working knowledge of HTML andscripting/programming languages is required to integratethe HSBC CPI service and understand this document.
1
-
Introduction
2
Background
This guide describes the requirements toallow Secure ePayments to processtransactions in real-time via the CardholderPayment Interface (CPI).
Secure ePayments has been designed tointegrate with a merchant store via theHSBC CPI to provide a securecheckout environment.
The CPI is an HTML-based integration.The service allows both standard HTMLpages and secure (SSL) HTML pages to callSecure ePayments.
To enhance security of transactionalinformation, Secure ePayments employs thehighest levels of encryption for connections,and utilises encoded check values(OrderHashes – see page 5 for a detaileddescription) designed to preventdata tampering.
Secure ePayment provides a secure CPIcheckout solution to:
• present payment pages to cardholders,requesting card details (and optionallybilling/delivery information –see page 7for more information)
• submit transactions for real-time processing• present order confirmations• return cardholders to the merchant store
The CPI interfaces with the HSBC paymentengine to perform payment authorisation, inaddition to enabling the Payer AuthenticationSystem (PAS) to provide cardholderauthentication via the Verified by Visa andMasterCard® SecureCode™ technologies.
The CPI also interfaces with the AddressVerification Service (AVS) to further assist indetection of potential fraudulent transactions.
Verified byVisa and MasterCardSecureCode support
The CPI supports the Verified by Visa(3-D Secure) and MasterCard SecureCode(UCAF) technologies.
Merchant stores will have been pre-configuredwith merchant participation status forthese schemes.
Address Verification Service
The Address Verification Service (AVS)verifies whether the billing street address andpostcode supplied by a customer at an onlinestore match corresponding data on recordat the card issuing authority.
The CPI forwards the billing street addressand postcode data to the card-issuingauthority, where this information is comparedagainst database information for that customer.The card issuing authority then returns anindustry standard AVS check result.
An authorisation does not fail because of anAVS address or postcode mismatch.
Address verification forms part of HSBC’sfraud detection system and can automaticallyplace a transaction in a Review state. If thisoccurs the merchant can still accept the order,however, they may wish to contact thecardholder for further verification checks.
Note: Some addresses, such as military, BFPO addressesor non-UK addresses can be in a number of differentformats. Consequently, such addresses might not beverified by AVS. In addition to this some card types donot participate with this service for example Corporateor Purchasing cards.
For more information, please refer to the ‘SecureePayments Card Processing Risk Management Guide.’
-
CPI integration software requirements
The merchant POST (as detailed on page 9)and the CPI return POST (page 14) bothrequire HTTP1.1/SSL connections to beestablished with the secure HSBC CPI server.
The C library is supported on thefollowing platforms:
• HP-UX 11.0 and 11.2• Sun Solaris 2.7 and 2.8• Windows 2000The Java API supports Java Virtual Machine1.2.2 on the platforms listed below. In addition,Java 1.3 is supported under the 1.2.2 compileron the same platforms:
• HP-UX 11.0 and 11.2• Sun Solaris 2.7 and 2.8• Microsoft Windows NT 4.0 and
Windows 2000
Testing the integration
A merchant is required to have an HSBC cardprocessing Internet merchant accountin order to use Secure ePayments prior toaccessing the CPI for testing.
3
-
Secure ePayments high level flow
Figure 1 Secure ePayments high level flow outline
Notes:
POST 1 is the merchant POST and contains the configuration and order details; see Appendix B for a detaileddescription of the data required in this POST.
POST 2 is the CPI returned POST and contains the results of the authorisation request; see Appendix B for a detaileddescription of the data this POST contains.
POST 2 is sent from the Secure ePayments Server to the CpiDirectResultUrl to the merchant specified in POST 1.
In the last stage, the customer is returned from the Secure ePayments Server to the CpiReturnUrl to the merchantspecified in POST 1.
An optionally supplied session identifier will be returned, allowing the merchant to associate the cardholder with the order.
4
Cardholder has completed shoppingat the merchant site and has selected‘buy now’ or the equivalent option.
The merchant site displays theorder confirmation screen to the
cardholder and inserts theOrderHash in POST 1.
OrderHash and POST 1contents verified
CPI screens displayed, cardholderpayment/address information
collected. Authorisation(Verified by Visa/MasterCard
Secure Code) attempted.
Transaction authorisation occurs.The results of the authorisationare sent back to the merchant
web site in POST 2.
Transaction confirmation screendisplayed to the cardholder.
Cardholder redirected back to themerchant site when ‘Close’ selected.
The merchant site employs anoptional CGI program to handle
the returned data.
Cardholder returned to themerchant web site.
Merchant website Secure ePayments
POST 1
POST 2
-
IntegrationPre-Integration tasks
Prior to integration of a merchant web serverwith the CPI service, merchants are stronglyencouraged to examine the potential impact ofthe integration upon their systems.
For example, merchants will have to:
• identify integration points within theircurrent web server architecture
• determine required software updates 1• assess potential security impacts• examine current contingency plans
for possible modification
Notes:
The above list is for guidance only and is not meantto be comprehensive.
1 Software updates/amendments must be performedat a Merchants’ own risk, HSBC cannot be heldliable for any problems/impacts associated withinstalling/updating third party software.
Integration requirements
Merchants are required to have completedthe application for card processing throughHSBC, and have in their possession thefollowing information:
• merchant User ID(sent by email or letter)
• Client Alias / Store ID number(sent by email or letter)
• CPI Hash Key (sent by letter)• password (provided by the merchant
to HSBC during initial sales process).
Note:
Merchants will have received a ‘Customer verificationregistration form’ with their initial set-up documentation.It is very important that this form has been completed andreturned to HSBC. If this form is not returned correctly,a merchant will not be eligible for telephone supportfrom HSBC.
CPI Hash Key
A merchant will have received, by letter, a copyof the CPI Hash Key (shared secret) relatingto Secure ePayments.
It is important that this informationremains confidential.
The CPI requires that the merchant usea small software library to generate aMessage Authentication Code (MAC) usingthe order information, this MAC is knownas an OrderHash.
The CPI Hash Key is an essential piece ofthe MAC process, and must be located in asecure (not externally accessible) location inthe merchant’s web site.
Implementing OrderHashes
The OrderHash is created with a single librarycall (which is available in either C or Java –for supported platforms see page 3).
A list of (string) data is sent, with the CPI HashKey, to the library and a resultant OrderHashis returned.
The order information and the generatedOrderHash are then submitted to the CPIserver. The CPI then attempts authenticationof the supplied OrderHash, to verify theintegrity of the order data received.
A detailed example of OrderHash generationis given in Appendix D.
5
-
Multi currency
A merchant has the option of acceptingpayments in other currencies than UKSterling. Each currency option will besupplied with a corresponding shared secret.For example, a merchant accepting UKSterling, US Dollars and Euros would beprovided three shared secrets.
Each shared secret is currency specific. Creatingan OrderHash using the UK Sterling secretwhen submitted a US Dollar transaction willcause a validation error on the CPI server –the transaction will be rejected.
It is the merchant’s responsibility, as detailedpreviously, to keep all shared secrets confidential,and in secure locations within their websites.
Merchant / CPI data exchange
Information between the merchant’s websiteand CPI is transmitted via a secure POST(HTTPS) operation. The merchant websiteand the CPI are required to generate anOrderHash to help ensure the validity ofthe data being transmitted.
The merchant website and the CPI perform thefollowing steps to generate and validate data.
• The merchant’s website collects data aboutan order and information necessary forprocessing the order with the CPI and thePayment Engine. Billing and deliveryinformation is optional.
• The website calls a program that generatesan OrderHash value based on the data tobe submitted to the CPI. (Sample programsare shown in Appendix C – Java codeexample on page 17 and C code exampleon page 18.)
• The website sends the OrderHash valueand all other applicable information to theCPI via a secure POST operation.
• As the CPI validates the input, itgenerates its own OrderHash value. Ifthe submitted OrderHash value does notmatch the generated value, the order isimmediately rejected.
• After the CPI has processed the order,it generates a new OrderHash value basedon the return fields. The OrderHash valueand other return fields are returned to themerchant via another secure POST.
• The merchant’s website should generate anew OrderHash value based on the returndata to confirm the validity of the data.(The returned OrderHash value must beexcluded when generating the confirmationOrderHash value.) The website shouldreject the order if the return OrderHashvalues do not match.
Generating the merchant POST
The merchant submits all order information,including the signed hash, to the CPI usinga secure (SSL) POST.
The POST can contain three types of data:
• merchant security and order details• billing information• delivery information
Merchant security and order details arecompulsory (the OrderHash is includedin this category).
6
-
Billing / delivery information
Merchants may wish to collect thecardholder’s personal details themselves (forfuture use), or they may already have thedetails ‘on file’ (for example, if a cardholderhas previously registered with a store).
Consequently, a merchant will have decided,during the sales process, if they want theCPI to gather the cardholder’s billing anddelivery information.
If the CPI is configured for payment detailsonly, the merchant must decide whether toPOST all, or none, of the billing and deliveryinformation in their possession.
HSBC actively maintains a complex list offraud rules for assisting in determination ofpotential fraudulent transactions.
A number of these rules may involve the useof the Address Verification Service (AVS)response. If no billing / shipping informationhas been provided through the merchantPOST, and if the CPI has been configured notto collect such information, then AVS checkscannot occur, and this may impede theautomated detection of potential fraud.
It is therefore highly recommended thatthe merchant submit billing and deliveryinformation via the merchant POST if theyhave opted to collect such informationthemselves.
Note: If one billing field is submitted, then all requiredbilling fields must also be submitted. The same appliesfor delivery fields; if one field is submitted, all otherrequired fields must also be submitted.
Full details of the data that can be submitted via themerchant POST (field name, usage, and restrictions) aregiven in Appendix B.
Handling the CPI return POST
After Secure ePayments has processed anauthorisation request, the outcome of thetransaction is returned to the merchant toenable, for example, automatic orderfulfilment. (See Figure 1 on page 4 to viewwhen this process occurs – POST 2).
The authorisation result will be returned tothe URL (CpiDirectResultUrl) supplied in theoriginal POST.
If the store is designed to automaticallyprocess the return POST, a CGI program(or equivalent handler) must be able to acceptthe case-sensitive data returned by the CPI.Full details of the returned data are given inAppendix C.
Once the storefront has received theauthorisation decision, Secure ePaymentswill present the order confirmation screento the cardholder. When the customer thenpresses ‘close’ to leave the service, they areredirected to a page designated by themerchant (the CpiReturnUrl designated inthe original POST).
7
-
Appendix AGlossary
AVSAddress Verification Service. A service usedto verify that the billing street address andpostcode supplied by the cardholder, matchthe data on record at the card issuing bank.Benefits of using AVS include enhancedfraud protection.
CPICardholder Payment Interface. The HSBCsecure environment, integrated with amerchant website, for accepting cardholderinformation and returning authorisationresults to the merchant.
HTMLHyperText Mark-up Language. Platformindependent language for specifying content,formatting and links between web pages.
PASPayer Authentication System. HSBC processingsystem for ‘Verified By Visa’ and ‘MasterCardSecureCode’ that integrates into merchantstorefront applications via the CPI, and isused to authenticate cardholders.
MasterCard SecureCodeMasterCard’s security service for cardholderauthentication during a purchase transactionin e-commerce environments.
SSLSecure Socket Layer. An industry standardsecurity protocol that provides securetransmission of private information sentover the Internet. The protocol providesdata encryption, server authentication,message integrity, and client authenticationfor TCP/IP connections.
Transmission Control Protocol/InternetProtocol (TCP/IP)A protocol for communication betweencomputers, used as a standard fortransmitting data over networks and asthe basis for standard Internet protocols.
Verified by VisaVisa’s security service for verifying cardholderauthentication during a purchase transactionin e-commerce environments.
8
-
Appendix BPOST specifications
The merchant POST
The following sections describe the fields that can be sent to the CPI in the merchant (secure)POST operation. Sending other information causes the CPI to generate an OrderHash value thatwill not match the value generated (and submitted) by the merchant website.
The merchant POST undergoes character validation by the CPI server. For example, an emailaddress can only contain certain characters, should an invalid character be included the CPIserver will reject the transaction.
Note: The field names are case-sensitive – the CPI server will reject information if the submitted field names are not anexact match to those listed in table 1, table 2 and table 3 below.
Merchant security and order details
The following table lists the fields that can used to calculate the OrderHash and be sent to theCPI. Most of these fields are required.
The merchant can submit a MerchantData field that will be returned along with the authorisationresults. This field can contain any type of data, to a maximum of 512 characters. It may contain,for example, a session ID that tracks a shopper’s activities at the merchant site, detailed informationrelating to a particular shopping basket item etc.
Table 1 Merchant security and order details
Field Name Description Value
CpiDirectResultUrl Required. The URL for 1024 characters maximum.returning data to the merchant. Must begin with https://
CpiReturnUrl Required. The web page to 1024 characters maximum.display on the customer’s web Must begin with https://browser after the CPItransaction is complete.
MerchantData Optional. Any additional 512 characters maximum.data the merchant wants to include in the hash, such assession data.
Mode Optional. Must be one of the Merchants can move from following values: Production mode to Test P – Production mode. The mode at any time.customer will be billed for theorder. This is the default value.
9
-
Appendix B (continued)
Field Name Description Value
Mode (continued) T – Test mode. Specify this However, only HSBC can value only when you have move a merchant from testmade arrangements with mode to Production mode.the payment processor. 1 character maximum.
OrderDesc Required. A free-form 54 characters maximum 1.description of the order.
OrderHash Required. The value returned 28 characters maximum.from the Hash Generator
OrderId Required. A unique identifier 36 characters maximum.for the order. This value mustbe generated by the merchant.
PurchaseAmount Required. The amount of the 18 digits maximum.purchase, expressed as apositive integer.If the currency containsdecimals, omit the decimalpoint. The Secure ePaymentsServer interprets the valueas having the appropriatenumber of decimal places.For example, a 9999999value in Sterling (GBP),which has two decimalplaces, is interpreted as99999.99 pounds.
PurchaseCurrency Required. The currency code 3 characters maximum.for the order. See AppendixE for information onacceptable values.
StorefrontId Required. The client ID or A valid client ID is a numberclient alias of the Store. between 0 and 999999999.
A valid client alias is of theform UK12345678CUR.The alias name is case sensitive.
10
Notes:1 OrderDesc – Freeform field for merchant use, reserved for future implementation. At present can be ‘zero-filled’
(whitespace/alphanumeric – but not zero-length).
-
Appendix B (continued)
Field Name Description Value
TimeStamp Required. Date and time of Integer value (currently the purchase expressed as 13 digits in length).the number of milliseconds See note 3 below.elapsed since January 1,1970 00:00:00 GMT.
TransactionType Optional. Must be one of the See note 2 below.following values:Auth – Known as a PreAuthtransaction within theSecure ePayments Server.Capture – Known as anAuth transaction within theSecure ePayments Server.
UserId Optional. A unique identifier 32 characters maximum.associated with a user.
Notes:2 TransactionType:
An Auth transaction places a reserve on the cardholders open-to-buy balance, the cardholder’s available remainsunchanged. Once the goods have been confirmed as ‘shipped’, a merchant will use the Store Administrator tool tomark the order as ‘shipped’. This process then automatically marks the funds ready for settlement.
A Capture transaction verifies the cardholder’s account to be in good standing, and automatically marks thefunds ready for settlement. This is typically used for goods that do not need to be physically shipped (for example,software download).
3 TimeStamp – The window of opportunity for a valid TimeStamp is +/-1 hour from the HSBC CPI server time, basedon the actual time of submitting the merchant POST. All calculations are to be based on GMT time zone.
11
-
Appendix B (continued)Billing information
The following table lists the billing fields. Billing information is optional, because the merchantcan collect this information from the CPI. However, if one billing field is submitted, then all fieldslisted as required must be submitted.
Table 2 Billing information
Field Name Description Value
BillingAddress1 Required. The first line of 30 characters maximum.the customer’s address.This field typically includesthe street name and numberor box number.
BillingAddress2 Optional. Additional 30 characters maximum.address information.
BillingCity Required. The city in which 25 characters maximum.the customer resides.
BillingCountry Required. The 3-digit 3 characters maximum.country code. See AppendixF for information
on acceptable values.
BillingCounty Optional. The state or 25 characters maximum.county in which thecustomer resides.
BillingFirstName Required. The customer’s 20 characters maximum.first name.
BillingLastName Required. The customer’s 20 characters maximum.last name.
BillingPostal Required. The customer’s 20 characters maximum.postal code.
ShopperEmail Required. The customer’s 30 characters maximum.e-mail address.
12
-
Appendix B (continued)Delivery information
The following table lists the delivery fields. Delivery information is optional, because the merchantcan collect this information from the CPI. However, if one delivery field is submitted, then allfields listed as required must be submitted.
Table 3 Delivery information
Field Name Description Value
ShippingAddress1 Required. The first line of 30 characters maximum.the recipient’s address. This field typically includes thestreet name and number or box number.
ShippingAddress2 Optional. Additional 30 characters maximum.address information.
ShippingCity Required. The city in which 25 characters maximum.the recipient resides.
ShippingCountry Required. The 3-digit 3 characters maximum.country code. See AppendixF for information onacceptable values.
ShippingCounty Optional. The state or 25 characters maximum.county in which the recipient resides.
ShippingFirstName Required. The recipient’s 20 characters maximum.first name.
ShippingLastName Required. The recipient’s 20 characters maximum.last name.
ShippingPostal Required. The recipient’s 20 characters maximum.postal code.
13
-
Appendix B (continued)CPI returned POST
When the CPI has completed its series of tasks, the PurchaseDate and CpiResultsCode fields arealways returned to the storefront via a secure POST to the merchant’s website.
The PurchaseDate field indicates the date and time of the purchase as the number of millisecondselapsed since January 1, 1970 00:00:00 GMT.
Table 4 CPI returned POST – obligatory returned fields
Field Name Description Value
CpiResultsCode Transaction status Numeric value between0 and 16. See separate table onpage 15 for more information.
PurchaseDate Processing date and time System generated.of the purchase expressed Integer value (currently as the number of 13 digits in length),milliseconds elapsed since based on GMT time zone.January 1, 197000:00:00 GMT.
In addition to the two fields detailed above, the CPI, assuming that they were contained withinthe merchant POST, will return the following fields:
Table 5 CPI Return POST – optionally returned fields
Field Name Description Value
MerchantData Merchant security and 512 characters maximum.order details
OrderHash System generated. See CPI 28 characters maximum.returned order Hash section(page 14) for more information
OrderId Merchant security and 36 characters maximum.order details
PurchaseAmount Merchant security and 18 digits maximum.order details
PurchaseCurrency Merchant security and 3 characters maximum.order details
14
-
Appendix B (continued)
Field Name Description Value
ShopperEmail Billing information 30 characters maximum.
StorefrontID Merchant security and 13 characters maximum.order details
In order to avoid the possibility of data tampering, merchants are advised to check the validity ofthe CPI returned POST fields by comparing them to the information they originally sent withinthe merchant POST.
CPI returned OrderHash
The CPI returned OrderHash is constructed from the other data returned within theCPI returned POST.
To check the validity of the CPI returned POST OrderHash (and to check the data integrityof the returned information), a merchant is advised to create a second OrderHash using thereturned information (excluding the CPI returned OrderHash). The merchant will generatea new OrderHash, and then compare with the CPI returned POST OrderHash.
With a successful comparison of the OrderHash values (and comparisons of the other returnedinformation, for example the original MerchantData and returned MerchantData fields),a merchant will be able to deduce if data tampering has occurred, and construct an appropriateresponse to the situation.
15
-
Appendix B (continued)CpiResultsCode breakdown
The CpiResultsCode field indicates the transaction result. The following table lists the possiblereturn values of the CpiResultsCode field:
Table 6 CpiResultsCode Values
Code Description
0 The transaction was approved.
1 The user cancelled the transaction.
2 The processor declined the transaction for an unknown reason.
3 The transaction was declined because of a problem with the card. For example,an invalid card number or expiration date was specified.
4 The processor did not return a response.
5 The amount specified in the transaction was either too high or too low for the processor.
6 The specified currency is not supported by either the processor or the card.
7 The order is invalid because the order ID is a duplicate.
8 The transaction was rejected by FraudShield.
9 The transaction was placed in Review state by FraudShield.1
10 The transaction failed because of invalid input data.
11 The transaction failed because the CPI was configured incorrectly.
12 The transaction failed because the Storefront was configured incorrectly.
13 The connection timed out.
14 The transaction failed because the cardholder’s browser refused a cookie.
15 The customer’s browser does not support 128-bit encryption.
16 The CPI cannot communicate with the Secure ePayment engine.
Note:1 When a transaction is placed in ‘Review’ state by FraudShield, it can be authorised, but it cannot be settled until
it is reviewed by a merchant administrator and either accepted or rejected. For more information on reviewingtransaction, refer to the Store Administrator Guide.
16
-
Appendix CExample code
Java code sampleNote: Supported platforms for the Java package are outlined in the CPI integration software requirements on page 3.
The Java package contains the com.clearcommerce.CpiTools.security. HashGenerator class, whichcontains one public method, generateHash( ). This method generates a base64-encoded hash fromthe specified vector and key.
The params argument is a vector of strings. The key argument is the CPI Hash Key sent by letterto the merchant. The syntax of this method is as follows:
public static String generateHash( Vector params, String key )
The following example code illustrates the use of the HashGenerator class.
import java.lang.*;import java.util.*;importcom.clearcommerce.CpiTools.security.HashGenerator;
class HashTest{
public static void main( String argv[] ) throws Exception{
if ( argv.length < 2 ){
System.err.println("Usage: HashTest encryptedKey hashElement..." ); return;
}
String encryptedKey = argv[ 0 ];Vector hashElements = new Vector( );for ( int i=1; i
-
Appendix C (continued)C code sampleNote: Supported platforms for the C library are outlined in the CPI integration software requirements on page 3.
The CcCpiTools.h file contains two functions. The GenerateHash function creates a base64-encodedhash of the specified parameters using a specified key. The function returns a pointer to the hashif successful, or NULL if the case of a failure. Its syntax is as follows:
GenerateHash(char **params, const char *key );
The params argument is a NULL-terminated array of C strings. The key argument is the CPIHash Key sent by letter to the merchant. The DestroyHash function deletes a hash created byGenerateHash function. Its syntax is as follows:
DestroyHash(char *hash );
The following sample code illustrates the use of the OrderHash functionality.
/* TestHash.c */#include #include
int main( int argc, char **argv ){
char *strEncryptedKey;char **ppHashElements;char *strHashValue;int rc = 0;if ( argc < 3 ){
fprintf( stderr, "Usage: TestHash encryptedKeyhashElement...\n" );return 1;
}strEncryptedKey = argv[ 1 ];ppHashElements = &argv[ 2 ];
strHashValue = GenerateHash( ppHashElements, strEncryptedKey );
if ( !strHashValue ){
fprintf( stderr, "Error generating hash!\n" );rc = 2;
}else
{fprintf( stdout, "Hash value: %s\n", strHashValue );}
DestroyHash( strHashValue );return rc;}
18
-
Appendix C (continued)Sample HTML form code
The following sample code contains basic HTML form information that could be used toconstruct the merchant POST. The sample form data supplies the CPI with all (required andoptional) merchant security and order details. If a merchant had chosen to collect billing anddelivery information, more data fields would need to be supplied for maximum fraud prevention(see page 7 for more information).
Result Url: Return Url: Merchant Data: Mode: Order Description: Order Hash: Order Id: Purchase Amount: Purchase Currency:
Storefront Id:
Time Stamp:
Transaction Type:
User Id:
19
-
Appendix C (continued)CGI code sample
The example code below uses PERL to handle the returned CPI data and appends theinformation to a local results file.
#!/usr/local/bin/perl
if ($ENV{'REQUEST_METHOD'} eq 'POST') {read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});@datapairs = split(/&/, $buffer);
}
foreach $pair (@datapairs) {local($name, $value) = split(/=/, $pair);$Form{$name} = $value;
}
open ("LOG", ">> results.txt");print LOG "$Form{'CpiResultsCode'} , $Form{'PurchaseDate'} ,$Form{'OrderId'}, $Form{'PurchaseAmount'} ,$Form{'PurchaseCurrency'} , $Form{'ShopperEmail'} ,$Form{'StorefrontId'} \n";close (LOG);
exit;
20
-
Appendix DOrderHash Generation
The supplied Java and C libraries contain the (public) function GenerateHash.
This function acts on supplied data and generates an OrderHash for further use (eithersubmission to the engine, or validation of returned data).
If the information from the sample HTML form code on page 19 were to be used to generatean OrderHash, the relevant fields would be as follows:
CpiDirectResultUrl https://srvr:8443/cpi/result.jspCpiReturnUrl https://srvr:8443/cpi/return.jspMerchantData SessionId1234567890Mode POrderDesc Item DescriptionOrderId UK11111111GBP_00000001PurchaseAmount 10000PurchaseCurrency 826StorefrontId UK11111111GBPTimeStamp 1041379200000TransactionType CaptureUserId User_000001
The array of data to be sent to the GenerateHash program would be:
{https://srvr:8443/cpi/result.jsp, https://srvr:8443/cpi/return.jsp,SessionId1234567890, P, Item Description, UK11111111GBP_00000001, 10000,826, UK11111111GBP, 1041379200000, Capture, User_000001}
Note:The field names are not sent to the GenerateHash function.The order of the submitted information is irrelevant.
The GenerateHash program then returns the constructed OrderHash, with a maximum length of28 characters, (for example “abcdefghijklmnopqrstuvwxyzab”) for further use.
In a multi-currency situation, the shared secret supplied to the OrderHash generator must matchthe currency of the transaction – see multi-currency on page 6 for more information.
21
-
Appendix ECurrency codes
For each transaction that is submitted from a storefront to the PAS, an ISO4217 (fifth edition standard) currency code must be specified. The table below lists examplesof currency codes acceptable by the Secure ePayments.
Table 7 Currency codes
Country Currency Currency Code Exponent
Europe Euro 978 2
Hong Kong Hong Kong Dollar 344 2
Japan Japanese Yen 392 0
United Kingdom Pound Sterling 826 2
United States US Dollar 840 2
22
-
Appendix FCountry codes
Country codes needed to determine the BillingCountry/ShippingCountry fields for submittedorders are listed within ISO 3166. See the Store administrator guide for a detailed list ofcountry codes.
23
-
Appendix GSupported encryption technologies
The CPI currently supports secure POSTs via SSL3.0 and TLS1.0 technologies(please note, SSL2.0 is unsupported).
Only a limited set of cipher suites are enabled for the two security protocols,these are outlined below:
TLS1.0
RC4 encryption with a 128-bit key and an MD5 MACTLS_RSA_WITH_RC4_128_MD5
FIPS 140-1 compliant triple DES encryption and a SHA-1 MACTLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
Triple DES encryption with a 168-bit key and a SHA-1 MACTLS_RSA_WITH_3DES_EDE_CBC_SHA
SSL3.0
RC4 encryption with a 128-bit key and an MD5 MACSSL_RSA_WITH_RC4_128_MD5
FIPS 140-1 compliant triple DES encryption and a SHA-1 MACSSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
Triple DES encryption with a 168-bit key and a SHA-1 MACSSL_RSA_WITH_3DES_EDE_CBC_SHA
24
-
Appendix HStore administrator tool
The Store Administrator Tool provides access to store details on the Secure ePayments (enablingstore user set-up, report generation etc – full details of the functionality of the store administratortool are provided in the ‘Store Administrator Guide’).
At present, the following browsers are supported for access to the store administrator tool:
Netscape 6.2.x or later on HP-UX, Sun Solaris, or Microsoft WindowsInternet Explorer 5.5 with Service Pack 2 or greater on Microsoft WindowsInternet Explorer 6.0 (with no service pack, or Service Pack 1 or greater) on Microsoft Windows
At present, the following browsers are blocked for access to the Store Administrator Tool:
Netscape 6.0.x on HP-UX, Sun Solaris, or Microsoft WindowsNetscape 6.1.x on HP-UX, Sun Solaris, or Microsoft Windows
Note:Access to the store administrator tool through Internet Service Provider software, which provides a custom interface toMicrosoft Internet Explorer software (for example, AOL (versions 8 and below), CompuServe) is unsupported.
25
HSBC Bank plcCommercial Service andSales Centre51 De Montfort StreetLeicesterLE1 7BB
www.hsbc.co.uk MC
P18
295
05/
03
Issued by HSBC Bank plc. We are a principal member of theHSBC Group, one of the world’s largest banking and financialservices with over 9,500 offices in 80 countries and territories