Payment Technology Blog

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

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

Sunday, April 25, 2010

How To: Credit Card Processing with Microsoft Access

This is the first 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 Microsoft Access 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


Option Compare Database

Function BuilXMLString()
Dim vString
vString = ""

vString = vString & "" & Me.transactiontype & ""
vString = vString & "" & Me.username & ""
vString = vString & "" & Me.Password & ""

vString = vString & "" & Me.merchantdefined1 & ""
vString = vString & "" & Me.merchantdefined2 & ""

If Me.transactiontype = "void" Then
vString = vString & "" & Me.transid & ""
If Me.paymenttype = "check" Then
vString = vString & "" & Me.paymenttype & ""
End If
End If

If Me.transactiontype = "refund" Then
vString = vString & "" & Me.amount & ""
vString = vString & "" & Me.transid & ""
If Me.paymenttype = "check" Then
vString = vString & "" & Me.paymenttype & ""
End If
End If

If Me.transactiontype = "capture" Then
vString = vString & "" & Me.amount & ""
vString = vString & "" & Me.transid & ""
vString = vString & "" & Me.orderid & ""
vString = vString & "" & Me.tracking_number & ""
vString = vString & "" & Me.shipping_carrier & ""
If Me.paymenttype = "check" Then
vString = vString & "" & Me.paymenttype & ""
End If
End If

If Me.transactiontype = "update" Then
vString = vString & "" & Me.transid & ""
vString = vString & "" & Me.tracking_number & ""
vString = vString & "" & Me.shipping_carrier & ""
If Me.paymenttype = "check" Then
vString = vString & "" & Me.paymenttype & ""
End If
End If

If Me.customer_vault_action = "delete_customer" Then
vString = vString & "" & Me.customer_vault_action &
"
" & Me.customer_vault_id & ""
End If

If Me.transactiontype = "sale" Or Me.transactiontype = "auth" Or Me.customer_vault_action = "add_customer" Or
Me.customer_vault_action = "update_customer" Then
vString = vString & "" & Me.paymenttype & ""

If Me.customer_vault_action = "add_customer" Or Me.customer_vault_action = "update_customer" Then
vString = vString & "" & Me.customer_vault_action & ""
End If
vString = vString & "" & Me.customer_vault_id & ""

If Me.paymenttype = "creditcard" Then
vString = vString & "" & Me.ccnumber & ""
vString = vString & "" & Me.ccexpire & ""
vString = vString & "" & Me.cvv2 & ""
End If
If Me.paymenttype = "check" Then
vString = vString & "" & Me.checkname & ""
vString = vString & "" & Me.routing & ""
vString = vString & "" & Me.account & ""
vString = vString & "" & Me.accountholdertype & ""
vString = vString & "" & Me.accounttype & ""
vString = vString & "" & Me.seccode & ""
End If

vString = vString & "" & Me.payment_plan_sku & ""

vString = vString & "" & Me.amount & ""
vString = vString & "" & Me.tax & ""
vString = vString & "" & Me.shipping & ""
vString = vString & "" & Me.description & ""
vString = vString & "" & Me.orderid & ""
vString = vString & "" & Me.ponumber & ""

vString = vString & "" & Me.firstname & ""
vString = vString & "" & Me.lastname & ""
vString = vString & "" & Me.company & ""
vString = vString & "" & Me.address1 & ""
vString = vString & "" & Me.address2 & ""
vString = vString & "" & Me.city & ""
vString = vString & "" & Me.state & ""
vString = vString & "" & Me.zip & ""
vString = vString & "" & Me.country & ""
vString = vString & "" & Me.phone & ""
vString = vString & "" & Me.fax & ""
vString = vString & "" & Me.email & ""
vString = vString & "" & Me.website & ""

vString = vString & "" & Me.shipfirstname & ""
vString = vString & "" & Me.shiplastname & ""
vString = vString & "" & Me.shipcompany & ""
vString = vString & "" & Me.shipaddress1 & ""
vString = vString & "" & Me.shipaddress2 & ""
vString = vString & "" & Me.shipcity & ""
vString = vString & "" & Me.shipstate & ""
vString = vString & "" & Me.shipzip & ""
vString = vString & "" & Me.shipcountry & ""
vString = vString & "" & Me.shipemail & ""

