E-xact Knowledge Base

Hosted Checkout Integration Manual

* To download a PDF copy of the Hosted Checkout Integration Manual click the "Export to PDF" option on the right hand side.  2 Introduction
Hosted Checkout is a securely hosted web payment form
designed to accept Internet based E-commerce transactions.

With Hosted Checkout customers can pay with their credit cards
or directly from their bank account through INTERAC Online
(IOP). IOP enables a customer to pay directly from their bank
account and utilizes the customer’s existing online banking
interface to authorize the transaction and facilitate payment.
The customer’s online experience will include a redirection to
their online banking website from Hosted Checkout. Once
authenticated the customer is returned to the Hosted Checkout web page
where the process is completed and a receipt is displayed to
them.

With Hosted Checkout in place a merchant is no longer exposed to the
sensitive payment details required to process a payment.
Additionally, the merchant has access to an expanding tool kit
of payment options and fraud prevention tools without the need
for additional development.

Hosted Checkout redirects the customer to a point of sale form
hosted by E-xact Transactions for payment collection. To
accomplish this the merchant displays a "Checkout" button
within an HTML form on their website that will submit a
POST request to the following URL:

https://checkout.e-xact.com/payment

Within the parameters of this HTML form the merchant
specifies the location of the Payment Page along with payment
details and authentication information. These parameters are
usually “hidden” in the HTML code.

At the end of the payment process all parameters that define
the status of the transaction can be returned to the merchant in
real-time.

The appearance and payment options displayed on the Payment
Page are configured through an online management interface
available to all E-xact merchants.

At the end of the payment process all required parameters that
define the status of the transaction are returned to the Merchant.

This document will also focus on a specific payment type
available through Hosted Checkout called Interac Online, or IOP,
and covers the configuration of the merchant's account at E-xact,
the request parameters for the payment form and how they are
processed, and includes request examples.

3 Customer Experience
A successful scenario for a payment sequence from the customer’s
perspective would be as follows:

3.1 Customer Confirms Order on Merchant's
          Website

For example, this illustration shows a fictitious checkout page that
is the last step in ordering items from the website
http://store.merchant.com (Illustration 1).

When the customer clicks the highlighted “Checkout” link they
leave the merchant's site and land on E-xact Transactions’ Hosted Checkout
payment form (Illustration 2).

Illustration 1

3.2 Customer Lands on the Hosted Checkout
          Payment Form

Illustration 2

The payment page corresponding to this example payment form is
configured for both credit card and INTERAC Online payments and the
customer can easily choose between these two options.

Section 3.3 follows the customer experience for the credit card payment
option while section 3.4 illustrates the customer experience for the
INTERAC Online option.

3.3 Customer Experience: Credit Card Payment
The customer enters their credit card information in the payment form
(Illustration 2) and clicks the “Pay With Your Credit Card” button. The
payment is immediately processed while the customer is shown a wait
screen.

3.3.1 Credit Card Payment is Processed
Illustration 3

3.3.2 Credit Card Payment Customer Receipt
If the credit card information is correct, the payment is processed and the
customer shown their receipt:
Illustration 4

Note: See Section 7 Relay Response Mode, for the option of the
merchant's web server producing the receipt page.

3.4 Customer Experience: INTERAC Online Payment

When the customer hits the “Pay From Your Bank Account” button they
are taken to the next step in the payment sequence (Illustration 5). Note:
this page is not normally visible to the customer as it redirects automatically
when the web browser has JavaScript turned on. If JavaScript is disabled
they will need to hit the “Continue Payment” button.

3.4.1 Customer is Redirected to INTERAC Online
Illustration 5

3.4.2 Customer Chooses Their Bank at INTERAC Online
After the customer selects their bank (Illustration 6), they are directed to log in
at the bank's website, select the appropriate bank account, and are then
redirected back to the Hosted Checkout site. The payment is immediately finalized.

Illustration 6

3.4.3 INTERAC Online Payment is Processed
Illustration 7

3.4.4 INTERAC Online Customer Receipt
When the payment has been finalized, the receipt is displayed to the customer
(Illustration 8).
Illustration 8

3.5 Appearance
The merchant can customize the appearance of their Hosted Checkout page as follows:

1. All pages (except for the Interac Online page) can be styled to match the
    merchant's website design by configuring a colour scheme and specifying the
    logo to be displayed.

2. The merchant’s server can be set to render entirely the last page (customer
    receipt display) through Relay Response. See Section 7. Relay Response
    Mode.See Illustration 4 and 8 for examples of customer receipts.
 
4 Configuration

The Hosted Checkout payment page configuration determines how each
payment is processed. This configuration covers payment processing
presentation and functionality such as Relay Response Mode and email
notification.

The redirect to Hosted Checkout's payment form requires the configuration of at least
one Payment Page, each identified by a unique "Payment Page ID". This ID
is passed in as the "x_login" parameter when the merchant redirects to the
Payment Page to process a transaction. See Section 6.1 Essential Fields

Payment pages are administered through the "Hosted Checkout" tab,
accessible only to administrators (Illustration 9). The payment page record
describes several aspects of the payment page form:
  • General Settings: Defines the Name and Location of the Payment Pg
  • Appearance: Defines the look and feel of the Payment Page
  • Terminals: How payments are processed
  • Email: Notifications about orders and submission errors for the
  • merchant,sending customer receipts by email
  • Relay Response:     Relay Response URL and security keys
  • Keys:        Main key for the Payment Page Redirect
Illustration 9
Merchants can add as many payment pages as required. This allows the support
of:
  • Multiple shopping carts
  • Multiple languages
  • Various processing options (i.e. one payment page for INTERAC Online
  • payments, one payment page for credit card payments only, etc.)
  • A dedicated demo payment page
To add a new payment page, click the “New Payment Page” link.

To change an existing payment page, click on its Payment Page ID.

Additionally, existing payment pages can be previewed or deleted on this
tab.

4.1.1 Payment Record: General Settings
The General Settings tab of a payment page defines its name and location
(Illustration 10).
Illustration 10

The “Return to Your Site” URL is used for the “Return to Hosted Checkout
Example Shop” link in Illustration 2. It is also used for timeout pages
allowing the customer to return to the merchant's website.

The Payment Page ID is generated by the system and cannot be changed.
It corresponds to the redirect parameter “x_login”. Payments may be
processed in test or live mode. This option may be preconfigured (as shown
here) depending on terminal settings. For instance, the example account
here has no live terminals available. Test mode can also be triggered with
the redirect parameter “x_test_request”; see Section 6.2 Transaction and
Display Fields.

For “Receipt Link Method” details, please see Section 8 Receipt Link/Silent
Post. This setting may be overridden with redirect parameter
“x_receipt_link_method”. The  “Receipt Link Text” and URL appear as the
link definition shown in Illustration 4, “Go back to Example Shop”. They
may be overridden with redirect parameters “x_receipt_link_text” and
“x_receipt_link_url”.

