Payment Technology Blog

Explore our modern gateway designed to help you sell more, make more and keep more.

Sunday, December 19, 2010

AMC Institute

We're finalizing our conference / trade show schedule for 2011, and first up is AMC Institute in mid-February.

AMC Institute is an organization consisting of Association Management Companies or "AMC". Each AMC manages multiple associations. We're proud to have been involved with them for the better part of the last decade.

NELiX TransaX is a Leadership Cirlce member of AMC Institute, and I personally co-chair the associate member task force. We are trained in iMIS - one of the largest Association Management Systems available.

NELiX TransaX provides payment processing services - credit card, ACH, payment gateway, and more. We have a long history working with associations. With our expertiese in the association marketplace, and our deep understanding of technology and payment processing, we're able to provide solutions that are ideal for associations.

New this year is the AMC Institute conference community website.

More information on AMC Institute.
More information on NELiX TransaX

Sunday, November 14, 2010

QuickBooks and Sleeter Group

Last week was an amazing week at the Sleeter Group conference at the Paris Hotel and Casino in Las Vegas, Nevada. From what I understand, there were approximately 700 people in attendance. All united by a common cause - QuickBooks. More specifically, how to bring better solutions to their QuickBooks customers.

NELiX TransaX was proud to be an exhibitor this year. Our offering attracted much attention. Of specific interest was our capability of running ACH (e-check) transactions through QuickBooks, the batch mode, allowing QuickBooks users to run credit card and ACH transactions for hundreds or thousands of customers at the click of a button, and the sync processing, allowing users to easily bring in transactions run at other point of sales, such as a website, mobile device or retail environment.

Many of our partners were there, many of our associates and friends, and many advisers already had customers using us. It was a great gathering, a phenomenal educational track, and a successful conference overall.

We hope to see you next year!

More information on processing credit card and ACH transactions through QuickBooks.
More information on NELiX TransaX.

Saturday, November 6, 2010

The Sleeter Group

Wow - we've been busy! I didn't even realize how long it's been since we've posted a new blog entry. We have been so wrapped up in helping our merchants integrate payment processing into their technology, we haven't had a chance to update you with all of the exciting things going on at NELiX TransaX!

Well, have no fear, I'm back to blog! Tomorrow, we head out to the Paris hotel in Las Vegas for the 2010 Sleeter Group Conference. The Sleeter Group is the largest nationwide group of QuickBooks ProAdvisors. Our QuickBooks plug-in has drawn quite a bit of attention amongst this group, with the ability to run ACH transactions from within QuickBooks, the ability to run credit cards in a batch, the ability to sync your website or any other systems transactions with QuickBooks, and much more.

If you'll be attending, stop by our booth! I'll be back to blog more after the show.

More information on processing ACH and credit cards within QuickBooks.

Monday, August 30, 2010

Process Payments with JAVA

I'm happy to announce that we've recently added JAVA to our suite of FleXport libraries. With our JAVA example, JAVA developers can quickly and easily integrate credit card and debit card processing, as well as ACH / e-check processing to any JAVA application or applet.

JAVA is a technology that has been around almost as long as the World Wide Web, and it's here to stay. Countless applications are built with JAVA as it's core technology. NELiX TransaX has made it easy to enable those applications for payment processing automation.

Best of all, NELiX TransaX has JAVA programmers on staff to assist with any integration!

Developing an Android App? Enable your app with payment processing through NELiX TransaX easily using our JAVA code.

More information on integrating Credit Card and ACH payments in JAVA.
More information on NELiX TransaX

Saturday, August 28, 2010

FileMaker DevCon 2010 Huge Success!

Well, I returned from FileMaker DevCon 2010 a week ago, and I'm still trying to catch up. I'm excited to say that it was a huge success. We have exhibited at, and attended may trade shows and conferences over the years, and I'd probably say that FileMaker DevCon 2010 was the most successful show we've had to date.

Being a merchant services provider that specializes in working with software developers puts us in a unique position. And the fact that we have FileMaker developers on staff, some of whom have been using FileMaker since FileMaker Plus over 20 years ago, is a major benefit to FileMaker software developers.

I can saw with all certainty that we will be back for FileMaker DevCon 2011. I can't wait!

More information on FileMaker
More information on NELiX TransaX at FileMaker DevCon
More information on NELiX TransaX FileMaker Offerings

Wednesday, August 25, 2010

Configure Magento using the NELiX TransaX Authorize.net Emulator

Here are your step by step instructions for configuring Magento using the NELiX TransaX Authorize.net Emulator
  1. Log in to the Magento Admin

  2. Go to System -> Configuration in navigation bar

  3. Select Payment Methods from the left side navigation.

  4. Select down arrow on Authorize.net bar (below Purchase Order)

  5. Enabled drop down set to -> Yes

  6. Adjust Payment Action as desired:
    To perform a sale, select Authorize and Capture
    To perform only an Auth, select Auth Only

  7. Insert your NELiX TransaX Gateway username in the API Login ID (i.e. transaxdemo)

  8. Insert your NELiX TransaX Gateway Password in the Transaction Key (i.e. nelix123)

  9. Change the Gateway URL to -> https://secure.nelixtransax.net/gateway/transact.dll

  10. Adjust any other settings as desired

  11. Click Save Config (orange button) near top right

You are ready to run transactions!

Sunday, July 25, 2010

Swipe over IP with Magtek Magnesafe

With identity theft rampant in today's internet, security continues to become more and more important. A common practice of merchants is to use a USB swipe reader, plugged into a computer. The merchant then swipes the consumer's card, which sends it through the USB card reader, into the computer, and to a database, point of sale system, payment gateway, or some other processing software.

Originally, this wall done in a keyboard emulator mode - basically in clear text. Not very secure at all. Later, HID mode was introduced, which hid the swiped data a little better, but it was still unencrypted and extractable.

With MagTek's Magnesafe card readers, the card date is encrypted at the head before it is transmitted. Using the NELiX TransaX Payment Gateway, you can send in your Magnesafe encrypted data. We decrypt on our end and process the payment. Process swiped transactions securely and easily, and maintain PCI complaince!

More information on the NELiX TransaX Payment Gateway

Wednesday, July 21, 2010

Sync Web Transactions With QuickBooks

It's been a long time since I've blogged about QuickBooks, but it's still one of our strongest offerings. And now, we've added what we feel is an unbelievable new feature to our QuickBooks module.

In addition to being able to run credit card and ACH / E-Check transactions out of QuickBooks, and in addition to our powerful Batch Mode, and the swipe and remote deposit capture / check conversion features, we now have a powerful gateway sync module!

That's right - you heard me! Now you can process transactions from anywhere! processed through iTransaX, our iPhone / iPod / iPad applications, processed through your website, processed from your Microsoft Access or FileMaker database, processed through the virtual terminal, etc. You can process transactions from anywhere! Then, open your QuickBooks file, and click a button and viola! All of your transactions are recorded in QuickBooks.

This process accounts for all transaction types - Sales, Refunds, Credits, Voids and Settlements! General Ledger, Receive Payment, Sales Receipts, Credit Memos and Deposit records are all auto created.

If you are interested in learning more about keeping your QuickBooks module in sync with all your credit card and ACH / e-check transactions, contact us today!

More information on the NELiX TransaX QuickBooks module for credit card and ACH / e-check processing.
More information on the NELiX TransaX Payment Gateway.

Monday, July 19, 2010

MWAA in our backyard!

It's that time of year again! MWAA summer meeting - the annual meeting of the Midwest Acquirers Association.

All of our friends and colleagues will be attending. The Keynote speech is by the founder of Twitter and Square. I'm personally very excited to sit in on that session.

