Helcim Gateway

Developer Documentation

Support - Helcim Gateway

For development support or to acquire a developer test account for the Helcim Gateway, contact us today.

Downloadable Format

Table of Contents


Copyright © 2006 - 2009 Helcim Inc. All rights reserved.
The information contained in this document is subject to change without notice.
This document contains information protected by copyright.
NO PART OF THIS DOCUMENT MAY BE PHOTOCOPIED OR REPRODUCED IN ANY FORM WITHOUT PRIOR WRITTEN CONSENT FROM HELCIM INC.

Introduction

The Helcim Gateway gives merchants a more integrated payment processing solution. It allows merchants to make a direct connection with our processing gateway to create a truly customized payment solution. The Helcim Gateway is for merchants who have, or will hire someone, with the knowledge of the development and security requirements involved with programming for a processing gateway.

Purpose of This Document

The purpose of this document is to outline the functionality of the processing gateway, and how it's accessed.

Requirements

In order to use the Helcim Gateway you will require the following:

  1. Knowledge of the Payment Card Industry Data Security Standard and how it will apply to your situation.
  2. A valid SSL certificate.
  3. A server with a scripting language capable of sending and receiving an HTTP connection and POST/GET variables.
  4. Knowledge of HTML.
  5. Knowledge of a server-side scripting language (PHP, ASP, JSP, etc...)

Development Process

The recommended steps to follow when developing for the Helcim Gateway are:

  1. Create your token in the Gateway Administration Tool.
  2. Use the HTML form samples included in this document to layout your solution.
  3. Integrate your solution into a server-side scripting language.
  4. Use the development environment to test your solution.
  5. When everything is functioning as expected, change your solution over to the production environment.

Production Environment

The URL to connect to the Helcim Gateway is:
https://gateway.helcim.com/

Development Environment - Active Merchants

You can switch between development and production environments by sending the "test" variable along with your transaction request. A value of "1" will send the transaction through the development environment. If the "test" variable is not included in the request, or is set to anything other than "1" the transaction will be processed through the production environment.

Development Environment - Developer Merchants

Development-specific accounts must use a separate gateway test environment located at:
https://gatewaytest.helcim.com/


Request Variables

*** NOTICE: All fields are case-sensitive.

merchantIdnumericYour merchant id; must not include any spaces or special characters.
tokenalphaYour Gateway token (generated within the Gateway Administration Tool).
typealphaType of transaction to be processed. Must be either: purchase, refund or void.
amount10,2/decimalAmount to process. Must include two decimal places, and must NOT include $.
cardNumber16/numericCredit card number; must not include any spaces or special characters.
expiryDate4/numericCredit card expiry date in the form of MMYY. With leading zeroes if the month or year is only one digit.
cvvIndicator1/numericCVV2 presence indicator. Must be either 1, 2 or 3 (1 = present, 2 = not visible, 3 = not present)
cvv4/numericCVV2 value.
cardholderName100/alphaName on card.
cardholderAddress255/alphaAddress of cardholder for address verification.
cardholderPostalCode50/alphaPostal code/zip code of cardholder for address verification.
transactionId10/numericThe transaction id of the transaction to void (this field is only required for a void).
test1/numericSets whether this is a test transaction or not. Any value other than 1 will assume this is a real transaction.

Form Sample

Below is an HTML form sample with all the required fields for processing a transaction:

<form action="https://gateway.helcim.com/" method="POST">
<input type="hidden" name="merchantId" value="<your_merchant_id>">
<input type="hidden" name="token" value="<your_gateway_token>">
<input type="hidden" name="test" value="1">
<input type="hidden" name="type" value="purchase">
<input type="hidden" name="amount" value="10.00">
<input type="hidden" name="cardholderName" value="John Doe">
<input type="hidden" name="cardNumber" value="4242424242424242">
<input type="hidden" name="expiryDate" value="0315">
<input type="hidden" name="cvvIndicator" value="1">
<input type="hidden" name="cvv" value="123">
<input type="hidden" name="cardholderAddress" value ="111 25th Ave">
<input type="hidden" name="cardholderPostalCode" value="T2S3G4">
<input type="submit" name="submit" value="Submit">
</form>


Optional Variables

Billing Information
billingName100/alphaCustomer's billing name.
billingAddress255/alphaCustomer's billing address.
billingCity255/alphaCustomer's billing city.
billingProvince255/alphaCustomer's billing province or state.
billingPostalCode50/alphaCustomer's billing postal code or zip code.
billingCountry255/alphaCustomer's billing country.
billingPhoneNumber255/alphaCustomer's billing phone number.
billingEmailAddress255/alphaCustomer's billing email address.

