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 HMAC ComputationDemonstrates how to calculate the HMAC for a Payeezy REST request.
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": "token", # "amount": "200", # "currency_code": "USD", # "token": { # "token_type": "FDToken", # "token_data": { # "type": "visa", # "value": "2537446225198291", # "cardholder_name": "JohnSmith", # "exp_date": "1030", # "special_payment": "B" # } # } # } $json = chilkat::CkJsonObject->new(); $json->UpdateString("merchant_ref","Astonishing-Sale"); $json->UpdateString("transaction_type","authorize"); $json->UpdateString("method","token"); $json->UpdateString("amount","200"); $json->UpdateString("currency_code","USD"); $json->UpdateString("token.token_type","FDToken"); $json->UpdateString("token.token_data.type","visa"); $json->UpdateString("token.token_data.value","2537446225198291"); $json->UpdateString("token.token_data.cardholder_name","JohnSmith"); $json->UpdateString("token.token_data.exp_date","1030"); $json->UpdateString("token.token_data.special_payment","B"); # 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()); # 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"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.