4.1.2 Payment Page Record: Appearance Settings
The appearance of the Hosted Checkout pages for a payment page is configured in the
Appearance tab where the language, logo, and background and text colours
can be set (Illustration 11).
Illustration 11

4.1.3 Payment Page Record: Terminals Settings
The payment processing terminal options can be set in the Terminals tab
(Illustration 12).
Illustration 12

For INTERAC Online processing choose one of the following options:
  1. Offer both Credit Card and INTERAC options
  2. Offer INTERAC option only
  3. Offer INTERAC option only (bypass the first page at checkout)
Notes:
- Option 1 corresponds to the configuration for the Hosted Checkout pages shown in
  Section 3 Customer Experience
- With Option 2 the credit card payment form will not be shown to the
  customer.
- With Option 3 the customer experience is the same as Option 2 except
  that the page in Section 3.2 Customer Lands on the Hosted Checkout
  Payment Form, is skipped.
- Select the desired merchant/terminal combinations under the sections
  “Credit Card Processing”, “INTERAC Online Processing”,
  “Test Processing – Credit Card”, “Test Processing – INTERAC”.

In the sample account shown there are no live processing terminals
available; therefore that option is not displayed.

Note: When a payment request is made in test mode the “Pay from your
Bank Account” button on the Hosted Checkout payment form will not redirect to the
Interac Online site, but to a page hosted by E-xact that simulates an
INTERAC Online payment.

4.1.4 Payment Page Record: Email Settings
Hosted Checkout can be configured to send order confirmation emails to the
customer (Illustration 13).
Illustration 13

If the Email Enabled option is checked, the payment form will show an email
field for the customer to fill in. A copy of this email will be sent to the
designated Notification Email as well. The email will be sent from the address
configured in the “From” field.

The Notification Email address will also receive emails in the case that errors
occur during processing. The most common incident of a processing error
during Hosted Checkout is due to invalid payment form requests (for example,
if the “x_fp_hash” is invalid). Therefore, Notification Email is not an optional
field.

The order notification email can also be configured with optional merchant
defined headers and footers.

4.1.5 Payment Page Record: Relay Response Settings
The Relay Response mode of Hosted Checkout (Illustration 14) is covered in further detail
in Section 7. Two values are needed:
  1. Relay Response URL
  2. Relay Response Key
Illustration 14

This tab also contains the Silent Post option. Populating the Silent Response
URL enables this feature. See Section 8 Receipt Link/Silent Post.

4.1.6 Payment Page Record: Transaction Key Setting
The parameter x_fp_hash validates that the merchant’s server generated the
redirect parameters correctly. Its calculation is based on the transaction key
along with other redirect parameters. Transaction key is generated and set in the
Keys tab (Illustration 15) as a random string by E-xact’s servers.
Illustration 15

The key can be changed with the Generate New Merchant Key button.

Note: Changing the transaction key will break existing links to the payment
page.

5 Character Encoding
Incoming parameters should be encoded in UTF-8 to ensure correct text display
and processing.

6 Payment Form Fields
The merchant interfaces with Hosted Checkout by displaying an HTML form on a website
page that submits a POST request to Hosted Checkout at
https://checkout.e-xact.com/payment. Using fields that are usually HTML-
hidden within the form the merchant specifies the particulars about the payment.
The fields supported by Hosted Checkout are described in this section.

6.1 Essential Fields
The following parameters are required, and validated with each request. If one
is missing or the validation fails the customer will see an error page. The
merchant will also receive an email explaining the problem.

 Field Value
 Description
 x_login
  

 Varies by merchant
Maximum length 20, the Payment Page ID from the Administration Console. Case-sensitive.
x_fp_sequence Chosen by merchant Can be a random number. Used in “x_fp_hash” calculation in order to make it unique but not used otherwise. Returned with Relay Response / Silent Post / Receipt Link. No length restriction
x_fp_timestamp
Time in seconds since January 1, 1970. UTC, Coordinated Universal Time
Requests expire after 15 minutes / 900 seconds.
x_amount
Positive number
Total dollar amount to be charged inclusive of freight and tax; Maximum Length 15
x_fp_hash
String
HMAC-MD5  hash from the merchant’s transaction key and concatenation of the values for “x_login”, “x_fp_sequence”, “x_fp_timestamp”, “x_amount”, and (if given) “x_currency_code” – all separated by the  “^” character. Note that if “x_currency_code” is not present, then a “^” character is still added. The transaction key is generated within the payment page configuration section of the Administration console tab, “Keys”.
x_show_form
 
PAYMENT_FORM
Case-sensitive

Notes:
- The “x_fp_hash” parameter serves solely as verification that the form was
   generated by the merchant's server, and not by the customer or a third party.
   Its calculation depends on the merchant’s private Transaction Key. The
   Transaction Key is discussed in Section 4.1.6 Payment Page Record:
   Transaction Key Setting.
- The “x_show_form” parameter is required in order to stay compatible with
   the Authorize.Net protocol. See Section 12 Authorize.net SIM Compatibility

6.2 Transaction and Display Fields
These parameters are validated as indicated below. If invalid, one of the
following two scenarios will occur:

- The customer's browser will display an error page and the merchant
   will be notified by email
- A default value will be substituted
- The parameters are passed on as received by Hosted Checkout in:
  • Notifications to the merchant about errors
  • Relay response posts (see Section 7 Relay Response Mode)
  • Receipt Link GET/POST/REDI
Name/Area
Validation
Explanation
Processing Fields
x_test_request
TRUE/FALSE
Process payment in test mode. Case-sensitive.
x_type
AUTH_CAPTURE /
AUTH_ONLY
The type of the transaction.
AUTH_CAPTURE is Purchase/Sale.
AUTH_ONLY known as Authorization
/ Preauthorization
Note: There is no Interac preauthorization.
An Interac payment with
“x_type” of AUTH_ONLY will be processed as AUTH_CAPTURE.
Receipt Page Fields
x_receipt_link_method
LINK/GET/POST
Specifies the type of link made back to the merchant's website. Case-sensitive.
x_receipt_link_text  
Any text
Hyperlinked text or submit button value. Is displayed with further formatting. With GET or POST a form is generated with hidden fields that contain the result of the processed transaction. If empty, default value "Return to Merchant website title" is used. Merchant website title is set in the Hosted Checkout interface.
x_receipt_link_url
Valid URL
Target of hyperlinked text or action for HTML GET/POST. If empty or not a valid URL, the default value from the Hosted Checkout interface is taken.
Fields Common to Payment Form and Receipt Page
x_logo_url
Valid URL
Displayed on header of Payment Form and Receipt Page. If empty or not a valid URL, the default value from the Hosted Checkout interface is taken.
x_color_background
HTML colour name or hex code
Background colour of the Payment Form and Receipt Page. If empty or invalid, default value from the Hosted Checkout interface is used.
Email Setting Fields
x_email_customer
TRUE/FALSE
Should a confirmation email be sent to the customer; default is set in the Administration Console's payment page configuration section.
x_merchant_email
Valid email address
Email address to which the merchant's copy of the customer confirmation email should be sent. If a value is submitted an email will be sent to this address as well as the addresses
configured in the payment page configuration section of the Administration Console. No email will be sent to this address if it does not meet standard email format checks.
Transaction Data FieldsTransaction Data Fields
x_currency_code
USD or CAD
Currency of the transaction. Case sensitive. (INTERAC Online supports only CAD)