vString = vString & "" & Me.processorid & ""
vString = vString & "" & Me.descriptor & ""
vString = vString & "" & Me.descriptorphone & ""
End If

BuilXMLString = vString
End Function

Function SoapWrapper(vXML)
Dim S As String

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

SoapWrapper = S
End Function

Private Sub Command1_Click()
Dim vXML, Results, ResultHeaders

vXML = SoapWrapper(BuilXMLString())

Dim O As New MSXML2.XMLHTTP30

O.Open "POST", "https://www.nelixtransax.com/roxapi/rox.asmx", False
O.setRequestHeader "Content-Type", "text/xml"
O.setRequestHeader "Connection", "close"
O.setRequestHeader "SOAPAction", "https://www.nelixtransax.com/roxapi/ProcessTransaction"
O.send vXML

Dim xmlDoc As New MSXML2.DOMDocument30
xmlDoc.loadXML (O.responseXML.XML)

Set oNode = xmlDoc.childNodes(1).childNodes(0).childNodes(0).childNodes(0)
Results = ""

On Error Resume Next

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

Me.Text2 = Results
End Sub

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

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

Wednesday, April 21, 2010

Developers: Integrate Credit Cards! Earn Money!

It's simple. You are a software developer. Integrate payment processing into your applications on behalf of your customers, and earn money!

Merchant account providers, for the most part, understand that people need to process payments online. However, they don't understand technology as a whole, and how it's used in the market place.

Developers, for the most part, understand that they may need to integrate some form of payment collecting into an application they are developing, but they don't understand, for the most part, the merchant account industry.

The result of this is a lot of business left on the table. Many developers will go out and find partners, when their customer asks them to add a credit card processing piece to their system. The developer will go out, find some component somewhere, plug it in, bill for their development hours, and be done with it.

We at NELiX TransaX have the answer!

- We have examples of credit card integration in almost any programming language.
- We have developers on staff who can assist and perform the integration.
- We have a feature rich gateway that allows developers to fully manage their customers accounts.
- Our tools will help you integrate new and better functionality for your customers
- Our tools will help your customers easily maintain PCI compliance.
- Of course, we can save your client money on their credit card processing costs.
- And best of all, we share residuals with developers for the lifetime of the account!

If you develop custom applications, you will earn additional development hours from your customers as you integrate new features.

If you have a "canned" software package you sell, you'll be able to add additional features such as ACH acceptance, single click purchase, Remote Deposit Capture (RDC), etc.

Every developer that we work with loves our technology, our services, and how we've helped them add an additional revenue stream to their business.

You are faced with this question from your clients regularly. You might as well earn money from it!

If you are a software developer, you should be working with NELiX TransaX.

More information for software developers.
More information for partners.

Saturday, April 17, 2010

Credit Cards and Integration

It has been a long time since I've blogged. I've been spending my time managing projects.

50% of my time has been managing integration projects - where we are integrating our credit card and ACH/e-check processing components into existing systems on our customers behalf.

The other 50% of my time has been spent on managing projects where we are building completely new systems to manage our customers payment processing functions.

The final 50% of my time has been spent on everything else :-)

On the integration projects, we have been using our FleXport library to integrate credit card processing into a wide variety of applications. We've had a lot of ASP, .NET, Access and FileMaker integrations lately. We've also been integrating credit card and ACH processing into many VB6 systems lately, surprisingly. We'll be adding a FleXport example for VB6 very soon!

In addition, we've spent a lot of time supporting partners who are integration our payment processing components with their FileMaker, Ruby, 4D, FoxPro, Access and other systems.

If you need help adding payment processing - credit card, ACH/E-check, RDC/Check Conversion, etc into your application, we can help! We have developers on staff well versed in all of these technologies! Whether you are an end user, or a developer, we can perform or assist in performing the integration work.

More information for developers on the NELiX TransaX suite of services
More information on NELiX TransaX FleXport

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