Shipping Information
shippingName100/alphaCustomer's shipping name.
shippingAddress255/alphaCustomer's shipping address.
shippingCity255/alphaCustomer's shipping city.
shippingProvince255/alphaCustomer's shipping province or state.
shippingPostalCode50/alphaCustomer's shipping postal code or zip code.
shippingCountry255/alphaCustomer's shipping country.
shippingPhoneNumber255/alphaCustomer's shipping phone number.
shippingEmailAddress255/alphaCustomer's shipping email address.

Order Information
orderId50/alphaUnique transaction identifier, transaction will fail if a duplicate order id is found. The order id will be automatically generated by the Gateway if this field is blank.
customerId50/alphaCustomer identifier.
commentsalphaAny extra information from the cardholder or merchant.
itemId#50/alphaItem SKU.
itemDescription#255/alphaItem description.
itemQuantity#4,2/decimalItem quantity, must be at least one for item to be added.
itemPrice#10,2/decimalItem price per each.
itemTotal#10,2/decimalItem price X quantity.
shippingAmount10,2/decimalTotal shipping amount.
taxAmount10,2/decimalTotal tax amount.

Form Sample

Below is an HTML form sample with all the required fields for processing a transaction as well as optional fields:

<form action="https://gateway.helcim.com/" method="POST">
<!-- Required Fields -->
<input type="hidden" name="merchantId" value="<your_merchant_id>">
<input type="hidden" name="token" value="<your_gateway_token>">
<input type="hidden" name="test" value="1">
<input type="hidden" name="type" value="purchase">
<input type="hidden" name="amount" value="18.00">
<input type="hidden" name="cardholderName" value="John Doe">
<input type="hidden" name="cardNumber" value="4242424242424242">
<input type="hidden" name="expiryDate" value="0315">
<input type="hidden" name="cvvIndicator" value="1">
<input type="hidden" name="cvv" value="123">
<input type="hidden" name="cardholderAddress" value ="111 25th Ave">
<input type="hidden" name="cardholderPostalCode" value="T2S3G4">

<!-- Billing Information -->
<input type="hidden" name="billingName" value="Billing Name">
<input type="hidden" name="billingAddress" value="Billing Address">
<input type="hidden" name="billingCity" value="Billing City">
<input type="hidden" name="billingProvince" value="Billing Province">
<input type="hidden" name="billingPostalCode" value="Billing PC">
<input type="hidden" name="billingCountry" value="Billing Country">
<input type="hidden" name="billingPhoneNumber" value="Billing Phone">
<input type="hidden" name="billingEmailAddress" value="example@example.com">

<!-- Shipping Information -->
<input type="hidden" name="shippingName" value="Shipping Name">
<input type="hidden" name="shippingAddress" value="Shipping Address">
<input type="hidden" name="shippingCity" value="Shipping City">
<input type="hidden" name="shippingProvince" value="Shipping Province">
<input type="hidden" name="shippingPostalCode" value="Shipping PC">
<input type="hidden" name="shippingCountry" value="Shipping Country">
<input type="hidden" name="shippingPhoneNumber" value="Shipping Phone">
<input type="hidden" name="shippingEmailAddress" value="example@example.com">

<!-- Order Information -->
<input type="hidden" name="customerId" value="customer1">

<input type="hidden" name="itemId1" value="SKU1">
<input type="hidden" name="itemDescription1" value="Product 1">
<input type="hidden" name="itemQuantity1" value="2">
<input type="hidden" name="itemPrice1" value="5.00">
<input type="hidden" name="itemTotal1" value="10.00">

<input type="hidden" name="itemId2" value="SKU2">
<input type="hidden" name="itemDescription2" value="Product 2">
<input type="hidden" name="itemQuantity2" value="1">
<input type="hidden" name="itemPrice2" value="5.00">
<input type="hidden" name="itemTotal2" value="5.00">

<input type="hidden" name="comments" value="Order comments.">
<input type="hidden" name="shippingAmount" value="1.00">
<input type="hidden" name="taxAmount" value="2.00">
<input type="submit" name="submit" value="Submit">
</form>


Response Variables

Each response variable is returned as a value pair (i.e.: response=1). Each value pair is separated by a carriage-return and line feed. If the responseMessage or noticeMessage variables contain more than one error, each error is further separated by a line feed.

