|
Uses
URL https://(OBTAIN DOMAIN FROM YOUR REP)/cgi-bin/rc/xmltrans2.cgi Mime Type xmltrans2.cgi is accessed with a HTTP POST and requires a CONTENT_TYPE header to be specified. Either 'application/x-www-form-urlencoded' or 'text/xml' must be used. If 'application/x-www-form-urlencoded' is sent then the HTTP body must contain valid form markup. See WW3 Form Spec for details. If 'text/xml' is used then the HTTP body should only contain the XML request. Test Mode DetailsYou can run all requests through xmltrans2 in test mode in order to help with the integration process. There are three different ways to run a XML transaction in test mode: 1. Enable the TestMode checkbox in your merchant account settings. Please remember this turns on TestMode for all transactions 2. Setup the Test First Name field in your merchant account settings. Any xmltrans2 request that contains a BillingFirstName tag with this same value will be run as a test transaction. This is only applicable to a couple transactions such as CreditTransaction 3. Send through a TestMode tag with the value TRUE. The TestMode tag which is in the TransactionControl structure always overrides the other test settings. This means that sending through TestMode equal to FALSE will cause a transaction to always be run as a live transaction. XML StructuresCreditTransaction This will generate a credit transaction and works for both cards and EFTs
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<CreditTransaction>
<Total>5.00</Total>
<CustomerData>
<Email>demo@demo.com</Email>
<CustId>12345</CustId> <!-- Optional -->
<BillingAddress>
<Address1>test</Address1>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
<City>Bountiful</City>
<State>UT</State>
<Zip>84032</Zip>
<Country>USA</Country>
<Phone>801-555-1212</Phone>
</BillingAddress>
<!-- Optional -->
<ShippingAddress>
<Address1>test</Address1>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
<City>Bountiful</City>
<State>UT</State>
<Zip>84032</Zip>
<Country>USA</Country>
</ShippingAddress>
</CustomerData>
<AccountInfo>
<!-- For Credit card transaction. -->
<CardAccount>
<AccountNumber>5454545454545454</AccountNumber>
<ExpirationMonth>01</ExpirationMonth>
<ExpirationYear>2000</ExpirationYear>
</CardAccount>
<!-- For EFT transactions. -->
<CheckAccount>
<AccountNumber>123456</AccountNumber>
<ABA>124000054</ABA>
</CheckAccount>
</AccountInfo>
<!-- All TransactionControl elements are optional including TransactionControl -->
<TransactionControl>
<SendCustomerEmail>TRUE</SendCustomerEmail> <!-- TRUE/FALSE -->
<SendMerchantEmail>TRUE</SendMerchantEmail> <!-- TRUE/FALSE -->
<TestMode>TRUE</TestMode> <!-- TRUE/FALSE -->
<EmailText> <!-- Up to 10 EmailTextItem elements allowed -->
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
</EmailText>
</TransactionControl>
<!-- Optional. This information will be saved on our servers and is
available in the XML transaction report. This is useful if you want
to save your own transaction meta-data with a transaction. -->
<VendorData>
<Element>
<Name>repId</Name>
<Value>1234567</Value>
</Element>
</VendorData>
</CreditTransaction>
</GatewayInterface>
PostAuthTransaction This will generate a postauth (capture) for a previously run Preauth transaction. The OperationXID field should contain the xid for the original Preauth
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<PostAuthTransaction>
<OperationXID>12345</OperationXID>
<Total>5.00</Total> <!-- Optional - Will use original transaction amount if not specified here -->
<!-- All TransactionControl elements are optional including TransactionControl -->
<TransactionControl>
<SendCustomerEmail>TRUE</SendCustomerEmail> <!-- TRUE/FALSE -->
<SendMerchantEmail>TRUE</SendMerchantEmail> <!-- TRUE/FALSE -->
<TestMode>TRUE</TestMode> <!-- TRUE/FALSE -->
<EmailText> <!-- Up to 10 EmailTextItem elements allowed -->
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
</EmailText>
</TransactionControl>
<!-- Optional. This information will be saved on our servers and is
available in the XML transaction report. This is useful if you want
to save your own transaction meta-data with a transaction. -->
<VendorData>
<Element>
<Name>repId</Name>
<Value>1234567</Value>
</Element>
</VendorData>
</PostAuthTransaction>
</GatewayInterface>
TranCredTransaction
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<TranCredTransaction>
<OperationXID>12345</OperationXID>
<Total>5.00</Total>
<!-- All TransactionControl elements are optional including TransactionControl -->
<TransactionControl>
<SendCustomerEmail>TRUE</SendCustomerEmail> <!-- TRUE/FALSE -->
<SendMerchantEmail>TRUE</SendMerchantEmail> <!-- TRUE/FALSE -->
<TestMode>TRUE</TestMode> <!-- TRUE/FALSE -->
<EmailText> <!-- Up to 10 EmailTextItem elements allowed -->
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
</EmailText>
</TransactionControl>
<!-- Optional. This information will be saved on our servers and is
available in the XML transaction report. This is useful if you want
to save your own transaction meta-data with a transaction. -->
<VendorData>
<Element>
<Name>repId</Name>
<Value>1234567</Value>
</Element>
</VendorData>
</TranCredTransaction>
</GatewayInterface>
TranForceTransaction
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<TranForceTransaction>
<OperationXID>12345</OperationXID>
<AuthCode>1234</AuthCode>
<Total>5.00</Total> <!-- Optional - Will use original transaction amount if not specified here -->
<!-- All TransactionControl elements are optional including TransactionControl -->
<TransactionControl>
<SendCustomerEmail>TRUE</SendCustomerEmail> <!-- TRUE/FALSE -->
<SendMerchantEmail>TRUE</SendMerchantEmail> <!-- TRUE/FALSE -->
<TestMode>TRUE</TestMode> <!-- TRUE/FALSE -->
<EmailText> <!-- Up to 10 EmailTextItem elements allowed -->
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
</EmailText>
</TransactionControl>
<!-- Optional. This information will be saved on our servers and is
available in the XML transaction report. This is useful if you want
to save your own transaction meta-data with a transaction. -->
<VendorData>
<Element>
<Name>repId</Name>
<Value>1234567</Value>
</Element>
</VendorData>
</TranForceTransaction>
</GatewayInterface>
TranRetryTransaction
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<TranRetryTransaction>
<OperationXID>12345</OperationXID>
<!-- Optional. Description and Total are optional but if used
both fields must be passed through -->
<Description>1.00</Description>
<Total>1.00</Total>
<!-- All TransactionControl elements are optional including TransactionControl -->
<TransactionControl>
<SendCustomerEmail>TRUE</SendCustomerEmail> <!-- TRUE/FALSE -->
<SendMerchantEmail>TRUE</SendMerchantEmail> <!-- TRUE/FALSE -->
<TestMode>TRUE</TestMode> <!-- TRUE/FALSE -->
<EmailText> <!-- Up to 10 EmailTextItem elements allowed -->
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
</EmailText>
</TransactionControl>
<!-- Optional. This information will be saved on our servers and is
available in the XML transaction report. This is useful if you want
to save your own transaction meta-data with a transaction. -->
<VendorData>
<Element>
<Name>repId</Name>
<Value>1234567</Value>
</Element>
</VendorData>
</TranRetryTransaction>
</GatewayInterface>
VoidTransaction
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<VoidTransaction>
<OperationXID>12345</OperationXID>
<!-- All TransactionControl elements are optional including TransactionControl -->
<TransactionControl>
<SendCustomerEmail>TRUE</SendCustomerEmail> <!-- TRUE/FALSE -->
<SendMerchantEmail>TRUE</SendMerchantEmail> <!-- TRUE/FALSE -->
<TestMode>TRUE</TestMode> <!-- TRUE/FALSE -->
<EmailText> <!-- Up to 10 EmailTextItem elements allowed -->
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
<EmailTextItem>test1</EmailTextItem>
</EmailText>
</TransactionControl>
<!-- Optional. This information will be saved on our servers and is
available in the XML transaction report. This is useful if you want
to save your own transaction meta-data with a transaction. -->
<VendorData>
<Element>
<Name>repId</Name>
<Value>1234567</Value>
</Element>
</VendorData>
</VoidTransaction>
</GatewayInterface>
TransactionStatus The purpose of the TransactionStatus request is to provide a way to determine the status of a request that was interrupted for some reason. For a transaction where the response was lost the transaction xid would be unknown to the client. To be able to use this request you have to have passed through a unique transaction identifier of your own using the VendorData elements which can be passed through with the original request. Ideally you would pass through a unique ID with every request, although this request will do the lookup based on multiple VendorData elements. If more than one record is matched based on the passed VendorData the first matching transaction will be used to generate the response. The transaction response will contain a warning message indicating that multiple transactions were matched in this case. Please note that this is NOT a search tool since it does not return multiple responses. This tool was also not written to automate the retreival of past transaction history.
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<TransactionStatus>
<VendorData>
<Element>
<Name>field1</Name>
<Value>1234567</Value>
</Element>
<Element>
<Name>field2</Name>
<Value>1234567</Value>
</Element>
</VendorData>
</TransactionStatus>
</GatewayInterface>
TransactionResponse All transaction requests return this response structure. The customer data fields are populated with data from the request designated by the OperationXID field in the request.
<?xml version="1.0" standalone="yes"?>
<GatewayInterface>
<TransactionResponse>
<TransactionResult>
<Status>text</Status> <!-- Will be one of: ERROR, FAIL, OK -->
<!-- ErrorCategory will be one of :
AVS_FAILURE - Transaction will be automatically voided.
CVV2_FAILURE - Transaction will be automatically voided.
INTERNAL_ERROR - Something unexpected happened.
PROCESSOR_ERROR - Something such as DECLINED, etc .
PROCESSOR_FAIL -
REQUEST_FORMAT - Request received has an invalid format.
REQUEST_VALIDATION - XML content is invalid.
-->
<ErrorCategory>text</ErrorCategory>
<!-- ErrorMessage could be anything. -->
<ErrorMessage>text;/ErrorMessage>
<!-- Authorization code received from processing network. -->
<AuthCode></AuthCode>
<!-- AVSCategory will be one of :
address - Address Matched
address_postal - Address and postal patched
address_zip5 - Address and five digit zip matched
address_zip9 - Address and nine digit zip matched
address_ok_postal_format_error - Address matched, postal format error
global_non_participant - International with no AVS support
international_address_not_verified - International with no AVS support
no_match - No address or postal match
no_response - No response
not_allowed - Not allowed
postal - Postal match
postal_ok_address_format_error - Postal matched, address format error
service_not_supported - AVS service not supported for card
unavailable - AVS service unavailable.
zip5 - Five digit zip matched
zip9 - Nine digit zip matched
-->
<AVSCategory></AVSCategory>
<!-- AVSResponse is actual AVS response received from the processing network. -->
<AVSResponse></AVSResponse>
<!-- CVV2Response is actual CVV response received from the processing network. -->
<CVV2Response></CVV2Response>
<TimeStamp></TimeStamp>
<!-- TestMode indicates the test status of your gateway account. TRUE/FALSE -->
<TestMode>FALSE</TestMode>
<Total></Total>
<XID></XID>
<CustomerData>
<BillingAddress>
<Address1 />
<City></City>
<FirstName></FirstName>
<LastName></LastName>
<State></State>
<Zip></Zip>
<Country></Country>
<Phone></Phone>
</BillingAddress>
<ShippingAddress>
<Address1></Address1>
<City></City>
<FirstName></FirstName>
<LastName></LastName>
<State></State>
<Zip></Zip>
<Country></Country>
<Phone></Phone>
</ShippingAddress>
</CustomerData>
</TransactionResult>
</TransactionResponse>
</GatewayInterface>
Recurring Update This request allows you to modify the transaction information and recurring commands for a recurring transaction.
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<!-- Other than OperationXID, all of the child elements of RecurUpdate are individually optional but you must pass -->
<!-- one of Recipe, RemReps, CustomerData, OrderItems or Total -->
<RecurUpdate>
<OperationXID>12345</OperationXID>
<!-- Optional.-->
<RemReps>123</RemReps>
<!-- Optional.-->
<Recipe>Recipe Name</Recipe>
<!-- Optional. Will update customer info tied to recurring transaction if passed-->
<CustomerData>
<Email>demo@demo.com</Email>
<CustId>12345</CustId> <!-- Optional -->
<BillingAddress>
<Address1>test</Address1>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
<City>Bountiful</City>
<State>UT</State>
<Zip>84032</Zip>
<Country>USA</Country>
<Phone>801-555-1212</Phone>
</BillingAddress>
<!-- Optional -->
<ShippingAddress>
<Address1>test</Address1>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
<City>Bountiful</City>
<State>UT</State>
<Zip>84032</Zip>
<Country>USA</Country>
</ShippingAddress>
</CustomerData>
<!-- Optional. Will update customer info tied to recurring transaction if passed-->
<AccountInfo>
<!-- For Credit card transaction. -->
<CardAccount>
<AccountNumber>5454545454545454</AccountNumber>
<ExpirationMonth>01</ExpirationMonth>
<ExpirationYear>2000</ExpirationYear>
</CardAccount>
<!-- For EFT transactions. -->
<CheckAccount>
<AccountNumber>123456</AccountNumber>
<ABA>124000054</ABA>
</CheckAccount>
</AccountInfo>
<!-- Only one of OrderItems or Total elements may be passed in but neither are required -->
<OrderItems>
<Item>
<Description>item1</Description>
<Cost>5</Cost>
<Qty>1</Qty>
</Item>
</OrderItems>
<!-- To use the Total element the original transaction can only have one item associated with it -->
<Total>5.00</Total>
</RecurUpdate>
</GatewayInterface>
This request will return the following response
<?xml version="1.0" standalone="yes"?>
<GatewayInterface>
<RecurUpdateResponse>
<Status>ok</Status>
<ErrorCategory></ErrorCategory>
<ErrorMessage></ErrorMessage>
<TimeStamp>20060621154341</TimeStamp>
<TestMode>FALSE</TestMode> <!-- TRUE/FALSE -->
<RecurDetails>
<RemReps>10</RemReps>
<RecipeName>daily</RecipeName>
<RecurTotal>1.00</RecurTotal>
</RecurDetails>
</RecurUpdateResponse>
</GatewayInterface>
Recurring Details This request allows you to query for details on an existing recurring transaction. Currently this request will return the number of remaining repetitions, the recipe name and total.
<?xml version="1.0"?>
<GatewayInterface>
<VendorIdentification>
<VendorId>1</VendorId>
<VendorPassword>test</VendorPassword>
<HomePage>text</HomePage>
</VendorIdentification>
<RecurDetails>
<OperationXID>12345</OperationXID>
</RecurDetails>
</GatewayInterface>
This request will return the following response
<?xml version="1.0" standalone="yes"?>
<GatewayInterface>
<RecurDetailsResponse>
<Status>ok</Status>
<ErrorCategory></ErrorCategory>
<ErrorMessage></ErrorMessage>
<TimeStamp>20060621154341</TimeStamp>
<TestMode>FALSE</TestMode> <!-- TRUE/FALSE -->
<RecurDetails>
<RemReps>10</RemReps>
<RecipeName>daily</RecipeName>
<RecurTotal>1.00</RecurTotal>
</RecurDetails>
</RecurDetailsResponse>
</GatewayInterface>
|