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
(Perl) 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.
use chilkat(); # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $crypt = chilkat::CkCrypt2->new(); $prng = chilkat::CkPrng->new(); # An API key such as y6pWAJNyJyjGv66IsVuWnklkKUPFbb0a $apiKey = "my_api_key"; # An API secret such as 86fbae7030253af3cd15faef2a1f4b67353e41fb6799f576b5093ae52901e6f7 $apiSecret = "my_api_secret"; # A token such as fdoa-a480ce8951daa73262734cf102641994c1e55e7cdf4c02b6 $token = "my_merchant_token"; # The nonce is a random number (bytes), something like "6057786719490086000" $nonce = $prng->genRandom(8,"decimal"); print "nonce = " . $nonce . "\r\n"; $dtNow = chilkat::CkDateTime->new(); $dtNow->SetFromCurrentSystemTime(); $sbTimestamp = chilkat::CkStringBuilder->new(); # Get the epoch timestamp in seconds $sbTimestamp->Append($dtNow->getAsUnixTimeStr(0)); # Change it to milliseconds $sbTimestamp->Append("000"); # The timestamp is a number similar to this: 1546011905000 (which is a timestamp taken on 28-Dec-2018). $timestamp = $sbTimestamp->getAsString(); print "timestamp = " . $timestamp . "\r\n"; # 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" # } # } $json = chilkat::CkJsonObject->new(); $json->UpdateString("merchant_ref","Astonishing-Sale"); $json->UpdateString("transaction_type","authorize"); $json->UpdateString("method","credit_card"); $json->UpdateString("amount","1299"); $json->UpdateString("currency_code","USD"); $json->UpdateString("credit_card.type","visa"); $json->UpdateString("credit_card.cardholder_name","John Smith"); $json->UpdateString("credit_card.card_number","4788250000028291"); $json->UpdateString("credit_card.exp_date","1020"); $json->UpdateString("credit_card.cvv","123"); $json->put_EmitCompact(0); print $json->emit() . "\r\n"; # string hashData = apiKey + nonce + timestamp + token + jsonString; $sbHmacData = chilkat::CkStringBuilder->new(); $sbHmacData->Append($apiKey); $sbHmacData->Append($nonce); $sbHmacData->Append($timestamp); $sbHmacData->Append($token); $sbHmacData->Append($json->emit()); # HMAC the data to produce a hex string. $crypt->put_EncodingMode("hexlower"); $crypt->put_MacAlgorithm("hmac"); $crypt->SetMacKeyString($apiSecret); $crypt->put_HashAlgorithm("sha256"); $crypt->put_Charset("utf-8"); $hexHash = $crypt->macStringENC($sbHmacData->getAsString()); print "hexHash = " . $hexHash . "\r\n"; # Now base64 encode the hex string: $sbBase64Hash = chilkat::CkStringBuilder->new(); $sbBase64Hash->Append($hexHash); $sbBase64Hash->Encode("base64","utf-8"); print "This is the Authorization header to be sent with the payeezy request:" . "\r\n"; print "Authorization: " . $sbBase64Hash->getAsString() . "\r\n"; # ----------------------------------------------------------- # Now that we have the value for the Authorization header, send the POST containing the JSON. $http = chilkat::CkHttp->new(); $http->put_Accept("*/*"); $http->put_UserAgent(""); $http->SetRequestHeader("Authorization",$sbBase64Hash->getAsString()); $http->SetRequestHeader("apikey",$apiKey); $http->SetRequestHeader("nonce",$nonce); $http->SetRequestHeader("timestamp",$timestamp); $http->SetRequestHeader("token",$token); $http->put_SessionLogFilename("qa_output/payeezy.txt"); $url = "https://api-cert.payeezy.com/v1/transactions"; # resp is a HttpResponse $resp = $http->PostJson2($url,"application/json",$json->emit()); if ($http->get_LastMethodSuccess() != 1) { print $http->lastErrorText() . "\r\n"; exit; } print "response status code = " . $resp->get_StatusCode() . "\r\n"; $json->Load($resp->bodyStr()); print $json->emit() . "\r\n"; # 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" # } # print $json->stringOf("correlation_id") . "\r\n"; print $json->stringOf("transaction_status") . "\r\n"; print $json->stringOf("validation_status") . "\r\n"; print $json->stringOf("transaction_type") . "\r\n"; print $json->stringOf("transaction_id") . "\r\n"; print $json->stringOf("transaction_tag") . "\r\n"; print $json->stringOf("method") . "\r\n"; print $json->stringOf("amount") . "\r\n"; print $json->stringOf("currency") . "\r\n"; print $json->stringOf("cvv2") . "\r\n"; print $json->stringOf("token.token_type") . "\r\n"; print $json->stringOf("token.token_data.value") . "\r\n"; print $json->stringOf("card.type") . "\r\n"; print $json->stringOf("card.cardholder_name") . "\r\n"; print $json->stringOf("card.card_number") . "\r\n"; print $json->stringOf("card.exp_date") . "\r\n"; print $json->stringOf("bank_resp_code") . "\r\n"; print $json->stringOf("bank_message") . "\r\n"; print $json->stringOf("gateway_resp_code") . "\r\n"; print $json->stringOf("gateway_message") . "\r\n"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.