6.3 Order and Customer Detail Fields
The parameters below describe details about the order and the customer and
all are optional. They are passed as received by Hosted Checkout via:
  • Notification emails to the merchant about errors
  • Relay response POST's (see Section 7 Relay Response Mode)
  • Receipt Link GET/POST/REDI
Order Information Fields
Explanation
x_cust_id
Not validated. Unique identifier for the customer associated with the transaction.  Not displayed to the customer
x_invoice_num
Merchant-assigned invoice number. Truncated to the first 20 characters and becomes part of the transaction. It appears in column “Ref Num” under Transaction Search and “TRANS. REF” in the CTR (customer transaction record).
x_customer_tax_id
Not validated. Tax ID of the customer. Not displayed to the customer.
x_line_item
See note below.
x_po_num
Purchase order number. Truncated to the first 20 characters and becomes part of the transaction.  It appears in column “Customer Reference Number” under Transaction Search. It does not appear in the receipt.
x_description
Not validated. Description of the transaction. Not displayed to the customer.
x_reference_3 Additional Reference Data. Maximum length 30 and becomes part of the transaction. It appears in column "Reference Number 3" under Transaction Search. It does not appear in the receipt.
Customer Name and Billing Address Fields
x_first_name
For billing address
x_last_name
For billing address
x_company
For billing address
x_address
For billing address
x_city
For billing address
x_state
For billing address
x_zip
For billing address
x_country
For billing address
x_phone
For billing address
x_fax
For billing address
Customer Shipping Address Fields
x_ship_to_first_name
For shipping address 
x_ship_to_last_name
For shipping address  
x_ship_to_company
For shipping address  
x_ship_to_address
For shipping address  
x_ship_to_city
For shipping address  
x_ship_to_state
For shipping address  
x_ship_to_zip
For shipping address  
x_ship_to_country
For shipping address  
Additional Customer Data Field
x_customer_ip
IP address of the customer.
x_email
Email address to which the customer's copy of the confirmation email is sent. No email will be sent if the email address does not meet standard email format checks.
Additional Amount Fields
x_tax
Non-negative Number. The tax in dollars.
x_tax_exempt
TRUE/FALSE
x_freight
Non-negative Number. Freight charge in dollars.
x_duty
Non-negative Number. Duty in dollars.

Note regarding "x_line_item": Fields with this name contain itemized order
information delimited by the three characters, <|>

The format is:

Item ID<|>Item Name<|>Item Description<|>Item Quantity<|>Item Price<|>Item Taxable(YES/NO)<|>


This parameter may occur several times (with different items). The item
details are displayed on the Hosted Checkout payment form and receipt page
for the customer's reference.


Notes on Additional Amount Fields: the “x_tax”, “x_freight”, “x_duty”
amounts are for display within the order information and order confirmation
emails only. Hosted Checkout performs no calculations with these numbers. They are
passed back to the merchant with Relay Response, Silent Post, and Receipt
Links.

6.4 Unsupported Fields and Unsupported Authorize.net
          Functionalities

The following fields and their corresponding Authorize.net functionality are
not supported by Hosted Checkout:

Field
Comment
x_header_html_payment_form
Ignored, not validated
x_footer_html_payment_form
Ignored, not validated
x_header_html_receipt
Ignored, not validated
x_footer_html_receipt
Ignored, not validated
x_recurring_billing
Flagged as an error, if present and not “NO”.
x_bank_aba_code
Flagged as an error, if present and not “NO”.
x_bank_acct_type
Flagged as an error, if present and not “NO”.
x_bank_name
Flagged as an error, if present and not “NO”.
x_echeck_type
Flagged as an error, if present and not “NO”.
x_card_num
Flagged as an error, if present and not “NO”.
x_exp_date
Flagged as an error, if present and not “NO”.
x_card_code
Flagged as an error, if present and not “NO”.
x_trans_id
Flagged as an error, if present and not “NO”.
x_auth_code
Flagged as an error, if present and not “NO”.
x_authentication_indicator
Flagged as an error, if present and not “NO”.
x_cardholder_authentication_value
Flagged as an error, if present and not “NO”.
x_duplicate_window
Flagged as an error, if present and not “NO”.

7 Relay Response Mode

The Relay Response mode of Hosted Checkout involves sending transaction
response information to a server specified by the merchant. The response
from the merchant server is then passed on to the customer's browser as a
receipt for the transaction. It allows the merchant to tailor the receipt page to
the individual customer and update their web server in real time (for
example, to empty the shopping cart).

The merchant is required by Interac to display the values of the two fields to
the customer:
  • exact_issname (Issuing Bank Name)
  • exact_issconf (Issuing Bank Confirmation Number)
See Illustration 8: Customer Receipt for an INTERAC Online Payment.

No sensitive transaction related data is transmitted to the merchant server.

Usually the Relay Response step is only performed for successful transactions.
However, if the customer's payment attempts fail three times a “Transaction
Declined” message is posted to the merchant's server for Relay Response.

If the merchant server response is not received within 11 seconds, the
customer will be shown the ordinary Hosted Checkout receipt page.

In order to trigger Relay Response mode, set the following parameters in
the redirect request:

Field
Value
Description/Comment
x_relay_response
TRUE
Required for Relay Response. Case sensitive (FALSE is not allowed)
x_relay_url
Hosted Checkout Configuration
Optional. The URL to which the gateway posts the response. Validated with the value configured in the Hosted Checkout interface. If empty, the URL from the Hosted Checkout interface is used.

The following fields are sent in a POST request to the merchant supplied
Relay Response URL. There are four different categories of fields of which
the first three are covered in the following tables:

1.  Standard Authorize.net “x_” parameters.
2.  E-xact Hosted Checkout Relay Response fields.
3.  Most of the response fields returned for the equivalent E-xact Web service
     SOAP request.
4.  Most of the POST parameters from the initial request from the merchant's
     website to the Hosted Checkout payment form. This includes, “x_login”, “x_amount”
     etc.
5.  The server response should be in HTML format, and is passed on to the
     customer's browser for final display.

7.1 Standard Authorize.net Fields
The fields below apply to both INTERAC Online payments and credit card
payments.

