DataFlex
DataFlex
Global Payments Card Authorization
See more Global Payments Examples
Demonstrates how to send a card payments authorization request.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
String sTestUrl
String sClientID
String sSharedSecret
String sAmount
String sCurrency
String sCardNumber
Handle hoDt
String sDtStr
Handle hoPrng
String sOrderId
Handle hoCrypt
Handle hoSbA
Integer iNumReplaced
String sHashA
Handle hoSbB
String sHashB
Handle hoXml
Variant vResp
Handle hoResp
Integer iResult
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// if you don't have a Client ID yet you can still quickly test some basic request types using the following URL and credentials:
// Test URL - https://test.realexpayments.com/epage-remote.cgi
// Client ID: realexsandbox
// Shared Secret: Po8lRRT67a
Move "https://test.realexpayments.com/epage-remote.cgi" To sTestUrl
Move "realexsandbox" To sClientID
Move "Po8lRRT67a" To sSharedSecret
Move "1001" To sAmount
Move "EUR" To sCurrency
Move "4263970000005262" To sCardNumber
// We'll be sending the following XML in the body of the request:
// <?xml version="1.0" encoding="UTF-8"?>
// <request type="auth" timestamp="20180613141207">
// <merchantid>MerchantId</merchantid>
// <account>internet</account>
// <channel>ECOM</channel>
// <orderid>N6qsk4kYRZihmPrTXWYS6g</orderid>
// <amount currency="EUR">1001</amount>
// <card>
// <number>4263970000005262</number>
// <expdate>0425</expdate>
// <chname>James Mason</chname>
// <type>VISA</type>
// <cvn>
// <number>123</number>
// <presind>1</presind>
// </cvn>
// </card>
// <autosettle flag="1"/>
// <sha1hash>87707637a34ba651b6185718c863abc64b673f20</sha1hash>
// </request>
// Use this online tool to generate code from sample XML:
// Generate Code to Create XML
// Get the current date/time in this format: 20180613141207
Get Create (RefClass(cComCkDateTime)) To hoDt
If (Not(IsComObjectCreated(hoDt))) Begin
Send CreateComObject of hoDt
End
Get ComSetFromCurrentSystemTime Of hoDt To iSuccess
Get ComGetAsIso8601 Of hoDt "YYYYMMDDhhmmss" True To sDtStr
// Generate a unique order ID
Get Create (RefClass(cComChilkatPrng)) To hoPrng
If (Not(IsComObjectCreated(hoPrng))) Begin
Send CreateComObject of hoPrng
End
Get ComGenRandom Of hoPrng 32 "base64url" To sOrderId
// Compute the sha1hash
Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
If (Not(IsComObjectCreated(hoCrypt))) Begin
Send CreateComObject of hoCrypt
End
Set ComHashAlgorithm Of hoCrypt To "sha1"
Set ComEncodingMode Of hoCrypt To "hexlower"
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbA
If (Not(IsComObjectCreated(hoSbA))) Begin
Send CreateComObject of hoSbA
End
Get ComAppend Of hoSbA "timestamp.merchantid.orderid.amount.currency.cardnumber" To iSuccess
Get ComReplace Of hoSbA "timestamp" sDtStr To iNumReplaced
Get ComReplace Of hoSbA "merchantid" sClientID To iNumReplaced
Get ComReplace Of hoSbA "orderid" sOrderId To iNumReplaced
Get ComReplace Of hoSbA "amount" sAmount To iNumReplaced
Get ComReplace Of hoSbA "currency" sCurrency To iNumReplaced
Get ComReplace Of hoSbA "cardnumber" sCardNumber To iNumReplaced
Get ComGetAsString Of hoSbA To sTemp1
Get ComHashStringENC Of hoCrypt sTemp1 To sHashA
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbB
If (Not(IsComObjectCreated(hoSbB))) Begin
Send CreateComObject of hoSbB
End
Get ComAppend Of hoSbB sHashA To iSuccess
Get ComAppend Of hoSbB "." To iSuccess
Get ComAppend Of hoSbB sSharedSecret To iSuccess
Get ComGetAsString Of hoSbB To sTemp1
Get ComHashStringENC Of hoCrypt sTemp1 To sHashB
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Set ComTag Of hoXml To "request"
Get ComAddAttribute Of hoXml "type" "auth" To iSuccess
Get ComAddAttribute Of hoXml "timestamp" sDtStr To iSuccess
Send ComUpdateChildContent To hoXml "merchantid" sClientID
Send ComUpdateChildContent To hoXml "account" "internet"
Send ComUpdateChildContent To hoXml "channel" "ECOM"
Send ComUpdateChildContent To hoXml "orderid" sOrderId
Get ComUpdateAttrAt Of hoXml "amount" True "currency" sCurrency To iSuccess
Send ComUpdateChildContent To hoXml "amount" sAmount
Send ComUpdateChildContent To hoXml "card|number" sCardNumber
Send ComUpdateChildContent To hoXml "card|expdate" "0425"
Send ComUpdateChildContent To hoXml "card|chname" "James Mason"
Send ComUpdateChildContent To hoXml "card|type" "VISA"
Send ComUpdateChildContent To hoXml "card|cvn|number" "123"
Send ComUpdateChildContent To hoXml "card|cvn|presind" "1"
Get ComUpdateAttrAt Of hoXml "autosettle" True "flag" "1" To iSuccess
Send ComUpdateChildContent To hoXml "sha1hash" sHashB
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get ComGetXml Of hoXml To sTemp1
Get pvComObject of hoResp to vResp
Get ComHttpStr Of hoHttp "POST" sTestUrl sTemp1 "utf-8" "application/xml" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComStatusCode Of hoResp To iTemp1
Showln "Response Status Code: " iTemp1
Showln "Response Body:"
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
Get ComStatusCode Of hoResp To iTemp1
If (iTemp1 <> 200) Begin
Showln "Failed."
Procedure_Return
End
// A status code of 200 indicates we received an XML response, but it could be an error message.
// Here's an example of an error response:
// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
// <response timestamp="20200418142356">
// <orderid>N6qsk4kYRZihmPrTXWYS6g</orderid>
// <result>508</result>
// <message>Invalid timestamp: '{' Value exceeds allowable limit: '}'</message>
// </response>
// We need to check the "result" within the XML.
Get ComBodyStr Of hoResp To sTemp1
Get ComLoadXml Of hoXml sTemp1 To iSuccess
Get ComGetChildIntValue Of hoXml "result" To iResult
Showln "result = " iResult
// A successful result looks like this:
// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
// <response timestamp="20200418145519">
// <merchantid>realexsandbox</merchantid>
// <account>internet</account>
// <orderid>Cw93I1nFWVZuaATh46qMUCBlCcfrOvLo65C2cq5X-AY</orderid>
// <result>00</result>
// <authcode>L3pHww</authcode>
// <message>AUTH CODE: L3pHww</message>
// <pasref>96838535689610806</pasref>
// <cvnresult>M</cvnresult>
// <timetaken>87</timetaken>
// <authtimetaken>67</authtimetaken>
// <batchid>6322506</batchid>
// <sha1hash>2fd2f15f97f1775779fe9bda536dc8317a4b39f6</sha1hash>
// </response>
If (iResult = 0) Begin
Get ComGetChildContent Of hoXml "authcode" To sTemp1
Showln "authcode = " sTemp1
Showln "Success."
End
Else Begin
Showln "Failed."
End
End_Procedure