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
(DataFlex) ShippingEasy.com Calculate Signature for API AuthenticationDemonstrates how to calculate the shippingeasy.com API signature for authenticating requests.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoSbStringToSign String sHttpVerb String sUriPath String sQueryParamsStr Handle hoJson Handle hoDt Boolean iBLocalTime String sUnixEpochTimestamp String sYour_api_key Integer iNumReplaced String sYour_api_secret Handle hoCrypt String sApi_signature Handle hoHttp Variant vQueryParams Handle hoQueryParams Variant vResp Handle hoResp String sTemp1 Integer iTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // // First, concatenate these into a plaintext string using the following order: // // Capitilized method of the request. E.g. "POST" // The URI path // The query parameters sorted alphabetically and concatenated together into a URL friendly format: param1=ABC¶m2=XYZ // The request body as a string if one exists // All parts are then concatenated together with an ampersand. The result resembles something like this: // // "POST&/partners/api/accounts&api_key=f9a7c8ebdfd34beaf260d9b0296c7059&api_timestamp=1401803554&{ ... request body ... }" Get Create (RefClass(cComChilkatStringBuilder)) To hoSbStringToSign If (Not(IsComObjectCreated(hoSbStringToSign))) Begin Send CreateComObject of hoSbStringToSign End Move "POST" To sHttpVerb Move "/partners/api/accounts" To sUriPath Move "api_key=YOUR_API_KEY&api_timestamp=UNIX_EPOCH_TIMESTAMP" To sQueryParamsStr // Build the following JSON that will be the body of the request: // { // "account": { // "first_name": "Coralie", // "last_name": "Waelchi", // "company_name": "Hegmann, Cremin and Bradtke", // "email": "se_greg_6d477b1e59e8ff24abadfb59d3a2de3e@shippingeasy.com", // "phone_number": "1-381-014-3358", // "address": "2476 Flo Inlet", // "address2": "", // "state": "SC", // "city": "North Dennis", // "postal_code": "29805", // "country": "USA", // "password": "abc123", // "subscription_plan_code": "starter" // } // } Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComUpdateString Of hoJson "account.first_name" "Coralie" To iSuccess Get ComUpdateString Of hoJson "account.last_name" "Waelchi" To iSuccess Get ComUpdateString Of hoJson "account.company_name" "Hegmann, Cremin and Bradtke" To iSuccess Get ComUpdateString Of hoJson "account.email" "se_greg_6d477b1e59e8ff24abadfb59d3a2de3e@shippingeasy.com" To iSuccess Get ComUpdateString Of hoJson "account.phone_number" "1-381-014-3358" To iSuccess Get ComUpdateString Of hoJson "account.address" "2476 Flo Inlet" To iSuccess Get ComUpdateString Of hoJson "account.address2" "" To iSuccess Get ComUpdateString Of hoJson "account.state" "SC" To iSuccess Get ComUpdateString Of hoJson "account.city" "North Dennis" To iSuccess Get ComUpdateString Of hoJson "account.postal_code" "29805" To iSuccess Get ComUpdateString Of hoJson "account.country" "USA" To iSuccess Get ComUpdateString Of hoJson "account.password" "abc123" To iSuccess Get ComUpdateString Of hoJson "account.subscription_plan_code" "starter" To iSuccess Set ComEmitCompact Of hoJson To False Get ComEmit Of hoJson To sTemp1 Showln sTemp1 // First, let's get the current date/time in the Unix Epoch Timestamp format (which is just an integer) Get Create (RefClass(cComCkDateTime)) To hoDt If (Not(IsComObjectCreated(hoDt))) Begin Send CreateComObject of hoDt End Get ComSetFromCurrentSystemTime Of hoDt To iSuccess // Get the UTC time. Move False To iBLocalTime Get ComGetAsUnixTimeStr Of hoDt iBLocalTime To sUnixEpochTimestamp // Build the string to sign: Get ComAppend Of hoSbStringToSign sHttpVerb To iSuccess Get ComAppend Of hoSbStringToSign "&" To iSuccess Get ComAppend Of hoSbStringToSign sUriPath To iSuccess Get ComAppend Of hoSbStringToSign "&" To iSuccess Get ComAppend Of hoSbStringToSign sQueryParamsStr To iSuccess Get ComAppend Of hoSbStringToSign "&" To iSuccess // Make sure to send the JSON body of a request in compact form.. Set ComEmitCompact Of hoJson To True Get ComEmit Of hoJson To sTemp1 Get ComAppend Of hoSbStringToSign sTemp1 To iSuccess // Use your API key here: Move "f9a7c8ebdfd34beaf260d9b0296c7059" To sYour_api_key Get ComReplace Of hoSbStringToSign "YOUR_API_KEY" sYour_api_key To iNumReplaced Get ComReplace Of hoSbStringToSign "UNIX_EPOCH_TIMESTAMP" sUnixEpochTimestamp To iNumReplaced // Do the HMAC-SHA256 with your API secret: Move "ea210785fa4656af03c2e4ffcc2e7b5fc19f1fba577d137905cc97e74e1df53d" To sYour_api_secret Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt If (Not(IsComObjectCreated(hoCrypt))) Begin Send CreateComObject of hoCrypt End Set ComMacAlgorithm Of hoCrypt To "hmac" Set ComEncodingMode Of hoCrypt To "hexlower" Get ComSetMacKeyString Of hoCrypt sYour_api_secret To iSuccess Set ComHashAlgorithm Of hoCrypt To "sha256" Get ComGetAsString Of hoSbStringToSign To sTemp1 Get ComMacStringENC Of hoCrypt sTemp1 To sApi_signature Showln "api_signature: " sApi_signature // -------------------------------------------------------------------- // Here's an example showing how to use the signature in a request: // Build a new string-to-sign and create a new api_signature for the actual request we'll be sending... Send ComClear To hoSbStringToSign Get ComAppend Of hoSbStringToSign "GET" To iSuccess Get ComAppend Of hoSbStringToSign "&" To iSuccess Get ComAppend Of hoSbStringToSign "/app.shippingeasy.com/api/orders" To iSuccess Get ComAppend Of hoSbStringToSign "&" To iSuccess Get ComAppend Of hoSbStringToSign sQueryParamsStr To iSuccess Get ComAppend Of hoSbStringToSign "&" To iSuccess // There is no body for a GET request. Get ComGetAsString Of hoSbStringToSign To sTemp1 Get ComMacStringENC Of hoCrypt sTemp1 To sApi_signature Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End Get Create (RefClass(cComChilkatJsonObject)) To hoQueryParams If (Not(IsComObjectCreated(hoQueryParams))) Begin Send CreateComObject of hoQueryParams End Get ComUpdateString Of hoQueryParams "api_signature" sApi_signature To iSuccess Get ComUpdateString Of hoQueryParams "api_timestamp" sUnixEpochTimestamp To iSuccess Get ComUpdateString Of hoQueryParams "api_key" sYour_api_key To iSuccess Get pvComObject of hoQueryParams to vQueryParams Get ComQuickRequestParams Of hoHttp "GET" "https://app.shippingeasy.com/api/orders" vQueryParams To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End Get ComStatusCode Of hoResp To iTemp1 Showln "response status code = " iTemp1 Showln "response body:" Get ComBodyStr Of hoResp To sTemp1 Showln sTemp1 Send Destroy of hoResp End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.