Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Global Payments Card AuthorizationDemonstrates how to send a card payments authorization request. For more information, see https://developer.globalpay.com/#!/api/card-payments#api-authorisation
Use ChilkatAx-win32.pkg Procedure Test Handle hoHttp Boolean iSuccess 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 Boolean bTemp1 // 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 ComGetXml Of hoXml To sTemp1 Get ComPostXml Of hoHttp sTestUrl sTemp1 "utf-8" To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = 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 Send Destroy of hoResp End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.