The best part about MWAA this year? It's across the street from our offices! I knew, years ago, when the Schaumburg Convention Center went up, it would eventually pay off, and here it is! A convention I don't have to travel for!

I hope to see you there!

Friday, July 16, 2010

Software as a Service and payment processing

The Software as a Service (SaaS) model is a model that is becoming more and more popular. A software vendor will develop a system that they will host, but let other companies use.

For example, let's say a development firm creates an e-commerce package specifically designed for companies that sell educational games. This SaaS developer will allow merchants to license their software. The SaaS developer hosts, maintains and upgrades the software.

Licensing structures may include a monthly fee as well as per transaction fees. Per transaction fees may come in the form of a percentage or fixed per transaction amount.

There are unique complexities to the SaaS providers billing needs. Each of their merchants must be able to accept payment from their customers, but the SaaS provider must also collect from their merchants. Licensing structures may vary from merchant to merchant, and even transaction to transaction. Additionally, returns / refunds can complicate the billing process.

NELiX TransaX has developed technology that answers all of the needs of any SaaS developer. Using the NELiX TransaX Payment Gateway, developers can decide how much to charge on each transaction, on a transaction by transaction basis. Surcharges can be added. Billing can be scheduled and thresholds setup. Refunds can be handled in a number of different ways.

Additionally, NELiX TransaX shares residuals with SaaS developers! This means that the SaaS developer will earn additional revenue from their merchants.

If you are an SaaS vendor, and are looking for a complete billing solution, contact us today!

More information on SaaS credit card and ACH / e-check offerings
More information on the NELiX TransaX Payment Gateway

Monday, July 12, 2010

Visit NELiX at FileMaker DevCon 2010

I just finished arranging our travel to FileMaker DevCon 2010 in San Diego this year! We're very exciting to be attending.

Our focus has always been on working with the development community to help enhance their product and service offerings to their client with respect to payment processing. At the same time, we add a new source of revenue to the developer's business.

FileMaker has been an application that our developers have had experience with way back since FileMaker Plus! Wow, that seems so long ago - 20+ years! FileMaker has been around for a long time, and with good reason. It's an extremely powerful, yet easy to use database.

NELiX TransaX has developed tools to help developers integrate credit card and ach / e-check payment processing into the applications they build. This allows the developer to provide additional services to their customer, and perhaps bill additional development hours for providing those services. At the same time, the developer's customer gets additional automation, saving them valuable time. We also can almost always reduce the customer's current processing costs, and we share revenues with the developer! It's a win win scenario.

We're happy to count many FileMaker developers already as NELiX TransaX partners! If you're a FileMaker developer and will be attending FileMaker DevCon 2010, stop by our booth and see what we have to offer!

More information on our FileMaker payment processing offerings.

Friday, June 25, 2010

How To: Integrate Credit Card and ACH (e-check) with ColdFusion

This is the (long awaited) sixth part in a series (sorry that this one is out of order!) of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a ColdFusion application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice
  
params = {TransactionType = 'auth',
GatewayUserName = FORM.GatewayUserName,
GatewayPassword = FORM.GatewayPassword,
IPAddress = CGI.REMOTE_ADDR,
//Merchant_Defined_Field_1 = FORM.Merchant_Defined_Field_1,
//Merchant_Defined_Field_2 = FORM.Merchant_Defined_Field_2,
PaymentType = FORM.PaymentType,
Customer_Vault_Action = 'add_customer',
//Customer_Vault_ID = FORM.Customer_Vault_ID,
CCNumber = FORM.CCNumber,
CCExpDate = FORM.CCExpDate,
CVV = FORM.CVV,
CheckName = FORM.CheckName,
CheckABA = FORM.CheckABA,
CheckAccount = FORM.CheckAccount,
AccountHolderType = FORM.AccountHolderType,
AccountType = FORM.AccountType,
SecCode = FORM.SecCode,
Amount = '1',

OrderDescription = FORM.OrderDescription,

//PONumber = FORM.PONumber,
FirstName = FORM.FirstName,
LastName = FORM.LastName,
Company = FORM.Company,
Address1 = FORM.Address1,
Address2 = FORM.Address2,
City = FORM.City,
State = FORM.State,
Zip = FORM.Zip,
Country = FORM.Country,
Phone = FORM.Phone,
Fax = FORM.Fax,
EMail = FORM.EMail,
Website = FORM.Website};

ws = CreateObject("webservice","https://www.nelixtransax.com/roxapi/rox.asmx?WSDL");
ws.ProcessTransaction(params);
resp = getSOAPResponse(ws);




If you need any assistance with payment processing integration with your ColdFusion system, we are here to help!

Download ColdFusion credit card and ACH (e-check) integration examples.


Sunday, June 20, 2010

Automation of Credit Card and ACH Collection

Although our focus is helping our software development partners improve, enhance, and streamline credit card and ACH collection processes using our technology, we find that often a merchant approaches us without a development team, and asks us to do the development for them.

We have been building many custom systems on behalf of our customers. The common themes we have seen are:

- Online Bill Pay and Presentment
- Mobile Credit Card Processing
- Credit Card Processing using Telephony

Although the systems we build are all completely custom and unique to the merchant, and we use our FleXport toolkit as the basis of all of them, we find that the above themes are the most common.

If you are a merchant, and have questions about how to put together a system that has payment processing as a core component, we are the experts! Talk to us, and we can point you in the right direction, build a system, or bring in one of our many development partners to help you out!

For more information, visit nelixtransax.com.

Tuesday, June 15, 2010

I love Microsoft Access

I have been using Microsoft Access personally since 1991. Seems so long ago. It was version 1.1 when I started with it.

Since that time, me and my team of developers have built literally hundreds of Access databases. Access is probably my favorite application to work in, with Excel a close second.

With Microsoft Access it is so easy to whip up forms, reports, queries, etc. It is probably the greatest data manipulation tool that I have seen, and I've worked with many different tools!

Best of all, it is bundled with a Visual Basic based programming language that allows you to perform any automation that you need. You can use Access as a front end to a SQL Server backend and have it connect with any of countless remote data sources.

I use Access daily personally to manipulate my own data and automate otherwise manual processes. We have Access databases linked up with our QuickBooks files to manipulate data there, as well as with many different SQL Server, MySQL and Access databases we work with.

That is why, when a new developer calls us looking to integrate payment process (credit card and/or ACH) into their Access based application, my heart soars. I love to see it. These integrations are just so easy - we can do them usually in an hour or less. And it is so seemless, that the developer, and the clients, are always beyond happy.

It is a beautiful thing! I do have a place in my heart for many other database packages as well - 4D and FileMaker to name a couple. Each tool should be suited for it's purpose, and every database package has it's strengths and weaknesses. For data manipulation, none surpass Access.

More information on Microsoft Access and Credit Card Integration.

Tuesday, June 8, 2010

How To: Integrate Credit Card and ACH / E-Check processing into FileMaker

This is the ninth part in a series of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a FileMaker application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice
To accomplish a web service connection within FileMaker, we used the Troi URL Plug-in, a very inexpensive plug-in which allows FileMaker to easily post to a web resource.  This plug-in is available at http://www.troi.com/software/urlplugin.html.   Version 2.0.3 of the plug in is also included along with the example, but of course a license must be purchased from Troi before putting into production.  Once purchased, a permanent license key will be generated and sent to you from Troi.

Copy the plug in into your FileMaker extensions directory (both Windows and Mac plug-ins are included).

After being installed, we use FileMaker Scripts and Calculations to run the transaction.

First, we create a calculated filed to compose the XML payload needed to run the transaction. Here is an example calculation as seen in our example file. The fields here can be replaced with fields from your database, and elements that you will not use can be dropped from the calculation.

// REQUIRED FOR ALL TRANSACTIONS

"" & transactiontype & ""
& "" & username & ""
& "" & password & ""