Field
Description
Explanation
x_response_code
Response code
1 for “Approved”, 2 for “Declined”, 3 for “Error”
x_response_subcode
Response Subcode
Internal value. Future use.
x_response_reason_code
Response Reason Code
See table under Section 7.6 Response Reason Codes and Text, below.
x_response_reason_text
Response Reason Text
See table under Section 7.6 Response Reason Codes and Text, below.
x_auth_code
Approval Code
Authorization number of the transaction
x_trans_id
Transaction Id
Unique identifier, generated by E-xact Transactions. 
x_MD5_Hash
MD5 Hash
MD5 hash, in hexadecimal, of the concatenation of these strings:
  • Payment Page Configuration Relay Response Key
  • “x_login”
  • Transaction ID (field “x_trans_id”)
  • Amount, two digits after the period ($100 is used as “100.00”)

7.2 Standard Authorize.net Fields
     (Credit Card Only)

The fields below do not apply to INTERAC Online payments and will be empty in this case.

Field
Description
Explanation
x_avs_code
Address Verification Result Code
See table under Section 7.8 Address Verification Result Codes
x_cvv2_resp_code
CVV2 Response Code
See table under Section 7.9 CVV2 Verification Indicator Codes
x_cavv_response
CAVV Response Code
Not supported. Field is empty.

7.3 E-xact Additional Fields

Field
Description
Explanation
exact_wsp_version
WSP Protocol Version
Latest value 1.7
exact_ctr
Receipt
E-xact generated Customer Transaction Record (CTR)
exact_issname
Issuer Name
The name of the customer's bank. The merchant is required by INTERAC to display this field to the customer. 
exact_issconf
Issuer Confirmation Number
The confirmation number generated by the customer's bank. The merchant is required by INTERAC to display this field to the customer. 

7.4 E-xact SOAP Response Fields
The fields below apply to both INTERAC Online payments and credit card
payments.

Field
Description
Explanation/Details
Authorization_Num
Authorization number
The authorization number returned by the financial institution. 
Bank_Message
Describes the Bank_Resp_code
Message provided by the financial institution.
Bank_Resp_code
2 or 3 digit code
See table under Section 7.7 Common Bank Response Codes. 
Bank_Resp_code_2
2 digit code
A secondary response returned by the financial institution.
CardHoldersName
Customer's name
Up to 30 characters. This name will also appear under the Administration Console's Transaction Search tab. For INTERAC Online payments, this field is only useful if the  merchant populates “x_first_name” and “x_last_name” in the redirect.
Client_Email
Email Address as provided by customer
(Not passed on to the financial institution.)
Customer_Ref
Merchant Defined
The value of “x_po_num” as passed in from the merchant's website 
DollarAmount
The amount of the transaction
The amount of the transaction in dollars and cents.
Exact_Message
Message about the Processing status
Accompanies the “Exact_Resp_code” field
Exact_Resp_code
Processing Status
The processing status of the transaction. Please refer to the Knowledge Base for further information. The “Transaction_Error” property will be “True” if this property is not “00”. 
Language
Language of the CTR
  0 for English, 4 for French
Reference_No
Merchant Defined
The value of "x_invoice_num" as passed in from the merchant's website
SequenceNo
Sequence Number
Sequentially incremented number generated by E-xact and passed through to the financial institution
TransactionCardType
Payment Type
The type of credit card, e.g. "VISA", "MASTERCARD", or for INTERAC Online payments, "Interac Online Debit"
Transaction_Approved
Flag indicating transaction approval
Indicates that the bank approved a transaction and there are no pending errors
Transaction_Error
Error flag
Indicates that there was an error during the processing of the transaction. Values are "true" or "false".
Transaction_Tag
Tag of the transaction
Identifier for the tagged transaction. Same as "x_trans_id"

7.5 E-xact SOAP Response Fields
          (Credit Card Only)

The fields below do not apply to INTERAC Online payments and will be
empty for IOP transactions.

Field
Description
Explanation
AVS
Address Verification Result
See table under Section 7.8 Address Verification Result Codes
CAVV Cardholder Authentication Verification Value
Value returned by the Access Control Server to indicate that a cardholder has been validated
CAVV_Algorithm
Method used to calculate CAVV
Sent in authorization request.
CAVV_Response
Validity of the CAVV value provided
Not supported
CVD_Presence_Ind
How the CVV2 value is handled
See table under Section 7.9 CVV2 Verification Indicator Codes 
CVV2
Authentication Code returned by the bank
See table under Section 7.10 CVV2 Result Codes
CardHoldersName
Customer's Name
Up to 30 characters
Card_Number
The credit card number
This value is masked
Retrieval_Ref_No
AVS related
The reference number returned with an AVS result
Secure_AuthRequired
3-D Secure Field
Indicates the status of a 3-D Secure transaction. Used for internal audit.
Secure_AuthResult
3-D Secure Field
Indicates the status of a 3-D Secure transaction. Used for internal audit.
ZipCode
Customer address field
Used for qualifying transactions.

7.6 Response Reason Codes and Text
The fields below are the Response Reason Codes supported by Hosted Checkout.

Response Reason Code
Response Reason Text
1
Transaction has been approved
2 Transaction has been declined
3
An error occurred while processing the transaction

7.7 Common Bank Response Codes
The codes below appear in the field “Bank_Resp_Code”.

Bank_Response_Code
Message
000
Approved
200 Authorization Declined
218
Request Denied
292
Banking Network Down Please Retry
294
Busy Please Retry
297
Error - Retry
299
Error - Retry

7.8 Address Verification Result Codes
The values below occur in the fields “AVS” and “x_avs_response”.

Value
Explanation
A
Address matches but ZIP/Postal code does not
B
Address not provided
E
AVS Error
G
Card issuer does not support AVS
N
No match on address and ZIP/Postal Code
P
AVS does not apply to the transaction
R
System unavailable - Retry
S
Card issuer does not support AVS
U
No address available
W
9 digit ZIP/Postal Code match, address does not
X
Address and 9 digit ZIP/Postal Code match

7.9 CVV2 Verification Indicator Codes
The values below occur in the field “CVD_Presence_Ind”. Note that if the
value is not 0 the cardholder provides it.

Value
Explanation
0
Not supported by processing terminal or card type
1
Value provided by cardholder
2
Cardholder states that value on card is illegible
9
Cardholder states that data is not available

7.10 CVV2 Result Codes
The values below occur in the fields “CVV2” and “x_cvv2_resp_code”.

Value
Explanation
M
Match
N
No Match
P
Not Processed
S
Should have been provided
U
Issuer unable to process request

8 Receipt Link / Silent Post

In addition to the Relay Response protocol, merchants can configure two
additional notification methods for completed payments:

-  Silent Post protocol triggers ‘successful payment’ notifications to the
   merchant's servers. For the merchant's server this is the same as relay
   response except that the response from the merchant server is ignored by
   Hosted Checkout and the customer is shown the usual receipt page.
   To configure Silent Post, add a “Silent Post URL” to the “Relay Response”
   tab of the Administration console.
