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
(PowerShell) 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
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $http = New-Object Chilkat.Http # 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 $testUrl = "https://test.realexpayments.com/epage-remote.cgi" $clientID = "realexsandbox" $sharedSecret = "Po8lRRT67a" $amount = "1001" $currency = "EUR" $cardNumber = "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 $dt = New-Object Chilkat.CkDateTime $dt.SetFromCurrentSystemTime() $dtStr = $dt.GetAsIso8601("YYYYMMDDhhmmss",$true) # Generate a unique order ID $prng = New-Object Chilkat.Prng $orderId = $prng.GenRandom(32,"base64url") # Compute the sha1hash $crypt = New-Object Chilkat.Crypt2 $crypt.HashAlgorithm = "sha1" $crypt.EncodingMode = "hexlower" $sbA = New-Object Chilkat.StringBuilder $sbA.Append("timestamp.merchantid.orderid.amount.currency.cardnumber") $numReplaced = $sbA.Replace("timestamp",$dtStr) $numReplaced = $sbA.Replace("merchantid",$clientID) $numReplaced = $sbA.Replace("orderid",$orderId) $numReplaced = $sbA.Replace("amount",$amount) $numReplaced = $sbA.Replace("currency",$currency) $numReplaced = $sbA.Replace("cardnumber",$cardNumber) $hashA = $crypt.HashStringENC($sbA.GetAsString()) $sbB = New-Object Chilkat.StringBuilder $sbB.Append($hashA) $sbB.Append(".") $sbB.Append($sharedSecret) $hashB = $crypt.HashStringENC($sbB.GetAsString()) $xml = New-Object Chilkat.Xml $xml.Tag = "request" $xml.AddAttribute("type","auth") $xml.AddAttribute("timestamp",$dtStr) $xml.UpdateChildContent("merchantid",$clientID) $xml.UpdateChildContent("account","internet") $xml.UpdateChildContent("channel","ECOM") $xml.UpdateChildContent("orderid",$orderId) $xml.UpdateAttrAt("amount",$true,"currency",$currency) $xml.UpdateChildContent("amount",$amount) $xml.UpdateChildContent("card|number",$cardNumber) $xml.UpdateChildContent("card|expdate","0425") $xml.UpdateChildContent("card|chname","James Mason") $xml.UpdateChildContent("card|type","VISA") $xml.UpdateChildContent("card|cvn|number","123") $xml.UpdateChildContent("card|cvn|presind","1") $xml.UpdateAttrAt("autosettle",$true,"flag","1") $xml.UpdateChildContent("sha1hash",$hashB) $resp = $http.PostXml($testUrl,$xml.GetXml(),"utf-8") if ($http.LastMethodSuccess -eq $false) { $($http.LastErrorText) exit } $("Response Status Code: " + $resp.StatusCode) $("Response Body:") $($resp.BodyStr) if ($resp.StatusCode -ne 200) { $("Failed.") exit } # 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. $xml.LoadXml($resp.BodyStr) $result = $xml.GetChildIntValue("result") $("result = " + $result) # 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 ($result -eq 0) { $("authcode = " + $xml.GetChildContent("authcode")) $("Success.") } else { $("Failed.") } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.