// MERCHANT DEFINED FIELDS - UP TO 20 ARE SUPPORTED

& "" & merchantdefined1 & ""
& "" & merchantdefined2 & ""

// VOID TRANSACTION
// used to void a transaction prior to settlement. TRANSACTION ID is required. Payment Type is required if this is a "check" transaction.

& If ( transactiontype = "void" ; "" & transid & "" & If ( paymenttype = "check" ; "" & paymenttype & ""; ""); "")


// REFUND TRANSACTION
// used to refund a previous transaction. AMOUNT and TRANSACTION ID are required. Payment Type is required if this is a "check" transaction.

& If ( transactiontype = "refund" ; "" & amount & "" & "" & transid & "" & If ( paymenttype = "check" ; "" & paymenttype & ""; ""); "")

// CAPTURE TRANSACTION
// used to capture a previously auth'd transaction. AMOUNT and TRANSACTION ID are required. Payment Type is required if this is a "check" transaction.

& If ( transactiontype = "capture" ;
"" & amount & ""
& "" & transid & ""
& "" & orderid & ""
& "" & tracking_number & ""
& "" & shipping_carrier & ""
& If ( paymenttype = "check" ; "" & paymenttype & ""; ""); "")

// UPDATE TRANSACTION
// used to update shipping and tracking information in the gateway. Payment Type is required if this is a "check" transaction.

& If ( transactiontype = "update" ;
"" & transid & ""
& "" & tracking_number & ""
& "" & shipping_carrier & ""
& If ( paymenttype = "check" ; "" & paymenttype & ""; ""); "")

// VAULT DELETE CUSTOMER TRANSACTION
// used to remove a customer from the vault. CUSTOMER VAULT ID is required.

& If ( customer_vault_action = "delete_customer" ; "" & customer_vault_action & "" & "" & customer_vault_id & "" ; "")

// SALE OR AUTH TRANSACTION, OR ADD CUSTOMER/UPDATE CUSTOMER VAULT ACTIONS

& If ( transactiontype = "sale" or transactiontype = "auth" or customer_vault_action = "add_customer" or customer_vault_action = "update_customer" ;
"" & paymenttype & "" // REQUIRED

// FOR VAULT ACTIONS
& If ( customer_vault_action = "add_customer" or customer_vault_action = "update_customer" ; "" & customer_vault_action & ""; "")
& "" & customer_vault_id & ""

// INFO FOR CREDIT CARD TRANSACTION
& If ( paymenttype = "creditcard" ;
"" & ccnumber & ""
& "" & ccexpire & ""
& "" & cvv2 & ""
; "")

// INFO FOR CHECK (ACH) TRANSACTION
& If ( paymenttype = "check";
"" & checkname & ""
& "" & routing & ""
& "" & account & ""
& "" & accountholdertype & ""
& "" & accounttype & ""
& "" & seccode & ""
; "")


& "" & payment_plan_sku & "" // Used for recurring billing
& "" & amount & "" // REQUIRED
& "" & tax & "" // Informational Only
& "" & shipping & "" // Informational Only
& "" & description & ""
& "" & orderid & "" // Sent back in response, can be used to tie orders with transactions
& "" & ponumber & "" // Informational Only


// BILLING CONTACT INFO
& "" & firstname & ""
& "" & lastname & ""
& "" & company & ""
& "" & address1 & ""
& "" & address2 & ""
& "" & city & ""
& "" & state & ""
& "" & zip & ""
& "" & country & ""
& "" & phone & ""
& "" & fax & ""
& "" & email & ""
& "" & website & ""

// SHIPPING CONTACT INFO
& "" & shipfirstname & ""
& "" & shiplastname & ""
& "" & shipcompany & ""
& "" & shipaddress1 & ""
& "" & shipaddress2 & ""
& "" & shipcity & ""
& "" & shipstate & ""
& "" & shipzip & ""
& "" & shipcountry & ""
& "" & shipemail & ""

// OPTIONAL FEATURES
& "" & processorid & "" // If multiple merchant accounts are used within the gateway
& "" & descriptor & "" // Only supported by some processors
& "" & descriptorphone & "" // Only supported by some processors


; "")

A field should be created to hold the results as well. In our example, we call this field “results”

A script would then be created which would post the XML payload to the NELIX TransaX gateway. This should be setup to write the results to your “results” field:

// NOW WE POST THE XML STRING TO THE GATEWAY

TURL_Post("-unused"; "https://www.nelixtransax.com/roxapi/roxpost.asp"; "xml=" & TransaXDemo::xmlpayload)

If you are running Mac OS X, you will also need to run this calculation prior to the TURL_POST above:

// THIS STEP IS ONLY NEEDED ON MAC OS X. ALTHOUGH IT CAN BE LEFT IN FOR ANY OPERATING SYSTEM AND WILL NOT CAUSE PROBLEMS.

TURL_SetCustomHeader( "" ; "Content-Type: application/x-www-form-urlencoded" )


We then can use calculations to strip out the individual response values from the XML string that is returned as follows:

Status Code:

Middle ( results; Position (results; ""; 1; 1)+13; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+13))

Status Message
Middle ( results; Position (results; ""; 1; 1)+12; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+12))

Auth Code
Middle ( results; Position (results; ""; 1; 1)+11; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+11))

Transaction ID
Middle ( results; Position (results; ""; 1; 1)+10; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+10))

AVS Message
Middle ( results; Position (results; ""; 1; 1)+9; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+9))

CVV2 Message
Middle ( results; Position (results; ""; 1; 1)+10; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+10))

Order ID
Middle ( results; Position (results; ""; 1; 1)+9; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+9))

Customer Vault ID
Middle ( results; Position (results; ""; 1; 1)+19; Position (results; "";1;1) - ( Position (results; ""; 1; 1)+19))


NOTE: In some cases, the TURL plug in will strip spaces from data passed into the gateway. If you experience this problem, you can replace your spaces with “%20”. These will be converted to spaces when they hit the gateway. This can be done for the First Name, Last Name, Company, Order Description, Address 1, Address 2 and City fields.


If you need any assistance with payment processing integration with your FileMaker Flash system, we are here to help!

Download FileMaker credit card and ACH (e-check) integration examples.



Thursday, June 3, 2010

How To: Integrate Credit Card and ACH (e-check) processing into a Flex / Actionscript Flash system

This is the eighth part in a series of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a Flex / ActionScript Flash application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice

Follow these steps.

1. Create a new project.

2. Open “Data->Import Web Service” menu

Image: (NelixExmaples\doc\images\flex\01.jpg)

3. Change port to “RoXAIPSoap”and click “Finish”.
WebService files will be generated automatically.

Image: (NelixExmaples\doc\images\flex\02.jpg)

4. Add import directives in your project:

import com.nelixtransax.Responses;
import com.nelixtransax.Params;
import com.nelixtransax.ProcessTransaction_request;
import com.nelixtransax.ProcessTransactionResultEvent;
import com.nelixtransax.RoXAPI;

5. Initialize WebService:

private var ws:RoXAPI = new RoXAPI(null, null);

6. Add event listeners:

private function OnNelixWSButtonClick():void
{
ws.addEventListener(ProcessTransactionResultEvent.ProcessTransaction_RESULT, OnNelixWSSucces);

var params:Params = new Params();
var token:AsyncToken = ws.processTransaction(params);
token.addEventListener(FaultEvent.FAULT, OnFault);
}

private function OnNelixWSSucces(event:ProcessTransactionResultEvent):void
{
var a:com.nelixtransax.Responses = ws.processTransaction_lastResult;
Alert.show("Succes!");
}

private function OnFault(event:FaultEvent):void
{
Alert.show("Error #" + event.fault.errorID.toString() + ": " + event.fault.message );
}