- A Receipt Link can be configured to appear on the page once payment is
  successful. This link is set in the “General” tab of the Administration
  console. The options are LINK, an ordinary hyperlink, GET, a form with
  GET action, POST, a form with POST action, and REDI, an automatic re-
  direct back to the merchant storefront that also posts a result form back to
  the merchant server.

One key difference between the Silent Post and Receipt Link methods
is that the former is performed automatically while the user triggers the
latter (except in the case of REDI).

The fields and values sent to the merchant's servers for Relay Response
and Silent Post are the same. However, the Receipt Link method does not
include the SOAP fields and values.

The Receipt Link method does not apply normally when Relay Response
mode is used. With Relay Response, the merchant’s server generates the
receipt page where the receipt link would appear. The E-xact Transactions'
generated receipt page shown only if there is a communication failure with
the merchant's server for Relay Response.

9 Example Payment Forms
Below are a few examples of the form placed on the merchant's website
that will redirect the customer to the Hosted Checkout payment form.

9.1 Basic Example
This basic example only specifies the payment page record to use,
“x_login”, and the amount to charge, “x_amount”.


Note:

-  Replace the value for x_login with a payment page id of the merchant's
   account, and x_amount with the dollar amount payable by the customer.
- The method to generate the sequence number, x_fp_sequence is chosen
  by the merchant.
- x_fp_timestamp is the timestamp created when the form is generated.
  It is equal to the number of seconds since January 1, 1970 in UTC
  (Coordinated Universal Time).
- x_fp_hash is calculated as the HMAC-MD5 from the Transaction Key of
  the payment page with a given x_login and the string
  “x_login^x_fp_sequence^x_fp_timestamp^x_amount^” with the
   particular values replaced.
- “x_show_form” is always equal to “PAYMENT_FORM”.

9.2 Example Including Relay Response
This basic example utilizes relay response mode:


Only one additional parameter is added, compared to the example in Section
9.1:

Illustration 16
-->
9.3 Resulting Payment Form
For the two examples in Sections 9.1 and 9.2 the payment form presented to the
customer will appear as below. Colours and title may be customized. The
options credit card and INTERAC forms appearing is controlled by the payment
pages’ Terminals configuration.

9.4 Example with Order Details
The merchant has the option of specifying additional details regarding the
customer’s order:
  • Order Items including quantity and unit price.
  • Shipping and handling charges
  • Taxes
  • Duties
These values are communicated to Hosted Checkout with the independent
parameters “x_line_item”, “x_freight”, “x_duty”, and “x_tax”. For example,
this form uses “x_line_item”, ”x_freight”, and “x_tax” but not “x_duty”:


Note:

- The x_line_item parameter may be repeated with each occurrence
  corresponding to an item in the order. See Section 6.3 Order and Customer
  Detail Fields, for the format.
- Adding order items is independent of triggering Relay Response.

10 Implementation and Testing
        Guide

If a merchant is not using an Authorize.net compatible shopping cart package,
some web programming will be required. This section deals with resources
provided by E-xact that the merchant's web developer can utilize for
implementation and testing.

10.1 Generation of the Checkout Form

The main Hosted Checkout interface, displayed after a payment page is
configured, is reached via a checkout form on the merchant's website which
posts to the Hosted Checkout URL at https://checkout.e-xact.com/payment. Section 9
Example Payment Forms, lists some examples for the required HTML code.

10.1.1 Calculating the “x_fp_hash” value
One of the input fields to be calculated for each checkout form separately is the
“x_fp_hash” value. This is because one of the inputs that this value depends on is
a time stamp: a payment request with a time stamp which is 15 minutes or older
will be rejected by Hosted Checkout.

The “x_fp_hash” calculation is performed using the HMAC-MD5 key (the
Transaction Key from the payment page configuration) and the HMAC-MD5
message, or payload, as the concatenation of “x_login”, “x_fp_sequence”,
”x_fp_timestamp”, “x_amount”, and (if used) “x_currency_code” – all separated
by the  “^” character (see also Section 6.1 Essential Fields). The value of the
transaction key can be found within the “Keys” tab of the payment page
configuration as seen in the figure below.
Illustration 17

Note that even if the “x_currency_code” field is left empty, the payload for the
hash calculation should end with the ^ character.

E-xact's Knowledge Base, at http://kb.e-xact.com provides implementations
for this calculation in many programming languages including PHP, Java,
Python and Perl. See the Hosted Checkout category.

Field
Value
x_login
WSP-GOODS-70
x_fp_sequence
123454321
x_fp_timestamp
1228953556
x_amount
100.00
Transaction Key
AL81Li7D4laXYDtpfgO_lInQ

For example, using the values in the table above, the resulting HMAC-MD5 is
calculated with the payload of WSP-GOODS-70^123454321^1228953556
^100.00^
and has the value, dba76cedb7847547fd964fc903e9f2c

Note that if the “x_fp_hash” value in the merchant's form is invalid, an error
email is sent to the notification email address configured in the interface:

This is a notification that a request for payment failed for the online store Merchant's Store Title.
An error page was displayed to the customer.

Reply to this message or e-mail support@e-xact.com if you have any questions.


The following error was found:

X fp hash could not validate the integrity of the payment from the transaction key, x_fp_hash, x_fp_sequence, x_fp_timestamp, x_amount, and (optionally) x_currency_code values of the request. 

10.1.2 Testing the “x_fp_hash” calculation
The Administration Console has a tool to test the merchant's implementation
in the Hosted Checkout section. It allows merchants to inspect the hash
calculated by Hosted Checkout with known inputs. This value can then be quickly and
manually compared with the hash calculated on the merchant's side.
Illustration 18

10.1.3 Tying the Payment to a Particular Order
The parameters “x_invoice_num”, “Invoice Number”, and “x_po_num”,
“Purchase Order Number”, are optional fields designed to tie the payment to a
particular order or invoice.

If, for example, the merchant offers a “shopping cart” on their website which
the customer fills with items, the developer will find it convenient to derive a
unique Invoice Number or Purchase Order Number from the shopping cart
identifier in order to track payments for a customer's purchases.

The difference between the two fields is that “x_invoice_num” appears on the
CTR whereas “x_po_num” does not.

Both are returned to the merchant's server with Relay Response and Silent Post.

Also, both fields are truncated to 20 characters. See details in Section 6.3 Order
and Customer Detail Fields

10.2 Relay Response Implementation

When Relay Response is configured, an HTTP POST request is sent to the
configured Relay Response URL. The applicable fields are documented under
Section 7 Relay Response Mode.

10.2.1 Generated HTML
The response generated by the merchant's server to the Relay Response request
is passed on to the customer's web browser without any changes. However as
the page will still have an https://checkout.e-xact.com URL it is important to
make all links to pages or images on the merchant's website absolute.

