Script Structure

All Posts that are sent to the viaConex server conform to the format displayed below.

The scripts, either Value-Pair or XML, contain the viaConex registration key in an HTTP Header field. The Request Type will be the first field in the message body of the POST followed immediately by the Version Number. Next, the individual transaction parameters for the request are listed. Finally, when the script is complete, the calling application can submit the POST message to the server for processing.

Step 1. Registration Key

A registration key is required in all Scripts sent to the Elavon Host for processing and will be sent as a HTTP Header Field in the Post request.

Example

POST /cgi-bin/encompass4.cgi HTTP/1.1<CR><LF>

Content-Length: xxx<CR><LF>

Host: {Host Destination}<CR><LF>

Registration-Key: {Registration Key Value}<CR><LF>

Connection: Keep-Alive<CR><LF>

<CR><LF>

{XML or Value-Pair format}

 

note

The Registration Key should be sent as an HTTP Header field.

The NOVA_PORTAL_FAKE_KEY is only used to send transactions to the Elavon development host and cannot be used to send traffic to production hosts. A production Registration Key will be assigned by the Certification Department after certification is complete and is 20 characters long.

Step 2. Format Type

There are two basic formats that the viaConex request message can be constructed for submission to the Elavon Host for processing. The messages can be formatted in either a Value-Pair or XML structure.

Value-Pair Request Example

Request=Credit  Card.Sale

Version=4033

HD.Application_ID=HZ9999GC

HD.Terminal_ID=1234567890123456789012

HD.Device_Tag=123456

01.POS_Entry_Capability=02

01.Account_Entry_Mode=01

01.Partial_Auth_Indicator=0

01.Account_Data=400000******0002=1230

01.Transaction_Amount=1000

01.Last_Record_Number=1

10.Postal_ZIP_Code=30328

10.Street_Address=1234 Any Street

Value-Pair Response Example

RD.Device_Tag=123456

02.Response_Code=AA

02.Issuer_Response_Code=00

02.Authorization_Source=2

02.Capture_Code=1

02.Approval_Code=CVI333

02.Authorization_Date=012512

02.Authorization_Time=173451

02.Batch_Number=898

02.Record_Number=2

02.Authorization_Response=APPROVAL

02.Trace_Number=103163

02.Transaction_Reference_Nbr=125223451

80.Amex_Capture_Code=2

80.AVS_Response=A

80.CVV2_Response=

80.PS2000_Data=V112025981291331DD8BG

80.MSDI=1

87.Authorized_Amount=1000

87.Account_Balance_1=1000

87.Account_Balance_2=0

XML Request Example

<?xml version="1.0" encoding="ISO-8859-1"?>

<Request id="Credit Card.Sale">

<Version>4033</Version>

<Block id="HD">

   <Application_ID>HZ9999GC</Application_ID>

   <Terminal_ID>1234567890123456789012</Terminal_ID>

   <Device_Tag>123456</Device_Tag>

</Block>

<Block id="01">

   <POS_Entry_Capability>02</POS_Entry_Capability>

   <Account_Entry_Mode>01</Account_Entry_Mode>

   <Partial_Auth_Indicator>0</Partial_Auth_Indicator>

   <Account_Data>400000******0002=1230</Account_Data>

   <Transaction_Amount>1000</Transaction_Amount>

   <Last_Record_Number>2</Last_Record_Number>

</Block>

<Block id="10">

   <Postal_ZIP_Code>30328</Postal_ZIP_Code>

</Block>

</Request>

XML Response Example

<?xml version="1.0" ?>

<Response>

<Block id="RD">

   <Device_Tag>123456</Device_Tag>

</Block>