7. Fill parameters:

private function FillParams(wsParams:Params):void
{
wsParams.TransactionType = TransactionType.selectedItem.toString();
wsParams.GatewayUserName = GatewayUserName.text;
wsParams.GatewayPassword = GatewayPassword.text;
wsParams.IPAddress = "127.0.0.1";

wsParams.Merchant_Defined_Field_1 = Merchant_Defined_Field_1.text;
wsParams.Merchant_Defined_Field_2 = Merchant_Defined_Field_2.text;

if(TransactionType.selectedItem.toString() == "void")
wsParams.TransactionID = TransactionID.text;

if(TransactionType.selectedItem.toString() == "refund")
{
wsParams.Amount = Amount.text;
wsParams.TransactionID = TransactionID.text;
}

if (TransactionType.selectedItem.toString() == "capture" )
{
wsParams.Amount = Amount.text;
wsParams.TransactionID = TransactionID.text;
wsParams.OrderID = OrderID.text;
wsParams.Tracking_Number = Tracking_Number.text;
wsParams.Shipping_Carrier = Shipping_Carrier.text;
}

if (TransactionType.selectedItem.toString() == "update")
{
wsParams.TransactionID = TransactionID.text;
wsParams.Tracking_Number = Tracking_Number.text;
wsParams.Shipping_Carrier = Shipping_Carrier.text;
}

if (Customer_Vault_Action.selectedItem.toString() == "delete_customer")
{
wsParams.Customer_Vault_Action = Customer_Vault_Action.selectedItem.toString();
wsParams.Customer_Vault_ID = Customer_Vault_ID.text;
}

if(TransactionType.selectedItem.toString() == "sale" || TransactionType.selectedItem.toString() == "auth" || Customer_Vault_Action.selectedItem.toString() == "add_customer" || Customer_Vault_Action.selectedItem.toString() == "update_customer" )
{
wsParams.PaymentType = PaymentType.selectedItem.toString();

if(Customer_Vault_Action.selectedItem.toString() == "add_customer" || Customer_Vault_Action.selectedItem.toString() == "update_customer" )
{
wsParams.Customer_Vault_Action = Customer_Vault_Action.selectedItem.toString();
}
wsParams.Customer_Vault_ID = Customer_Vault_ID.text;

if (wsParams.PaymentType == "creditcard")
{
wsParams.CCNumber = CCNumber.text;
wsParams.CCExpDate = CCExpDate.text;
wsParams.CVV = CVV.text;
}
if(wsParams.PaymentType == "check")
{
wsParams.CheckName = CheckName.text;
wsParams.CheckABA = CheckABA.text;
wsParams.CheckAccount = CheckAccount.text;
wsParams.AccountHolderType = AccountHolderType.selectedItem.toString();
wsParams.AccountType = AccountType.selectedItem.toString();
wsParams.SecCode = SecCode.selectedItem.toString();
}

wsParams.Payment_Plan_SKU = Payment_Plan_SKU.text;

wsParams.Amount = Amount.text;
wsParams.Tax = Tax.text;
wsParams.Shipping = Shipping.text;
wsParams.OrderDescription = OrderDescription.text;
wsParams.OrderID = OrderID.text;
wsParams.PONumber = PONumber.text;

wsParams.FirstName = FirstName.text;
wsParams.LastName = LastName.text;
wsParams.Company = Company.text;
wsParams.Address1 = Address1.text;
wsParams.Address2 = Address2.text;
wsParams.City = City.text;
wsParams.State = State.text;
wsParams.Zip = Zip.text;
wsParams.Country = Country.text;
wsParams.Phone = Phone.text;
wsParams.Fax = Fax.text;
wsParams.EMail = EMail.text;
wsParams.Website = Website.text;

wsParams.ShippingFirstName = ShippingFirstName.text;
wsParams.ShippingLastName = ShippingLastName.text;
wsParams.ShippingCompany = ShippingCompany.text;
wsParams.ShippingAddress1 = ShippingAddress1.text;
wsParams.ShippingAddress2 = ShippingAddress2.text;
wsParams.ShippingCity = ShippingCity.text;
wsParams.ShippingState = ShippingState.text;
wsParams.ShippingZip = ShippingZip.text;
wsParams.ShippingCountry = ShippingCountry.text;
wsParams.ShippingEmail = ShippingEmail.text;

wsParams.ProcessorID = ProcessorID.text;
wsParams.Descriptor = Descriptor.text;
wsParams.DescriptorPhone = DescriptorPhone.text;
}
}


If you need any assistance with payment processing integration with your Flex /ActionScript Flash system, we are here to help!

Download Flex / ActionScript flash credit card and ACH (e-check) integration examples.
Flash /ActionScript credit card integration examples also available.



Sunday, May 30, 2010

How To: Credit Card and ACH (e-check) integration with ASP.NET / C#