10.2.2 Customer Cookies
The merchant's website may be tracking the customer with a cookie. This
cookie will not be part of the request sent from E-xact's servers to the
merchant's server with the Relay Response request but the merchant may set a
field in the initial request that has the same values as the cookies.

For example,



Here, two extra parameters, “merchant_cookie_1” and
“merchant_cookie_2”, have been added to the comparable Relay Response
example from Section 9.2 Example Including Relay Response. These
values are sent with the Relay Response request so that the merchant's server
can identify the customer making the payment.

Caution should be used when adding extra keys as in the above example to
avoid duplicate name usage. Either sending a test request or viewing Section 7
can deduce the full list of taken names.

10.2.3 Relay Response Signature
The request generated by E-xact's servers is signed with a cryptographic hash.
The name of the hashed field is “x_MD5_Hash”. It is calculated as the MD5
Hash of the concatenation of the strings:
  • Payment Page Configuration Relay Response Key
  • Value of “x_login”
  • Transaction ID (value of “x_trans_id”)
  • Amount, exactly two digits after the period ($100 is used as “100.00”)

Note: this calculation is not the same as that of the “x_fp_hash” field.

For example, using the below values:

Field
Value
Relay Response Key
abcdefgh12345
x_login / Payment Page ID
WSP-EXAMPL-01
Transaction ID (field “x_trans_id”)
123456789
Amount
1.00

The MD5 calculation is performed for the string:

abcdefgh12345WSP-EXAMPL-011234567891.00

Resulting in:

0ae500c0cb7d78f9c26598d6456180dd

The key is configured on the Relay Response tab of the Administration
Console.

10.2.4 Sample Relay Response POST
This section shows in detail what is sent to the merchant's server with a relay
response HTTP POST request.

Most merchants will use https so that the POST is encrypted (not shown).

The sample POST is based on a credit card payment. The relay response URL is
(see the x_relay_url value):

    http://testmerchant.com/relay_response

POST /relay_response HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Date: Tue, 13 Jan 2009 16:01:41 GMT
Content-Length: 2585
Host: testmerchant.com

SequenceNo=435677&Language=1&Tax2Amount=&x_currency_code=
CAD&x_ship_to_city=&x_method=CC&EXact_Resp_Code=00
&CardHoldersName=Susan+Testname&x_email=test%40yahoo.com&
Authorization_Num=ET141870&MerchantCountry=Canada&
Reference_3=&x_description=&x_amount=564.30&exact_ctr=
%3D%3D%3D%3D%3D%3D%3D%3D+TRANSACTION+RECORD+
%3D%3D%3D%3D%3D%3D%3D%3D%0A%0AMerchant+Plug-in+
Test+Store%0A44+King+Street+West%0AVancouver%2C+BC+V6B+
4X2%0ACanada%0Awww.smwp.com%0ATYPE%3A+Purchase%0A
%0AACCT%3A+Visa++%24564.30+CAD%0A%0ACARD+HOLDER+
%3A+Susan+Testname%0ACARD+NUMBER+%3A+%2A%2A%2A
%2A%2A%2A%2A%2A%2A%2A%2A%2A1111%0AEXPIRY+DATE+
%3A+12%2F12%0ATRANS.+REF.+%3A+1234567%0ADATE%
2FTIME+++%3A+13+Jan+09+16%3A01%3A41%0AREFERENCE+
%23+%3A+435677+305+M%0AAUTHOR.%23++++%3A+ET141870
%0A%0A++++Approved+-+Thank+You+000%0A%0A%0A%3D%3D%
3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D
%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%
3D%3D%3D%3D%3D%0A&x_card_num=&Ecommerce_Flag=0&
x_po_num=&x_city=Vancouver&_response_reason_text=Transaction+
has+been+approved&MerchantName=Merchant+Plug-in+Test+Store&
Bank_Resp_Code_2=&Tax1Number=&x_ship_to_address=&x_type=
AUTH_CAPTURE&Transaction_Approved=YES&Card_Number=%2A%
2A%2A%2A%2A%2A%2A%2A%2A%2A%2A%2A1111&x_duty=
&x_fax=&x_relay_response=TRUE&exact_wsp_version=1.7&
Customer_Ref=&x_invoice_num=1234567&x_relay_url=http%3A
%2F%2Ftestmerchant.com%2Frelay_response&x_cavv_response=
&CAVV_Response=0&Secure_AuthResult=0&x_address=555+A+Street
&x_response_reason_code=1&x_show_form=PAYMENT_FORM
&x_ship_to_country=&Bank_Message=Approved&Tax1Amount=
&x_version=3.1&x_ship_to_company=&Transaction_Error=
false&exact_issconf=&x_test_request=TRUE&SurchargeAmount=
0&x_tax_exempt=&x_phone=&x_merchant_email=&MerchantProvince=
BC&Reference_No=1234567&ZipCode=&x_trans_id=
2150&x_last_name=Testname&x_cvv2_resp_code=&Retrieval_Ref_No=
5669951&Secure_AuthRequired=0&x_zip=The+Zip&
x_response_subcode=S&x_ship_to_zip=&Bank_Resp_Code=000&
CVD_Presence_Ind=0&x_ship_to_last_name=&x_exp_date=&
Client_Email=&exact_issname=&x_fp_sequence=123456&
Transaction_Type=00&x_tax=127.26&x_company=&
MerchantCity=Vancouver&CAVV_Algorithm=0&x_country=Canada&
x_avs_code=&x_first_name=Susan&CVV2=&AVS=&Tax2Number=
&x_ship_to_state=&x_response_code=1&DollarAmount=564.30&
TransactionCardType=VISA&EXact_Message=Transaction+Normal&
Expiry_Date=1212&x_login=WSP-RELAY-80&x_card_code=&
Transaction_Tag=2150&x_ship_to_first_name=&MerchantPostal=
V6B+2K4&Client_IP=&x_freight=15.0&x_cust_id=&commit=
Checkout&MerchantAddress=44+King+Street+West&XID=
&x_MD5_Hash=abfaf1d1df004e3c27d5d2e05929b529&x_state=
BC&x_reference_3=&x_auth_code=ET141870&x_fp_timestamp=1231877695

The values of the above HTTP POST are listed in the table below:

Key
Value
SequenceNo
435677
Language
1
Tax2Amount
x_currency_code
CAD
x_ship_to_city
x_method
CC
EXact_Resp_Code
0
CardHoldersName
Susan Testname
x_email
test@yahoo.com
Authorization_Num
ET141870
MerchantCountry
Canada
Reference_3
x_description
x_amount
5643
exact_ctr
"======== TRANSACTION RECORD ========\r\n\r\nMerchant Plug-in
Test Store\r\n44 King Street West\r\n
Vancouver, BC V6B 4X2\r\nCanada\r\nwww.smwp.com\r\nTYPE: Purchase
\r\n\r\nACCT: Visa  $564.30 CAD\r\n\r
\nCARD HOLDER : Susan Testname\r
\nCARD NUMBER : ************1111
\r\nEXPIRY DATE : 12/12\r\nTRANS.
REF. : 1234567\r\nDATE/TIME   : 13
Jan 09 16:01:41\r\nREFERENCE # :
435677 305 M\r\nAUTHOR.#    :
ET141870\r\n\r\n    Approved -
Thank You 000\r\n\r\n\r\n=========================
==========="
x_card_num
Ecommerce_Flag
0
x_po_num
x_city
Vancouver
x_response_reason_text
Transaction has been approved
MerchantName
Merchant Plug-In Test Store
Bank_Resp_Code_2
Tax1Number
x_ship_to_address
x_type
AUTH_CAPTURE
Transaction_Approved
YES
Card_Number
************1111
x_duty
x_fax
x_relay_response
exact_wsp_version
1.7
Customer_Ref
x_invoice_num
1234567
x_relay_url
http://testmerchant.com/relay_response
x_cavv_response
CAVV_Response
0
Secure_AuthResult
0
x_address
555 A Street
x_response_reason_code
1
x_show_form
PAYMENT_FORM
x_ship_to_country
Bank_Message
Approved
Tax1Amount
x_version
3.1
x_ship_to_company
Transaction_Error
FALSE
exact_issconf
x_test_request
TRUE
SurchargeAmount
0
x_tax_exempt
x_phone
x_merchant_email
MerchantProvince
BC
Reference_No
1234567
ZipCode
x_trans_id
2150
x_last_name
Testname
x_cvv2_resp_code
Retrieval_Ref_no
5669951
Secure_AuthRequired
0
x_zip
The zip code
x_response_subcode
S
x_ship_to_zip
Bank_Resp_Code
0
CVD_Presence_Ind
0
x_ship_to_last_name
x_exp_date
Client_Email
exact_issname
x_fp_sequence
123456
Transaction_Type
0
x_tax
127.26
x_company
MerchantCity
Vancouver
CAVV_Algorithm
0
x_country
Canada
x_avs_code
x_first_name
Susan
CVV2
AVS
Tax2Number
x_reference_3
x_ship_to_state
x_response_code
1
DollarAmount
5643
TransactionCardType
VISA
EXact_Message
Transaction Normal
Expiry_Date
1212
x_login
WSP-RELAY-80
x_card_code
Transaction_Tag
2150
x_ship_to_first_name
MerchantPostal
V6B 2K4
Client_IP
x_freight
15
x_cust_id
commit
Checkout
MerchantAddress
44 King Street West
XID
x_MD5_Hash
abfaf1d1df004e3c27d5d2e05929b529
x_state
BC
x_auth_code
ET141870
x_fp_timestamp
1231877695

10.2.5 Relay Response Sample Code
To the merchant's server, the Relay Response POST looks just like an ordinary
form post where a user fills out a web form then the web server processes the
posted parameters and responds with HTML. However, with Relay Response,
there is no form filled out.

There are also two other differences:
1. URLs occurring in the HTML that is returned should be absolute since the
    page will be shown under an https://checkout.e-xact.com URL and not the
    merchant's.
2. The merchant does not have normal access to the customer's cookies since
    the Hosted Checkout server also does not have access. However, section 10.2.2
    "Customer Cookies" demonstrates how to handle this.

The following samples demonstrate:

- How the parameters related to the state of the transaction are evaluated:
  •  
    • x_response_code
    • x_response_reason_text
    • exact_ctr
    • exact_issname (INTERAC Online payments only)
    • exact_conf (INTERAC Online payments only)
- How to use parameters sent with the original redirect from the merchant's
   website to the Hosted Checkout payment form.

Sample Implementation in JSP

Here is a simple example in JSP, for a successful transaction:

<!--

<%@ page language="java" import="java.lang.*" %>
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
 <title>Receipt</title>
 <script type="text/javascript" src="http://merchant.com/javascript.js"></script>
 <link rel="stylesheet" href="http://merchant.com/style.css" type="text/css" />
</head>
<html>

<body>
  <h1>Merchant.com Online Store</h1>

  <h2>Thanks for your order</h2>

  <p>
    Your order was processed successfully. Here is your receipt.
    Your order will be shipped in two business days.
  </p>
  <pre>
    <%=request.getParameter("exact_ctr")%>
  </pre>

  <% if(request.getParameter("exact_issname") != null) { %>
  <p>
    Issuer:     <%=request.getParameter("exact_issname")%>
    Confirmation Number:     <%=request.getParameter("exact_issconf")%>
  </p>
  <% } %>

  <p>
    <% String track_url = "http://merchant.com/order_tracking/" + request.getParameter("x_invoice_num"); %>
    You can track it at <a href="<%= track_url%>"><%= track_url %></a>.
  </p>

  <p>
    Return to <a href="http://merchant.com/home">home</a>.
  </p>
</body>
</html>

The transaction may have failed, which is indicated in the x_response_code parameter. We cover this possibility as follows:

<!--

<%@ page language="java" import="java.lang.*" %>
<!DOCTYPE html
   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Receipt</title>
<script type="text/javascript"
src="http://merchant.com/javascript.js"></script>
<link rel="stylesheet" href="http://merchant.com/style.css" type="text/css" />
</head>
<body>
 <h1>Merchant.com Online Store</h1>

 <h2><%=request.getParameter("x_response_reason_text")%></h2>

 <% if(request.getParameter("x_response_code") == '1') { %>


   <p>
     Your payment was processed successfully.
     Your order will be shipped in two business days.
     Here is your receipt.
   </p>
   <pre>
     <%=request.getParameter("exact_ctr")%>
   </pre>

   <% if(request.getParameter("exact_issname") != null) { %>
     <p>
       Issuer:     <%=request.getParameter("exact_issname")%><br/>
       Confirmation Number:     <%=request.getParameter("exact_issconf")%>
     </p>
   <% } %>

   <p>
     <% String track_url = "http://merchant.com/order_tracking/" +
request.getParameter("x_invoice_num"); %>
     You can track it at <a href="<%= track_url%>"><%= track_url %></a>.
   </p>

 <% } %>

 <% if(request.getParameter("x_response_code") == '2') { %>
   <p>
     Your payment failed.
     Here is your receipt.
   </p>
   <pre>
     <%=request.getParameter("exact_ctr")%>
   </pre>

 <% } %>

 <% if(request.getParameter("x_response_code") == '3') { %>
   <p>
     An error occurred while processing your payment.
     Please try again later.

   </p>

 <% } %>


 <p>
   Return to <a href="http://merchant.com/home">home</a>.
 </p>
</body>
</html>

-->

Sample Implementation in Ruby/Rails
<!--