orderId50/alphaOrder id. If set in request, response will be the same.
response1/numeric1 = approved, 0 = declined
responseMessagealphaResponse description.
noticeMessagealphaThis will be returned if there was a problem with an optional request variable. For example if the billingName is over 100 characters, it will be truncated and a message will be displayed here.
dateyyyy-mm-ddDate transaction was processed in the format of: yyyy-mm-dd.
time##:##:##Time transaction was processed in the format of: ##:##:##.
typealphaTransaction type.
cardholderName100/alphaName of card holder.
amount10,2/decimalTransaction amount.
cardNumber12/alphaFirst four and last four digits of the card number in the format of: ####****####.
transactionId10/numericTransaction identifier.
expiryDate4/numericCard expiry date if the format of: MMYY.
cardTypealphaType of card used in transaction (i.e. Visa, MasterCard)
avsResponse1/alphaAddress verification response.
cvvResponse1/alphaCVV2 verification response.


AVS Response Codes

AAddress (street) matches, ZIP does not.
BStreet address match, postal code in wrong format. (International issuer)
CStreet address and postal code in wrong formats.
DStreet address and postal code match. (International issuer)
EAVS Error.
FAddress does compare and 5 digit ZIP does compare. (UK only)
GCard issued by a non-US issuer that does not participate in the AVS system.
IAddress information not verified by international issuer.
MStreet address and postal code match. (International issuer)
NNo match on address (street) or ZIP.
PPostal codes match, street address not verified due to incompatible formats.
RRetry, system unavailable or timed out.
SService not supported by issuer.
UAddress information is unavailable. (Domestic issuer)
W9 digit ZIP matches, address (street) does not.
XExact AVS match.
YAddress (street) and 5 digit ZIP match.
Z5 digit ZIP matches, address (street) does not.


CVV2 Response Codes

MCVV2 match.
NCVV2 no match.
PNot processed.
SIssuer indicates that CVV2 data should be present on the card, but the merchant has indicated that the CVV2 data is not present on the card.
UIssuer has not certified for CVV2 or issuer has not provided Visa with the CVV2 encryption keys.


Error Testing Codes

If you would like to simulate an error while testing (test=1) use the CVV2 codes below:

200Transaction amount error - please try again, or contact the merchant
201Transaction amount over merchant limit - please contact the merchant
202DECLINED - CVV2 mismatch, please verify value entered
203DECLINED - credit card failed negative check, please try again with a different card
204DECLINED - credit card declined
205DECLINED - system busy, please try again
206DECLINED - expired credit card
207DECLINED - invalid credit card
208Invalid data submitted for VOID
209DECLINED - system busy, please try again
210Please retry transaction
211Invalid transaction id for void
212Invalid request
213Transaction error - please try again or contact the merchant for help


AVS Response Test Codes

If you would like to simulate a particular AVS response while testing (test=1) use the CVV2 codes below (default is X):

001A
002B
003C
004D
005E
006F
007G
008I
009M
010N
011P
012R
013S
014U
015W
016Y
017Z


CVV2 Response Test Codes

If you would like to simulate a particular CVV2 response while testing (test=1) use the CVV2 codes below (default is M):

100N
101P
102S
103U


Recurring Transactions

Recurring transactions are used when customers need to be billed repeatedly on a weekly or monthly basis. Creating a recurring transaction works very similar to regular purchases, with the addition of four recurring variables used to determine the billing schedule. The transaction type must also be changed to "recurring" in order for the gateway to identify the transaction properly.

It is important to take note that the transactions themselves, whether the initial amount or the scheduled billings, can still be voided in the same way as regular purchases.

Initial Amount (optional)

For recurring transactions the "amount" variable is no longer required and is instead optional. If no amount is sent, the customer will only be charged on the start date of the billing schedule. If an amount is provided, the customer will be billed that amount immediately.

Start Date

If the start date is after the 28th of any given month the billing cycle will fall on the last day of each month. For example, if the start date were April 30th, the next billing date would fall on May 31st, then June 30th, and so on.

Billing Schedules - Examples

Example #1

recurringPeriod 		=	"1 month"
recurringStartDate		=	"2008-05-31"
recurringAmount		=	"25.00"
recurringTimes		=	"36"

The customer would be billed $25.00 every month,
starting May 31st, for a total number of 36 billings.

Example #2

recurringPeriod 		=	"2 months"
recurringStartDate		=	"2008-06-15"
recurringAmount		=	"7.95"
recurringTimes		=	"6"
amount			=	"29.00"

The customer would be billed $7.95 every 2 months, starting June 15th,
for a total number of 6 billings, and would also be charged $29.00 immediately.

Request Variables (Recurring)