This is the seventh part in a series of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a .NET / C# application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void ContinueButton_Click(object sender, ImageClickEventArgs e)
{
RoXAPI_WebService.RoXAPI ws = new RoXAPI_WebService.RoXAPI();
RoXAPI_WebService.Params wsParams = new RoXAPI_WebService.Params();
RoXAPI_WebService.Responses wsResponse = new RoXAPI_WebService.Responses();

wsParams.TransactionType = TransactionType.SelectedValue;
wsParams.GatewayUserName = GatewayUserName.Text;
wsParams.GatewayPassword = GatewayPassword.Text;
wsParams.IPAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

wsParams.Merchant_Defined_Field_1 = Merchant_Defined_Field_1.Text;
wsParams.Merchant_Defined_Field_2 = Merchant_Defined_Field_2.Text;

if(TransactionType.SelectedValue == "void")
wsParams.TransactionID = TransactionID.Text;

if(TransactionType.SelectedValue == "refund")
{
wsParams.Amount = Amount.Text;
wsParams.TransactionID = TransactionID.Text;
}

if (TransactionType.SelectedValue == "capture" )
{
wsParams.Amount = Amount.Text;
wsParams.TransactionID = TransactionID.Text;
wsParams.OrderID = OrderID.Text;
wsParams.Tracking_Number = Tracking_Number.Text;
wsParams.Shipping_Carrier = Shipping_Carrier.Text;
}

if (TransactionType.SelectedValue == "update")
{
wsParams.TransactionID = TransactionID.Text;
wsParams.Tracking_Number = Tracking_Number.Text;
wsParams.Shipping_Carrier = Shipping_Carrier.Text;
}

if (Customer_Vault_Action.SelectedValue == "delete_customer")
{
wsParams.Customer_Vault_Action = Customer_Vault_Action.SelectedValue;
wsParams.Customer_Vault_ID = Customer_Vault_ID.Text;
}

if(TransactionType.SelectedValue == "sale" || TransactionType.SelectedValue == "auth" || Customer_Vault_Action.SelectedValue == "add_customer" || Customer_Vault_Action.SelectedValue == "update_customer" )
{
wsParams.PaymentType = PaymentType.SelectedValue;


if(Customer_Vault_Action.SelectedValue == "add_customer" || Customer_Vault_Action.SelectedValue == "update_customer" )
{
wsParams.Customer_Vault_Action = Customer_Vault_Action.SelectedValue;
}
wsParams.Customer_Vault_ID = Customer_Vault_ID.Text;

if (wsParams.PaymentType == "creditcard")
{
wsParams.CCNumber = CCNumber.Text;
wsParams.CCExpDate = CCExpDate.Text;
wsParams.CVV = CVV.Text;
}
if(wsParams.PaymentType == "check")
{
wsParams.CheckName = CheckName.Text;
wsParams.CheckABA = CheckABA.Text;
wsParams.CheckAccount = CheckAccount.Text;
wsParams.AccountHolderType = AccountHolderType.SelectedValue;
wsParams.AccountType = AccountType.SelectedValue;
wsParams.SecCode = SecCode.SelectedValue;
}

wsParams.Payment_Plan_SKU = Payment_Plan_SKU.Text;

wsParams.Amount = Amount.Text;
wsParams.Tax = Tax.Text;
wsParams.Shipping = Shipping.Text;
wsParams.OrderDescription = OrderDescription.Text;
wsParams.OrderID = OrderID.Text;
wsParams.PONumber = PONumber.Text;

wsParams.FirstName = FirstName.Text;
wsParams.LastName = LastName.Text;
wsParams.Company = Company.Text;
wsParams.Address1 = Address1.Text;
wsParams.Address2 = Address2.Text;
wsParams.City = City.Text;
wsParams.State = State.Text;
wsParams.Zip = Zip.Text;
wsParams.Country = Country.Text;
wsParams.Phone = Phone.Text;
wsParams.Fax = Fax.Text;
wsParams.EMail = EMail.Text;
wsParams.Website = Website.Text;

wsParams.ShippingFirstName = ShippingFirstName.Text;
wsParams.ShippingLastName = ShippingLastName.Text;
wsParams.ShippingCompany = ShippingCompany.Text;
wsParams.ShippingAddress1 = ShippingAddress1.Text;
wsParams.ShippingAddress2 = ShippingAddress2.Text;
wsParams.ShippingCity = ShippingCity.Text;
wsParams.ShippingState = ShippingState.Text;
wsParams.ShippingZip = ShippingZip.Text;
wsParams.ShippingCountry = ShippingCountry.Text;
wsParams.ShippingEmail = ShippingEmail.Text;

wsParams.ProcessorID = ProcessorID.Text;
wsParams.Descriptor = Descriptor.Text;
wsParams.DescriptorPhone = DescriptorPhone.Text;
}

wsResponse = ws.ProcessTransaction(wsParams);

MSG.Text = "STATUS_CODE: " + wsResponse.STATUS_CODE + "";
MSG.Text += "STATUS_MSG: " + wsResponse.STATUS_MSG + "";
MSG.Text += "TRANS_ID: " + wsResponse.TRANS_ID + "";
MSG.Text += "AUTH_CODE: " + wsResponse.AUTH_CODE + "";
MSG.Text += "AVS_CODE: " + wsResponse.AVS_CODE + "";
MSG.Text += "AVS_MSG: " + wsResponse.AVS_MSG + "";
MSG.Text += "CVV2_CODE: " + wsResponse.CVV2_CODE + "";
MSG.Text += "CVV2_MSG: " + wsResponse.CVV2_MSG + "";
MSG.Text += "ORDERID: " + wsResponse.ORDERID + "";
MSG.Text += "CUSTOMER_VAULT_ID: " + wsResponse.CUSTOMER_VAULT_ID + "";
MSG.Text += "FULLRESPONSE: " + wsResponse.FULLRESPONSE + "";
MSG.Text += "POSTSTRING: " + wsResponse.POSTSTRING + "";

if( wsResponse.STATUS_CODE == "1" )
{
MSG.Text = "SUCCESS!" + MSG.Text;
}
else
{
if( wsResponse.STATUS_CODE == "2")
MSG.Text = "DECLINE" + MSG.Text;
else
MSG.Text = "ERROR" + MSG.Text;

}


}
}


If you need any assistance with payment processing integration with your .NET system, we are here to help!

Download .NET /C# credit card and ACH (e-check) integration examples.



Monday, May 24, 2010

VB6 / Visual Basic 6 - credit card and ACH procecessing

I find myself working in VB6 very frequently lately.

And, as we put out examples of integrating credit card and ACH processing on a variety of different platforms, it occurred to me that we've integrated these types of features into many VB6 applications lately. Visual Basic is a programming language that has been around for quite some time now, and is loved by many developers.

Our FleXport library has examples in VBScript, VBA and VB.NET, but not VB6. Well, until now! We've recently updated our library to include a VB6 integration example.

VB6 shines when low level communication is needed - for example, when you need to communicate with a piece of hardware directly, or hook into the windows api. VB6 is still a tool of choice for many developers in these scenarios, and many of these applications also have need for some type of credit card processing, or ACH / E-check processing component.

With our examples (using the NELiX TransaX Gateway) it's easy!

Visual Basic 6 Credit Card Integration
More on NELiX TransaX FleXport
More on the NELiX TransaX Payment Gateway

Thursday, May 20, 2010

How To: Integrate Credit Card and ACH (e-check) processing with Classic ASP

This is the fifth part in a series of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a Classic ASP application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice
<%  Function BuildXML()   Dim vString    vString = ""         vString = vString & "" & request("TransactionType") & ""
vString = vString & "" & request("GatewayUserName") & ""
vString = vString & "" & request("GatewayPassword") & ""
vString = vString & "" & Request.Servervariables("REMOTE_HOST") & ""


vString = vString & "" & request("Merchant_Defined_Field_1") & ""
vString = vString & "" & request("Merchant_Defined_Field_2") & ""

If request("TransactionType") = "void" Then
vString = vString & "" & request("TransactionID") & ""

if request("PaymentType")="check" then
vString = vString & "" & request("PaymentType") & ""
end if
End If

If request("TransactionType") = "refund" Then
vString = vString & "" & request("Amount") & ""
vString = vString & "" & request("TransactionID") & ""

if request("PaymentType")="check" then
vString = vString & "" & request("PaymentType") & ""
end if

End If

If request("TransactionType") = "capture" Then
vString = vString & "" & request("Amount") & ""
vString = vString & "" & request("TransactionID") & ""
vString = vString & "" & request("OrderID") & ""
vString = vString & "" & request("Tracking_Number") & ""
vString = vString & "" & request("Shipping_Carrier") & ""

if request("PaymentType")="check" then
vString = vString & "" & request("PaymentType") & ""
end if
End If

If request("TransactionType") = "update" Then
vString = vString & "" & request("TransactionID") & ""
vString = vString & "" & request("Tracking_Number") & ""
vString = vString & "" & request("Shipping_Carrier") & ""

if request("PaymentType")="check" then
vString = vString & "" & request("PaymentType") & ""
end if
End If

If request("Customer_Vault_Action") = "delete_customer" Then
vString = vString & "" & request("Customer_Vault_Action") & ""
vString = vString & "" & request("Customer_Vault_ID") & ""
End If

If request("TransactionType") = "sale" Or request("TransactionType") = "auth" Or request("Customer_Vault_Action")
= "add_customer" Or request("Customer_Vault_Action") = "update_customer" Then
vString = vString & "" & request("PaymentType") & ""


If request("Customer_Vault_Action") = "add_customer" Or request("Customer_Vault_Action") = "update_customer" Then
vString = vString & "" & request("Customer_Vault_Action") & ""
End If
vString = vString & "" & request("Customer_Vault_ID") & ""

If request("PaymentType") = "creditcard" Then
vString = vString & "" & request("CCNumber") & ""
vString = vString & "" & request("CCExpDate") & ""
vString = vString & "" & request("CVV") & ""
End If
If request("PaymentType") = "check" Then
vString = vString & "" & request("CheckName") & ""
vString = vString & "" & request("CheckABA") & ""
vString = vString & "" & request("CheckAccount") & ""
vString = vString & "" & request("AccountHolderType") & ""
vString = vString & "" & request("AccountType") & ""
vString = vString & "" & request("SecCode") & ""
End If

vString = vString & "" & request("Payment_Plan_SKU") & ""

vString = vString & "" & request("Amount") & ""
vString = vString & "" & request("Tax") & ""
vString = vString & "" & request("Shipping") & ""
vString = vString & "" & request("OrderDescription") & ""
vString = vString & "" & request("OrderID") & ""
vString = vString & "" & request("PONumber") & ""