<Block id="02">

   <Response_Code>AA</Response_Code>

   <Issuer_Response_Code>00</Issuer_Response_Code>

   <Authorization_Source>2</Authorization_Source>

   <Capture_Code>1</Capture_Code>

   <Approval_Code>CVI334</Approval_Code>

   <Authorization_Date>012512</Authorization_Date>

   <Authorization_Time>173510</Authorization_Time>

   <Batch_Number>898</Batch_Number>

   <Record_Number>3</Record_Number>

   <Authorization_Response>APPROVAL</Authorization_Response>

   <Trace_Number>203162</Trace_Number>

   <Transaction_Reference_Nbr>125223510</Transaction_Reference_Nbr>

</Block>

<Block id="80">

   <Amex_Capture_Code>2</Amex_Capture_Code>

   <AVS_Response>A</AVS_Response>

   <CVV2_Response> </CVV2_Response>

   <PS2000_Data>V112025981310332DD9EG</PS2000_Data>

   <MSDI>1</MSDI>

</Block>

<Block id="87">

   <Authorized_Amount>1000</Authorized_Amount>

   <Account_Balance_1>1000</Account_Balance_1>

   <Account_Balance_2>0</Account_Balance_2>

</Block>

</Response>

note

The response types are determined by the inbound request type.  An XML request will return an XML response and a Value-Pair Request will return a Value-Pair response.

The XML examples above have been formatted for human readability and are returned as a continuous stream of data.  Sensitive data in each example was also masked.

Step 3. Request Type

This value is used to identify the type of request that is being made to the viaConex server for processing.

XML Format

Syntax:

<Request>{Type.Transaction}</Request>

Example:

<Request>Credit Card.Sale</Request>

Value-Pair Format

Syntax:

Request={Type.Transaction}&

Example:

Request=Credit Card.Sale&

note

This value must be the first line of the script in the message body and is only used once per script.

Step 4. Version Number

This value is used to identify the inbound version number of the request messages.

The Current version number of viaConex is 4033.

XML Format

Syntax:

<Version>{Version Number}</Version>

Example:

<Version>4033</Version>

Value-Pair Format

Syntax:

Version={Value}&

Example:

Version=4033&

note

This value must be the second line of the script in the message body and is only used once per script.

This value should be used as a constant for all in bound request messages.

Step 5. Request Parameters

These values are used to submit the individual data elements for each message request. This structure differs between the XML and Value-Pair formats.

Each parameter should be comprised using of one of the following data formats as defined in the glossary definition of each field:

  • Numeric - (0-9)
  • Alpha - (Lower ASCII set excluding control characters)
  • Hex - (Alphanumeric Representation of a Hex Character 0-9 or A-F)

XML Format

Syntax:

<Block ID="xx">

    <Parameter_Name>{Parameter Value}</Parameter_Name>

<Block ID>

 

Example:

<Block id="HD">

    <Application_ID>HZ9999GC</Application_ID>

    <Terminal_ID>1234567890123456789012</Terminal_ID>

    <Device_Tag>123456</Device_Tag>

</Block>

<Block id="01">

    <POS_Entry_Capability>02</POS_Entry_Capability>

    <Account_Entry_Mode>01</Account_Entry_Mode>

    <Partial_Auth_Indicator>0</Partial_Auth_Indicator>

    <Account_Data>400000******0002=1230</Account_Data>

    <Transaction_Amount>1000</Transaction_Amount>

    <Last_Record_Number>1</Last_Record_Number>

</Block>

<Block id="10">

        <Postal_ZIP_Code>30328</Postal_ZIP_Code>

</Block>

Value-Pair Format

Syntax:

{Block.Parmeter}={Value}

Example:

HD.Application_ID=HZ9999GC&

HD.Terminal_ID=1234567890123456789012&

HD.Device_Tag=123456&

01.POS_Entry_Capability=02&

01.Account_Entry_Mode=01&

01.Partial_Auth_Indicator=0&

01.Account_Data=400000******0002=1230&

01.Transaction_Amount=1000

01.Last_Record_Number=1

10.Postal_ZIP_Code=30328

note

The XML examples above have been formatted for human readability and are returned as a continuous stream of data.  Sensitive data in each example was also masked.