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.