vString = vString & "" & request("FirstName") & ""
vString = vString & "" & request("LastName") & ""
vString = vString & "" & request("Company") & ""
vString = vString & "" & request("Address1") & ""
vString = vString & "" & request("Address2") & ""
vString = vString & "" & request("City") & ""
vString = vString & "" & request("State") & ""
vString = vString & "" & request("Zip") & ""
vString = vString & "" & request("Country") & ""
vString = vString & "" & request("Phone") & ""
vString = vString & "" & request("Fax") & ""
vString = vString & "" & request("EMail") & ""
vString = vString & "" & request("Website") & ""

vString = vString & "" & request("ShippingFirstName") & ""
vString = vString & "" & request("ShippingLastName") & ""
vString = vString & "" & request("ShippingCompany") & ""
vString = vString & "" & request("ShippingAddress1") & ""
vString = vString & "" & request("ShippingAddress2") & ""
vString = vString & "" & request("ShippingCity") & ""
vString = vString & "" & request("ShippingState") & ""
vString = vString & "" & request("ShippingZip") & ""
vString = vString & "" & request("ShippingCountry") & ""
vString = vString & "" & request("ShippingEmail") & ""

vString = vString & "" & request("ProcessorID") & ""
vString = vString & "" & request("Descriptor") & ""
vString = vString & "" & request("DescriptorPhone") & ""
End If


BuildXML = vString

End Function

Function SoapWrapper(vXML)
Dim S

S = ""
S = S & ""
S = S & ""
S = S & "" & vXML & "
"

SoapWrapper = S
End Function


Dim webServiceUrl, httpReq, vXML, oNode

Set httpReq = Server.CreateObject("Microsoft.XMLHTTP")

webServiceUrl = "https://www.nelixtransax.com/roxapi/rox.asmx"
vXML = SoapWrapper(BuildXML())

httpReq.Open "POST", webServiceUrl, False
httpReq.setRequestHeader "Content-Type", "text/xml"
httpReq.setRequestHeader "Connection", "close"
httpReq.setRequestHeader "SOAPAction", "https://www.nelixtransax.com/roxapi/ProcessTransaction"
httpReq.Send vXML

'Results = httpReq.responseText

Set xmlDoc = Server.CreateObject("MSXML2.DOMDocument.3.0")
xmlDoc.loadXML (httpReq.responseXML.XML)
Set oNode = xmlDoc.childNodes(1).childNodes(0).childNodes(0).childNodes(0)

Results = ""
Results = Results & "STATUS_CODE: " & oNode.selectSingleNode("STATUS_CODE").Text & ""
Results = Results & "STATUS_MSG: " & oNode.selectSingleNode("STATUS_MSG").Text & ""
Results = Results & "TRANS_ID: " & oNode.selectSingleNode("TRANS_ID").Text & ""
Results = Results & "AUTH_CODE: " & oNode.selectSingleNode("AUTH_CODE").Text & ""
Results = Results & "AVS_CODE: " & oNode.selectSingleNode("AVS_CODE").Text & ""
Results = Results & "AVS_MSG: " & oNode.selectSingleNode("AVS_MSG").Text & ""
Results = Results & "CVV2_CODE: " & oNode.selectSingleNode("CVV2_CODE").Text & ""
Results = Results & "CVV2_MSG: " & oNode.selectSingleNode("CVV2_MSG").Text & ""
Results = Results & "ORDERID: " & oNode.selectSingleNode("ORDERID").Text & ""
Results = Results & "CUSTOMER_VAULT_ID: " & oNode.selectSingleNode("CUSTOMER_VAULT_ID").Text & ""
Results = Results & "FULLRESPONSE: " & Replace(oNode.selectSingleNode("FULLRESPONSE").Text, "&", "&") & ""

Set httpReq = Nothing

response.write "RESULTS:

" & Results
%>



If you need any assistance with payment processing integration with your Classic ASP system, we are here to help!

Download Classic ASP credit card and ACH (e-check) integration examples.


Monday, May 10, 2010

Credit Card / ACH processing integration example using PHP now available on my blog: http://ping.fm/8HLcT

How To: Credit Card and ACH (e-check) integration in PHP

This is the fourth part in a series of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a PHP application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice
 ini_set('display_errors', '1');
//load nusoap code
require_once('nusoap.php');
//create client
$soapclient = new nusoap_client('https://www.nelixtransax.com/roxapi/rox.asmx?WSDL','wsdl');
//gather parameters
$params['TransactionType'] = $_POST['TransactionType'];
$params['GatewayUserName'] = $_POST['GatewayUserName'];
$params['GatewayPassword'] = $_POST['GatewayPassword'];
$params['IPAddress'] = $_SERVER['REMOTE_ADDR'];
$params['Merchant_Defined_Field_1'] = $_POST['Merchant_Defined_Field_1'];
$params['Merchant_Defined_Field_2'] = $_POST['Merchant_Defined_Field_2'];
$params['PaymentType'] = $_POST['PaymentType'];
$params['Customer_Vault_ID'] = $_POST['Customer_Vault_ID'];
$params['CCNumber'] = $_POST['CCNumber'];
$params['CCExpDate'] = $_POST['CCExpDate'];
$params['CVV'] = $_POST['CVV'];
$params['Payment_Plan_SKU'] = $_POST['Payment_Plan_SKU'];
$params['Amount'] = $_POST['Amount'];
$params['Tax'] = $_POST['Tax'];
$params['Shipping'] = $_POST['Shipping'];
$params['OrderDescription'] = $_POST['OrderDescription'];
$params['OrderID'] = $_POST['OrderID'];
$params['PONumber'] = $_POST['PONumber'];
$params['FirstName'] = $_POST['FirstName'];
$params['LastName'] = $_POST['LastName'];
$params['Company'] = $_POST['Company'];
$params['Address1'] = $_POST['Address1'];
$params['Address2'] = $_POST['Address2'];
$params['City'] = $_POST['City'];
$params['State'] = $_POST['State'];
$params['Zip'] = $_POST['Zip'];
$params['Country'] = $_POST['Country'];
$params['Phone'] = $_POST['Phone'];
$params['Fax'] = $_POST['Fax'];
$params['EMail'] = $_POST['EMail'];
$params['Website'] = $_POST['Website'];
$params['ShippingFirstName'] = $_POST['ShippingFirstName'];
$params['ShippingLastName'] = $_POST['ShippingLastName'];
$params['ShippingCompany'] = $_POST['ShippingCompany'];
$params['ShippingAddress1'] = $_POST['ShippingAddress1'];
$params['ShippingAddress2'] = $_POST['ShippingAddress2'];
$params['ShippingCity'] = $_POST['ShippingCity'];
$params['ShippingState'] = $_POST['ShippingState'];
$params['ShippingZip'] = $_POST['ShippingZip'];
$params['ShippingCountry'] = $_POST['ShippingCountry'];
$params['ShippingEmail'] = $_POST['ShippingEmail'];
$params['ProcessorID'] = $_POST['ProcessorID'];
$params['Descriptor'] = $_POST['Descriptor'];
$params['DescriptorPhone'] = $_POST['DescriptorPhone'];


$proxy = $soapclient->getProxy();

$result = $proxy->ProcessTransaction(Array('objparameters' => $params));

print_r($result);

?>



If you need any assistance with payment processing integration with your PHP system, we are here to help!

Download PHP credit card and ACH (e-check) integration examples.

Wednesday, May 5, 2010

How To: Credit Card/ACH Integration with ASP.NET / VB.NET

This is the third in a series of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a VB.NET application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice
Partial Public Class GatewayAPI_Demo
Inherits System.Web.UI.Page