<!DOCTYPE html
   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Receipt</title>
<script type="text/javascript"
src="http://merchant.com/javascript.js"></script>
<link rel="stylesheet" href="http://merchant.com/style.css" type="text/css" />
</head>
<body>
 <h1>Merchant.com Online Store</h1>

 <h2><%= h params[:x_response_reason_text]%></h2>

 <% if params[:x_response_code] == '1' %>

   <h2>Order Paid</h2>

   <p>
     Your payment was processed successfully.
     Your order will be shipped in two business days.
     Here is your receipt.
   </p>
   <pre>
     <%= h params[:exact_ctr]%>
   </pre>

   <% unless params[:exact_issname].blank? # If INTERAC Online
payments are supported  %>
     <p>
       Issuer:     <%= h params[:exact_issname] %><br/>
       Confirmation Number:     <%= h params[:exact_issconf]%>
     </p>
   <% end %>

   <p>
     <% track_url = url_for(:controller => 'orders',
:action=>'track', :order_id => params[:x_invoice_num],
:only_path=>false %>
     You can track it at <%= link_to track_url, track_url %>
   </p>

 <% end %>

 <% if params[:x_response_code] == '2' %>
   <p>
     Your payment failed.
     Here is your receipt.
   </p>
   <pre>
     <%= h params[:exact_ctr]%>
   </pre>

 <% end %>

 <% if params[:x_response_code] == '3' %>
   <p>
     An error occurred while processing your payment.
     Please try again later.
   </p>

 <% end %>

 <p>
   Return to <a href="http://merchant.com/home">home</a>.
 </p>
</body>
</html>

-->

Sample Implementation in ASP
<!--

<% Response.Expires = 0
Dim ResponseCode
Dim TrackUrl

' Process Post parameters
ResponseCode = Trim(Request.Form("x_response_code"))
%>

<!DOCTYPE html
   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Receipt</title>
<script type="text/javascript"
src="http://merchant.com/javascript.js"></script>
<link rel="stylesheet" href="http://merchant.com/style.css" type="text/css" />
</head>
<body>
<h1>Merchant.com Online Store</h1>

<h2> <%= Request.Form('x_response_reason_text') %></h2>
<%
 Select Case ResponseCode
 Case "1" %>

   <p>
     Your order was processed successfully. Here is your receipt.
     Your order will be shipped in two business days.
   </p>
   <pre>
     <%= Request.Form("exact_ctr")%>
   </pre>

   <% If not(isNull(Request.Form("exact_issname"))) Then %>
     <p>
       Issuer:     <%= Request.Form("exact_issname")%><br/>
       Confirmation Number:     <%= Request.Form("exact_issconf")%>
     </p>
   <% End If %>

   <p>
     <% TrackUrl = "http://merchant.com/order_tracking/" &
Request.Form("x_invoice_num") %>
     You can track it at <%= TrackUrl %></a>.
   </p>

<% Case "2" %>
   <p>
     Your payment failed.
     Here is your receipt.
   </p>
   <pre>
     <%= Request.Form("exact_ctr") %>
   </pre>

<% Case Else %>
   <p>
     An error occurred while processing your payment.
     Please try again later.
   </p>

<% End Select %>

</body>

</html>

-->

Sample Implementation in PHP
<!--

<!DOCTYPE html
   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Receipt</title>
<script type="text/javascript"
src="http://merchant.com/javascript.js"></script>
<link rel="stylesheet" href="http://merchant.com/style.css" type="text/css" />
</head>
<body>
<h1>Merchant.com Online Store</h1>

<h2>
<?php echo $_REQUEST['x_response_reason_text'] ?>
</h2>

<?php
 if($_REQUEST['x_response_code'] == '1') {
   echo "<p>";
   echo "Your order was processed successfully. Here is your receipt.";
   echo "Your order will be shipped in two business days.";
   echo "</p>";
   echo "<pre>";
   echo $_REQUEST["exact_ctr"];
   echo "</pre>";
   if(!empty($_REQUEST["exact_issname"])) {
     echo "<p>";
     echo "Issuer: " .$_REQUEST["exact_issname"] . "<br/>";
     echo "Confirmation Number: " . $_REQUEST["exact_issconf"];
     echo "</p>";
   }

   echo "<p>";
     $track_url = "http://merchant.com/order_tracking/" .
$_REQUEST["x_invoice_num"];
     echo "You can track it at <a href=\"" . $track_url . "\">" .
$track_url . "</a>";
   echo "</p>";
 } elseif($_REQUEST['x_response_code'] == '2') {
   echo "<p>";
   echo "Your payment failed.";
   echo "Here is your receipt.";
   echo "</p>";
   echo "<pre>";
   echo $_REQUEST["exact_ctr"];
   echo "</pre>";
 } else {
   echo "<p>";
   echo "An error occurred while processing your payment.";
   echo "Please try again later.";
   echo "</p>";
 }
?>
</body>

</html>

-->






-->



Illustration 19

11 Customer's Browser
        Requirements

The customer browser requirements detailed below are the minimum
prerequisites.

11.1 Cookies
Hosted Checkout requires the customer's browser to have cookies enabled. If
it does not have cookies enabled, the customer will be prompted to enable
them. A “Try Again” link is provided for smooth recovery.


11.2 JavaScript

The pages and forms generated by Hosted Checkout do not depend on JavaScript being
enabled in the customer's browser. Conversely, some banking websites may
require this.

All pages appear the same whether JavaScript is enabled or not.

However, if the customer's browser does not have JavaScript enabled,
automatic redirection to Interac Online is not possible.  Thereafter the page
shown in Section 3.4.1 Customer is Redirected to INTERAC Online, will
become visible in the customers browser and the customer will need to click
the “Continue Payment” button.

12 Authorize.net SIM Compatibility
The Hosted Checkout protocol is compatible with the Authorize.net SIM
protocol to ensure that leading shopping carts are supported. For example,
these shopping carts have been tested: Zen Cart, OsCommerce and Comersus.
Refer to the Knowledge Base, http://kb.e-xact.com, for additional notes.

The Authorize.net SIM protocol is described at: 

http://www.authorize.net/support/SIM_guide.pdf

In most cases switching to Hosted Checkout will require that only the POST-URL be
changed.

The Authorize.net SIM is aimed primarily at credit card payments. However,
Hosted Checkout allows INTERAC Online payments to be processed
transparently.





Article Details

Last Updated
12th of May, 2010

Would you like to...

Print this page Print this page

Email this page Email this page

Post a comment Post a comment

Subscribe me

Add to favorites Add to favorites

Remove Highlighting Remove Highlighting

Edit this Article

Quick Edit

Export to PDF

User Opinions (1 vote)

100% thumbs up 0% thumbs down

How would you rate this answer?



Thank you for rating this answer.

Related Articles

No related articles were found.

Attachments

No attachments were found.

Continue