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
(AutoIt) 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
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. $oHttp = ObjCreate("Chilkat.Http") Local $bSuccess ; 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 Local $sTestUrl = "https://test.realexpayments.com/epage-remote.cgi" Local $sClientID = "realexsandbox" Local $sharedSecret = "Po8lRRT67a" Local $sAmount = "1001" Local $sCurrency = "EUR" Local $sCardNumber = "4263970000005262" ; 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 $oDt = ObjCreate("Chilkat.CkDateTime") $oDt.SetFromCurrentSystemTime() Local $sDtStr = $oDt.GetAsIso8601("YYYYMMDDhhmmss",True) ; Generate a unique order ID $oPrng = ObjCreate("Chilkat.Prng") Local $sOrderId = $oPrng.GenRandom(32,"base64url") ; Compute the sha1hash $oCrypt = ObjCreate("Chilkat.Crypt2") $oCrypt.HashAlgorithm = "sha1" $oCrypt.EncodingMode = "hexlower" $oSbA = ObjCreate("Chilkat.StringBuilder") $oSbA.Append("timestamp.merchantid.orderid.amount.currency.cardnumber") Local $iNumReplaced = $oSbA.Replace("timestamp",$sDtStr) $iNumReplaced = $oSbA.Replace("merchantid",$sClientID) $iNumReplaced = $oSbA.Replace("orderid",$sOrderId) $iNumReplaced = $oSbA.Replace("amount",$sAmount) $iNumReplaced = $oSbA.Replace("currency",$sCurrency) $iNumReplaced = $oSbA.Replace("cardnumber",$sCardNumber) Local $sHashA = $oCrypt.HashStringENC($oSbA.GetAsString()) $oSbB = ObjCreate("Chilkat.StringBuilder") $oSbB.Append($sHashA) $oSbB.Append(".") $oSbB.Append($sharedSecret) Local $sHashB = $oCrypt.HashStringENC($oSbB.GetAsString()) $oXml = ObjCreate("Chilkat.Xml") $oXml.Tag = "request" $oXml.AddAttribute("type","auth") $oXml.AddAttribute("timestamp",$sDtStr) $oXml.UpdateChildContent "merchantid",$sClientID $oXml.UpdateChildContent "account","internet" $oXml.UpdateChildContent "channel","ECOM" $oXml.UpdateChildContent "orderid",$sOrderId $oXml.UpdateAttrAt("amount",True,"currency",$sCurrency) $oXml.UpdateChildContent "amount",$sAmount $oXml.UpdateChildContent "card|number",$sCardNumber $oXml.UpdateChildContent "card|expdate","0425" $oXml.UpdateChildContent "card|chname","James Mason" $oXml.UpdateChildContent "card|type","VISA" $oXml.UpdateChildContent "card|cvn|number","123" $oXml.UpdateChildContent "card|cvn|presind","1" $oXml.UpdateAttrAt("autosettle",True,"flag","1") $oXml.UpdateChildContent "sha1hash",$sHashB Local $oResp = $oHttp.PostXml($sTestUrl,$oXml.GetXml(),"utf-8") If ($oHttp.LastMethodSuccess = False) Then ConsoleWrite($oHttp.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("Response Status Code: " & $oResp.StatusCode & @CRLF) ConsoleWrite("Response Body:" & @CRLF) ConsoleWrite($oResp.BodyStr & @CRLF) If ($oResp.StatusCode <> 200) Then ConsoleWrite("Failed." & @CRLF) Exit EndIf ; 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. $oXml.LoadXml($oResp.BodyStr) Local $iResult = $oXml.GetChildIntValue("result") ConsoleWrite("result = " & $iResult & @CRLF) ; 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) Then ConsoleWrite("authcode = " & $oXml.GetChildContent("authcode") & @CRLF) ConsoleWrite("Success." & @CRLF) Else ConsoleWrite("Failed." & @CRLF) EndIf |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.