Public connStr, vSQL, vID, vMode, vMSG

Protected Sub ContinueButton_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) _
Handles ContinueButton.Click

Dim ws As New RoXAPI.RoXAPI
Dim wsParams As New RoXAPI.Params
Dim wsResponse As New RoXAPI.Responses

wsParams.TransactionType = Me.TransactionType.SelectedValue
wsParams.GatewayUserName = Me.GatewayUserName.Text
wsParams.GatewayPassword = Me.GatewayPassword.Text
wsParams.IPAddress = HttpContext.Current.Request.ServerVariables("REMOTE_ADDR")

wsParams.Merchant_Defined_Field_1 = Merchant_Defined_Field_1.Text
wsParams.Merchant_Defined_Field_2 = Merchant_Defined_Field_2.Text

If Me.TransactionType.SelectedValue = "void" Then
wsParams.TransactionID = Me.TransactionID.Text
wsParams.PaymentType = Me.PaymentType.SelectedValue
End If

If Me.TransactionType.SelectedValue = "refund" Then
wsParams.Amount = Me.Amount.Text
wsParams.TransactionID = Me.TransactionID.Text
wsParams.PaymentType = Me.PaymentType.SelectedValue
End If

If Me.TransactionType.SelectedValue = "capture" Then
wsParams.Amount = Me.Amount.Text
wsParams.TransactionID = Me.TransactionID.Text
wsParams.OrderID = Me.OrderID.Text
wsParams.Tracking_Number = Me.Tracking_Number.Text
wsParams.Shipping_Carrier = Me.Shipping_Carrier.Text
wsParams.PaymentType = Me.PaymentType.SelectedValue
End If

If Me.TransactionType.SelectedValue = "update" Then
wsParams.TransactionID = Me.TransactionID.Text
wsParams.Tracking_Number = Me.Tracking_Number.Text
wsParams.Shipping_Carrier = Me.Shipping_Carrier.Text
wsParams.PaymentType = Me.PaymentType.SelectedValue
End If

If Me.Customer_Vault_Action.SelectedValue = "delete_customer" Then
wsParams.Customer_Vault_Action = Me.Customer_Vault_Action.SelectedValue
wsParams.Customer_Vault_ID = Me.Customer_Vault_ID.Text
End If

If Me.TransactionType.SelectedValue = "sale" Or Me.TransactionType.SelectedValue = "auth" Or _
Me.Customer_Vault_Action.SelectedValue = "add_customer" Or _
Me.Customer_Vault_Action.SelectedValue = "update_customer" Then
wsParams.PaymentType = Me.PaymentType.SelectedValue

If Me.Customer_Vault_Action.SelectedValue = "add_customer" Or _
Me.Customer_Vault_Action.SelectedValue = "update_customer" Then
wsParams.Customer_Vault_Action = Me.Customer_Vault_Action.SelectedValue
End If
wsParams.Customer_Vault_ID = Me.Customer_Vault_ID.Text

If wsParams.PaymentType = "creditcard" Then
wsParams.CCNumber = Me.CCNumber.Text
wsParams.CCExpDate = Me.CCExpDate.Text
wsParams.CVV = Me.CVV.Text
End If
If wsParams.PaymentType = "check" Then
wsParams.CheckName = Me.CheckName.Text
wsParams.CheckABA = Me.CheckABA.Text
wsParams.CheckAccount = Me.CheckAccount.Text
wsParams.AccountHolderType = Me.AccountHolderType.SelectedValue
wsParams.AccountType = Me.AccountType.SelectedValue
wsParams.SecCode = Me.SecCode.SelectedValue
End If

wsParams.Payment_Plan_SKU = Me.Payment_Plan_SKU.Text

wsParams.Amount = Me.Amount.Text
wsParams.Tax = Me.Tax.Text
wsParams.Shipping = Me.Shipping.Text
wsParams.OrderDescription = Me.OrderDescription.Text
wsParams.OrderID = Me.OrderID.Text
wsParams.PONumber = Me.PONumber.Text

wsParams.FirstName = Me.FirstName.Text
wsParams.LastName = Me.LastName.Text
wsParams.Company = Me.Company.Text
wsParams.Address1 = Me.Address1.Text
wsParams.Address2 = Me.Address2.Text
wsParams.City = Me.City.Text
wsParams.State = Me.State.Text
wsParams.Zip = Me.Zip.Text
wsParams.Country = Me.Country.Text
wsParams.Phone = Me.Phone.Text
wsParams.Fax = Me.Fax.Text
wsParams.EMail = Me.EMail.Text
wsParams.Website = Me.Website.Text

wsParams.ShippingFirstName = Me.ShippingFirstName.Text
wsParams.ShippingLastName = Me.ShippingLastName.Text
wsParams.ShippingCompany = Me.ShippingCompany.Text
wsParams.ShippingAddress1 = Me.ShippingAddress1.Text
wsParams.ShippingAddress2 = Me.ShippingAddress2.Text
wsParams.ShippingCity = Me.ShippingCity.Text
wsParams.ShippingState = Me.ShippingState.Text
wsParams.ShippingZip = Me.ShippingZip.Text
wsParams.ShippingCountry = Me.ShippingCountry.Text
wsParams.ShippingEmail = Me.ShippingEmail.Text

wsParams.ProcessorID = Me.ProcessorID.Text
wsParams.Descriptor = Me.Descriptor.Text
wsParams.DescriptorPhone = Me.DescriptorPhone.Text
End If


wsResponse = ws.ProcessTransaction(wsParams)

MSG.Text = "STATUS_CODE: " & wsResponse.STATUS_CODE & "
"
MSG.Text += "STATUS_MSG: " & wsResponse.STATUS_MSG & "
"
MSG.Text += "TRANS_ID: " & wsResponse.TRANS_ID & "
"
MSG.Text += "AUTH_CODE: " & wsResponse.AUTH_CODE & "
"
MSG.Text += "AVS_CODE: " & wsResponse.AVS_CODE & "
"
MSG.Text += "AVS_MSG: " & wsResponse.AVS_MSG & "
"
MSG.Text += "CVV2_CODE: " & wsResponse.CVV2_CODE & "
"
MSG.Text += "CVV2_MSG: " & wsResponse.CVV2_MSG & "
"
MSG.Text += "ORDERID: " & wsResponse.ORDERID & "
"
MSG.Text += "CUSTOMER_VAULT_ID: " & wsResponse.CUSTOMER_VAULT_ID & "
"
MSG.Text += "FULLRESPONSE: " & wsResponse.FULLRESPONSE & "
"
MSG.Text += "POSTSTRING: " & wsResponse.POSTSTRING & "
"

If wsResponse.STATUS_CODE = "1" Then
MSG.Text = "SUCCESS!
" & MSG.Text
Else
If wsResponse.STATUS_CODE = "2" Then
MSG.Text = "DECLINE
" & MSG.Text
Else
MSG.Text = "ERROR
" & MSG.Text
End If
End If



End Sub
End Class


If you need any assistance with payment processing integration with your .NET system, we are here to help!

Download ASP.NET / VB.NET credit card and ACH (e-check) integration examples.

Friday, April 30, 2010

How To: Credit Card and ACH (e-check) Integration with 4D (4th Dimension)

This is the second in a series of postings on how to integrate credit card and ACH/E-check transactions into various systems. This installment demonstrates code used for processing payments (credit card and/or ACH) within a 4D (4th Dimension) application.

This was taken from the NELiX TransaX FleXport toolkit documentation. Credit card integration examples can be downloaded on the NELiX TransaX FleXport page.

Assumptions:
- Using NELiX TransaX Payment Gateway
- Communicating using NELiX TransaX Webservice


C_TEXT($vString)
C_BLOB($vBlobIn;$vBlobOut)

