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
(Tcl) 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.
load ./chilkat.dll # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. set crypt [new_CkCrypt2] set prng [new_CkPrng] # An API key such as y6pWAJNyJyjGv66IsVuWnklkKUPFbb0a set apiKey "my_api_key" # An API secret such as 86fbae7030253af3cd15faef2a1f4b67353e41fb6799f576b5093ae52901e6f7 set apiSecret "my_api_secret" # A token such as fdoa-a480ce8951daa73262734cf102641994c1e55e7cdf4c02b6 set token "my_merchant_token" # The nonce is a random number (bytes), something like "6057786719490086000" set nonce [CkPrng_genRandom $prng 8 "decimal"] puts "nonce = $nonce" set dtNow [new_CkDateTime] CkDateTime_SetFromCurrentSystemTime $dtNow set sbTimestamp [new_CkStringBuilder] # Get the epoch timestamp in seconds CkStringBuilder_Append $sbTimestamp [CkDateTime_getAsUnixTimeStr $dtNow 0] # Change it to milliseconds CkStringBuilder_Append $sbTimestamp "000" # The timestamp is a number similar to this: 1546011905000 (which is a timestamp taken on 28-Dec-2018). set timestamp [CkStringBuilder_getAsString $sbTimestamp] puts "timestamp = $timestamp" # 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" # } # } set json [new_CkJsonObject] CkJsonObject_UpdateString $json "merchant_ref" "Astonishing-Sale" CkJsonObject_UpdateString $json "transaction_type" "authorize" CkJsonObject_UpdateString $json "method" "credit_card" CkJsonObject_UpdateString $json "amount" "1299" CkJsonObject_UpdateString $json "currency_code" "USD" CkJsonObject_UpdateString $json "credit_card.type" "visa" CkJsonObject_UpdateString $json "credit_card.cardholder_name" "John Smith" CkJsonObject_UpdateString $json "credit_card.card_number" "4788250000028291" CkJsonObject_UpdateString $json "credit_card.exp_date" "1020" CkJsonObject_UpdateString $json "credit_card.cvv" "123" CkJsonObject_put_EmitCompact $json 0 puts [CkJsonObject_emit $json] # string hashData = apiKey + nonce + timestamp + token + jsonString; set sbHmacData [new_CkStringBuilder] CkStringBuilder_Append $sbHmacData $apiKey CkStringBuilder_Append $sbHmacData $nonce CkStringBuilder_Append $sbHmacData $timestamp CkStringBuilder_Append $sbHmacData $token CkStringBuilder_Append $sbHmacData [CkJsonObject_emit $json] # HMAC the data to produce a hex string. CkCrypt2_put_EncodingMode $crypt "hexlower" CkCrypt2_put_MacAlgorithm $crypt "hmac" CkCrypt2_SetMacKeyString $crypt $apiSecret CkCrypt2_put_HashAlgorithm $crypt "sha256" CkCrypt2_put_Charset $crypt "utf-8" set hexHash [CkCrypt2_macStringENC $crypt [CkStringBuilder_getAsString $sbHmacData]] puts "hexHash = $hexHash" # Now base64 encode the hex string: set sbBase64Hash [new_CkStringBuilder] CkStringBuilder_Append $sbBase64Hash $hexHash CkStringBuilder_Encode $sbBase64Hash "base64" "utf-8" puts "This is the Authorization header to be sent with the payeezy request:" puts "Authorization: [CkStringBuilder_getAsString $sbBase64Hash]" # ----------------------------------------------------------- # Now that we have the value for the Authorization header, send the POST containing the JSON. set http [new_CkHttp] CkHttp_put_Accept $http "*/*" CkHttp_put_UserAgent $http "" CkHttp_SetRequestHeader $http "Authorization" [CkStringBuilder_getAsString $sbBase64Hash] CkHttp_SetRequestHeader $http "apikey" $apiKey CkHttp_SetRequestHeader $http "nonce" $nonce CkHttp_SetRequestHeader $http "timestamp" $timestamp CkHttp_SetRequestHeader $http "token" $token CkHttp_put_SessionLogFilename $http "qa_output/payeezy.txt" set url "https://api-cert.payeezy.com/v1/transactions" # resp is a CkHttpResponse set resp [CkHttp_PostJson2 $http $url "application/json" [CkJsonObject_emit $json]] if {[CkHttp_get_LastMethodSuccess $http] != 1} then { puts [CkHttp_lastErrorText $http] delete_CkCrypt2 $crypt delete_CkPrng $prng delete_CkDateTime $dtNow delete_CkStringBuilder $sbTimestamp delete_CkJsonObject $json delete_CkStringBuilder $sbHmacData delete_CkStringBuilder $sbBase64Hash delete_CkHttp $http exit } puts "response status code = [CkHttpResponse_get_StatusCode $resp]" CkJsonObject_Load $json [CkHttpResponse_bodyStr $resp] puts [CkJsonObject_emit $json] delete_CkHttpResponse $resp # 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" # } # puts [CkJsonObject_stringOf $json correlation_id] puts [CkJsonObject_stringOf $json transaction_status] puts [CkJsonObject_stringOf $json validation_status] puts [CkJsonObject_stringOf $json transaction_type] puts [CkJsonObject_stringOf $json transaction_id] puts [CkJsonObject_stringOf $json transaction_tag] puts [CkJsonObject_stringOf $json method] puts [CkJsonObject_stringOf $json amount] puts [CkJsonObject_stringOf $json currency] puts [CkJsonObject_stringOf $json cvv2] puts [CkJsonObject_stringOf $json token.token_type] puts [CkJsonObject_stringOf $json token.token_data.value] puts [CkJsonObject_stringOf $json card.type] puts [CkJsonObject_stringOf $json card.cardholder_name] puts [CkJsonObject_stringOf $json card.card_number] puts [CkJsonObject_stringOf $json card.exp_date] puts [CkJsonObject_stringOf $json bank_resp_code] puts [CkJsonObject_stringOf $json bank_message] puts [CkJsonObject_stringOf $json gateway_resp_code] puts [CkJsonObject_stringOf $json gateway_message] delete_CkCrypt2 $crypt delete_CkPrng $prng delete_CkDateTime $dtNow delete_CkStringBuilder $sbTimestamp delete_CkJsonObject $json delete_CkStringBuilder $sbHmacData delete_CkStringBuilder $sbBase64Hash delete_CkHttp $http |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.