*** NOTICE: All fields are case-sensitive.

Required
merchantIdnumericYour merchant id; must not include any spaces or special characters.
tokenalphaYour Gateway token (generated within the Gateway Administration Tool).
typealphaType of transaction to be processed. Must be: recurring.
cardNumber16/numericCredit card number; must not include any spaces or special characters.
expiryDate4/numericCredit card expiry date in the form of MMYY. With leading zeroes if the month or year is only one digit.
cvvIndicator1/numericCVV2 presence indicator. Must be either 1, 2 or 3 (1 = present, 2 = not visible, 3 = not present)
cvv4/numericCVV2 value.
cardholderName100/alphaName on card.
cardholderAddress255/alphaAddress of cardholder for address verification.
cardholderPostalCode50/alphaPostal code/zip code of cardholder for address verification.
test1/numericSets whether this is a test transaction or not. Any value other than 1 will assume this is a real transaction.
recurringPeriod50/alphaRecurring period; set weekly or monthly:
1 week(s), 2 week(s), 1 month(s), 2 month(2), 6 month(s), 24 month(s)
Also allows the following aliases:
weekly, biweekly, monthly, bimonthly
recurringStartDateyyyymmddThe data to start recurring billing (cannot be today).
recurringAmount10,2/decimalAmount of each recurring transaction.
recurringTimes3/numericNumber of times to bill.

Order Information (optional)
amount10,2/decimalIf set, this is the amount the customer will be billed immediately.
orderId50/alphaUnique transaction identifier, transaction will fail if a duplicate order id is found. The order id will be automatically generated by the Gateway if this field is blank.
customerId50/alphaCustomer identifier.

Billing Information (optional)
billingName100/alphaCustomer's billing name.
billingAddress255/alphaCustomer's billing address.
billingCity255/alphaCustomer's billing city.
billingProvince255/alphaCustomer's billing province or state.
billingPostalCode50/alphaCustomer's billing postal code or zip code.
billingCountry255/alphaCustomer's billing country.
billingPhoneNumber255/alphaCustomer's billing phone number.
billingEmailAddress255/alphaCustomer's billing email address.

Form Sample (Recurring)

Below is an HTML form sample with all the required fields for processing a transaction as well as optional fields:

<form action="https://gateway.helcim.com/" method="POST">
<!-- Required Fields -->
<input type="hidden" name="merchantId" value="<your_merchant_id>">
<input type="hidden" name="token" value="<your_gateway_token>">
<input type="hidden" name="test" value="1">
<input type="hidden" name="type" value="purchase">
<input type="hidden" name="cardholderName" value="John Doe">
<input type="hidden" name="cardNumber" value="4242424242424242">
<input type="hidden" name="expiryDate" value="0315">
<input type="hidden" name="cvvIndicator" value="1">
<input type="hidden" name="cvv" value="123">
<input type="hidden" name="cardholderAddress" value ="111 25th Ave">
<input type="hidden" name="cardholderPostalCode" value="T2S3G4">
<input type="hidden" name="recurringPeriod" value="1 month">
<input type="hidden" name="recurringStartDate" value="20090131">
<input type="hidden" name="recurringAmount" value="10.00">
<input type="hidden" name="recurringTimes" value="24">

<!-- Order Information (optional) -->
<input type="hidden" name="amount" value="18.00">
<input type="hidden" name="orderId" value="invoice1">
<input type="hidden" name="customerId" value="customer1">

<!-- Billing Information (optional) -->
<input type="hidden" name="billingName" value="Billing Name">
<input type="hidden" name="billingAddress" value="Billing Address">
<input type="hidden" name="billingCity" value="Billing City">
<input type="hidden" name="billingProvince" value="Billing Province">
<input type="hidden" name="billingPostalCode" value="Billing PC">
<input type="hidden" name="billingCountry" value="Billing Country">
<input type="hidden" name="billingPhoneNumber" value="Billing Phone">
<input type="hidden" name="billingEmailAddress" value="example@example.com">
<input type="submit" name="submit" value="Submit">
</form>

© Copyright 2006-2010 Helcim Inc. All Rights Reserved.

The Helcim name and logo are trademarks of Helcim Inc. The Interac name and logo are trademarks of Interac Inc. The Visa and MasterCard logos are trademarks of Visa International and MasterCard International Incorporated. Other tradenames may be trademarks of their respective owners. Helcim is a registered MSP/ISO of the Canadian branch of U.S. Bank National Association and GE Money. New applicants are subject to conditions and approval of the application by Helcim and its partnering banks.