$vString:=""+Char(13)
$vString:=$vString+""+Char(13)

$vString:=$vString+""+transactiontype+""+Char(13)
$vString:=$vString+""+username+""+Char(13)
$vString:=$vString+""+password+""+Char(13)

$vString:=$vString+""+merchantdefined1+""+Char(13)
$vString:=$vString+""+merchantdefined2+""+Char(13)

If (transactiontype="void")
$vString:=$vString+""+transid+""+Char(13)
If (paymenttype="check")
$vString:=$vString+""+paymenttype+""+Char(13)
End if
End if

If (transactiontype="refund")
$vString:=$vString+""+amount+""+Char(13)
$vString:=$vString+""+transid+""+Char(13)
If (paymenttype="check")
$vString:=$vString+""+paymenttype+""+Char(13)
End if
End if

If (transactiontype="capture")
$vString:=$vString+""+amount+""+Char(13)
$vString:=$vString+""+transid+""+Char(13)
$vString:=$vString+""+orderid+""+Char(13)
$vString:=$vString+""+tracking_number+""+Char(13)
$vString:=$vString+""+shipping_carrier+""+Char(13)
If (paymenttype="check")
$vString:=$vString+""+paymenttype+""+Char(13)
End if
End if

If (transactiontype="update")
$vString:=$vString+""+transid+""+Char(13)
$vString:=$vString+""+tracking_number+""+Char(13)
$vString:=$vString+""+shipping_carrier+""+Char(13)
If (paymenttype="check")
$vString:=$vString+""+paymenttype+""+Char(13)
End if
End if

If (customer_vault_action="delete_customer")
$vString:=$vString+""+customer_vault_action+""+customer_vault_id+"
"+Char(13)
End if

If (transactiontype="sale") | (transactiontype="auth") | (customer_vault_action="add_customer") | (customer_vault_action="update_customer")
$vString:=$vString+""+paymenttype+""+Char(13)

If (customer_vault_action="add_customer") | (customer_vault_action="update_customer")
$vString:=$vString+""+customer_vault_action+""+Char(13)
End if
$vString:=$vString+""+customer_vault_id+""+Char(13)

If (paymenttype="creditcard")
$vString:=$vString+""+ccnumber+""+Char(13)
$vString:=$vString+""+ccexpire+""+Char(13)
$vString:=$vString+""+cvv2+""+Char(13)
End if

If (paymenttype="check")
$vString:=$vString+""+checkname+""+Char(13)
$vString:=$vString+""+routing+""+Char(13)
$vString:=$vString+""+account+""+Char(13)
$vString:=$vString+""+accountholdertype+""+Char(13)
$vString:=$vString+""+accounttype+""+Char(13)
$vString:=$vString+""+seccode+""+Char(13)
End if

$vString:=$vString+""+payment_plan_sku+""+Char(13)

$vString:=$vString+""+amount+""+Char(13)
$vString:=$vString+""+tax+""+Char(13)
$vString:=$vString+""+shipping+""+Char(13)
$vString:=$vString+""+description+""+Char(13)
$vString:=$vString+""+orderid+""+Char(13)
$vString:=$vString+""+ponumber+""+Char(13)

$vString:=$vString+""+firstname+""+Char(13)
$vString:=$vString+""+lastname+""+Char(13)
$vString:=$vString+""+company+""+Char(13)
$vString:=$vString+""+address1+""+Char(13)
$vString:=$vString+""+address2+""+Char(13)
$vString:=$vString+""+city+""+Char(13)
$vString:=$vString+""+state+""+Char(13)
$vString:=$vString+""+zip+""+Char(13)
$vString:=$vString+""+country+""+Char(13)
$vString:=$vString+""+phone+""+Char(13)
$vString:=$vString+""+fax+""+Char(13)
$vString:=$vString+""+email+""+Char(13)
$vString:=$vString+""+website+""+Char(13)

$vString:=$vString+""+shipfirstname+""+Char(13)
$vString:=$vString+""+shiplastname+""+Char(13)
$vString:=$vString+""+shipcompany+""+Char(13)
$vString:=$vString+""+shipaddress1+""+Char(13)
$vString:=$vString+""+shipaddress2+""+Char(13)
$vString:=$vString+""+shipcity+""+Char(13)
$vString:=$vString+""+shipstate+""+Char(13)
$vString:=$vString+""+shipzip+""+Char(13)
$vString:=$vString+""+shipcountry+""+Char(13)
$vString:=$vString+""+shipemail+""+Char(13)
$vString:=$vString+""+processorid+""+Char(13)
$vString:=$vString+""+descriptor+""+Char(13)
$vString:=$vString+""+descriptorphone+""+Char(13)

End if

$vString:=$vString+"
"+Char(13)
$vString:=$vString+""


$result:=""
TEXT TO BLOB($vString;$vBlobIn;Text without length )
SET WEB SERVICE PARAMETER("MyXMLInputBlob";$vBlobIn)

CALL WEB SERVICE("https://www.nelixtransax.com/roxapi/rox.asmx";"https://www.nelixtransax.com/roxapi/ProcessTransaction";"ProcessTransaction";"https://www.nelixtransax.com/roxapi/";Web Service Manual )

If (OK=1)
GET WEB SERVICE RESULT($vBlobOut;"ProcessTransactionResult";*) ` Memory clean-up on the final return value.
$result:=BLOB to text($vBlobOut;Text without length )
End if


$xml_Value:=""

$xml_Parent_Ref:=DOM Parse XML variable($result)
$xml_Child_Ref:=DOM Get first child XML element($xml_Parent_Ref)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"TRANS_ID";1;$TRANS_ID)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"STATUS_CODE";1;$STATUS_CODE)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"STATUS_MSG";1;$STATUS_MSG)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"AUTH_CODE";1;$AUTH_CODE)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"AVS_CODE";1;$AVS_CODE)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"AVS_MSG";1;$AVS_MSG)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"CVV2_CODE";1;$CVV2_CODE)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"CVV2_MSG";1;$CVV2_MSG)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"ORDERID";1;$ORDERID)
$xml_Element_Value:=DOM Get XML element($xml_Child_Ref;"CUSTOMER_VAULT_ID";1;$CUSTOMER_VAULT_ID)

vResult:="STATUS CODE: "+$STATUS_CODE+Char(13)
vResult:=vResult+"STATUS MSG: "+$STATUS_MSG+Char(13)
vResult:=vResult+"TRANS ID: "+$TRANS_ID+Char(13)
vResult:=vResult+"AUTH CODE: "+$AUTH_CODE+Char(13)
vResult:=vResult+"AVS CODE: "+$AVS_CODE+Char(13)
vResult:=vResult+"AVS MSG: "+$AVS_MSG+Char(13)
vResult:=vResult+"CVV2 CODE: "+$CVV2_CODE+Char(13)
vResult:=vResult+"CVV2 MSG: "+$CVV2_MSG+Char(13)
vResult:=vResult+"ORDER ID: "+$ORDERID+Char(13)
vResult:=vResult+"CUSTOMER VAULT ID: "+$CUSTOMER_VAULT_ID+Char(13)

DOM CLOSE XML($xml_Parent_Ref)

If you need any assistance with payment processing integration with your4D database, we are here to help!

Download 4D (4th Dimension) credit card and ACH (e-check) integration examples

The biggest advantage of our gateway comes from power that it puts in the hands of your developers. Easily integrate with your application and take advantage of features to enhance your system.

We invite you to a live demo and the opportunity to build a partnership. Our promise to partners is, through innovation, today's products will be relentlessly enhanced into tomorrow's solutions.

1921-A Rohlwing Road
Rolling Meadows IL 60008-4800
P) 866-513-1547
F) 866-513-1548
info@transaxgateway.com