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) Payeezy Place Temp Authorization Hold on Buyer’s Credit CardDemonstrates how to place a temporary authorization hold for the desired amount on the buyer’s credit card. You can Capture the authorized amount on completion of service or Void/Refund the transaction as required.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. $oCrypt = ObjCreate("Chilkat.Crypt2") $oPrng = ObjCreate("Chilkat.Prng") Local $bSuccess ; An API key such as y6pWAJNyJyjGv66IsVuWnklkKUPFbb0a Local $sApiKey = "my_api_key" ; An API secret such as 86fbae7030253af3cd15faef2a1f4b67353e41fb6799f576b5093ae52901e6f7 Local $sApiSecret = "my_api_secret" ; A token such as fdoa-a480ce8951daa73262734cf102641994c1e55e7cdf4c02b6 Local $sToken = "my_merchant_token" ; The nonce is a random number (bytes), something like "6057786719490086000" Local $sNonce = $oPrng.GenRandom(8,"decimal") ConsoleWrite("nonce = " & $sNonce & @CRLF) $oDtNow = ObjCreate("Chilkat.CkDateTime") $oDtNow.SetFromCurrentSystemTime() $oSbTimestamp = ObjCreate("Chilkat.StringBuilder") ; Get the epoch timestamp in seconds $oSbTimestamp.Append($oDtNow.GetAsUnixTimeStr(False)) ; Change it to milliseconds $oSbTimestamp.Append("000") ; The timestamp is a number similar to this: 1546011905000 (which is a timestamp taken on 28-Dec-2018). Local $sTimestamp = $oSbTimestamp.GetAsString() ConsoleWrite("timestamp = " & $sTimestamp & @CRLF) ; Generate the following JSON request body: ; { ; "merchant_ref": "Astonishing-Sale", ; "transaction_type": "authorize", ; "method": "credit_card", ; "amount": "1299", ; "currency_code": "USD", ; "credit_card": { ; "type": "visa", ; "cardholder_name": "John Smith", ; "card_number": "4788250000028291", ; "exp_date": "1020", ; "cvv": "123" ; } ; } $oJson = ObjCreate("Chilkat.JsonObject") $oJson.UpdateString("merchant_ref","Astonishing-Sale") $oJson.UpdateString("transaction_type","authorize") $oJson.UpdateString("method","credit_card") $oJson.UpdateString("amount","1299") $oJson.UpdateString("currency_code","USD") $oJson.UpdateString("credit_card.type","visa") $oJson.UpdateString("credit_card.cardholder_name","John Smith") $oJson.UpdateString("credit_card.card_number","4788250000028291") $oJson.UpdateString("credit_card.exp_date","1020") $oJson.UpdateString("credit_card.cvv","123") $oJson.EmitCompact = False ConsoleWrite($oJson.Emit() & @CRLF) ; string hashData = apiKey + nonce + timestamp + token + jsonString; $oSbHmacData = ObjCreate("Chilkat.StringBuilder") $oSbHmacData.Append($sApiKey) $oSbHmacData.Append($sNonce) $oSbHmacData.Append($sTimestamp) $oSbHmacData.Append($sToken) $oSbHmacData.Append($oJson.Emit()) ; HMAC the data to produce a hex string. $oCrypt.EncodingMode = "hexlower" $oCrypt.MacAlgorithm = "hmac" $oCrypt.SetMacKeyString($sApiSecret) $oCrypt.HashAlgorithm = "sha256" $oCrypt.Charset = "utf-8" Local $sHexHash = $oCrypt.MacStringENC($oSbHmacData.GetAsString()) ConsoleWrite("hexHash = " & $sHexHash & @CRLF) ; Now base64 encode the hex string: $oSbBase64Hash = ObjCreate("Chilkat.StringBuilder") $oSbBase64Hash.Append($sHexHash) $oSbBase64Hash.Encode("base64","utf-8") ConsoleWrite("This is the Authorization header to be sent with the payeezy request:" & @CRLF) ConsoleWrite("Authorization: " & $oSbBase64Hash.GetAsString() & @CRLF) ; ----------------------------------------------------------- ; Now that we have the value for the Authorization header, send the POST containing the JSON. $oHttp = ObjCreate("Chilkat.Http") $oHttp.Accept = "*/*" $oHttp.UserAgent = "" $oHttp.SetRequestHeader "Authorization",$oSbBase64Hash.GetAsString() $oHttp.SetRequestHeader "apikey",$sApiKey $oHttp.SetRequestHeader "nonce",$sNonce $oHttp.SetRequestHeader "timestamp",$sTimestamp $oHttp.SetRequestHeader "token",$sToken $oHttp.SessionLogFilename = "qa_output/payeezy.txt" Local $sUrl = "https://api-cert.payeezy.com/v1/transactions" Local $oResp = $oHttp.PostJson2($sUrl,"application/json",$oJson.Emit()) If ($oHttp.LastMethodSuccess <> True) Then ConsoleWrite($oHttp.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("response status code = " & $oResp.StatusCode & @CRLF) $oJson.Load($oResp.BodyStr) ConsoleWrite($oJson.Emit() & @CRLF) ; Sample JSON response: ; { ; "correlation_id": "228.4604632998994", ; "transaction_status": "approved", ; "validation_status": "success", ; "transaction_type": "authorize", ; "transaction_id": "ET175628", ; "transaction_tag": "2313721985", ; "method": "credit_card", ; "amount": "1299", ; "currency": "USD", ; "cvv2": "M", ; "token": { ; "token_type": "FDToken", ; "token_data": { ; "value": "9732261336638291" ; } ; }, ; "card": { ; "type": "visa", ; "cardholder_name": "John Smith", ; "card_number": "8291", ; "exp_date": "1020" ; }, ; "bank_resp_code": "100", ; "bank_message": "Approved", ; "gateway_resp_code": "00", ; "gateway_message": "Transaction Normal" ; } ; ConsoleWrite($oJson.StringOf("correlation_id") & @CRLF) ConsoleWrite($oJson.StringOf("transaction_status") & @CRLF) ConsoleWrite($oJson.StringOf("validation_status") & @CRLF) ConsoleWrite($oJson.StringOf("transaction_type") & @CRLF) ConsoleWrite($oJson.StringOf("transaction_id") & @CRLF) ConsoleWrite($oJson.StringOf("transaction_tag") & @CRLF) ConsoleWrite($oJson.StringOf("method") & @CRLF) ConsoleWrite($oJson.StringOf("amount") & @CRLF) ConsoleWrite($oJson.StringOf("currency") & @CRLF) ConsoleWrite($oJson.StringOf("cvv2") & @CRLF) ConsoleWrite($oJson.StringOf("token.token_type") & @CRLF) ConsoleWrite($oJson.StringOf("token.token_data.value") & @CRLF) ConsoleWrite($oJson.StringOf("card.type") & @CRLF) ConsoleWrite($oJson.StringOf("card.cardholder_name") & @CRLF) ConsoleWrite($oJson.StringOf("card.card_number") & @CRLF) ConsoleWrite($oJson.StringOf("card.exp_date") & @CRLF) ConsoleWrite($oJson.StringOf("bank_resp_code") & @CRLF) ConsoleWrite($oJson.StringOf("bank_message") & @CRLF) ConsoleWrite($oJson.StringOf("gateway_resp_code") & @CRLF) ConsoleWrite($oJson.StringOf("gateway_message") & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.