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
(Visual FoxPro) Walmart Partner API Authentication (Generate a Signature for a Request)Demonstrates how to generate a signature for a Walmart Partner REST API call.
LOCAL lnSuccess LOCAL lcConsumerId LOCAL lcBaseUrl LOCAL lcPrivateEncodedStr LOCAL lcHttpMethod LOCAL loDt LOCAL lnBLocal LOCAL lnTimeStampVal LOCAL loSbStringToSign LOCAL loPrivKey LOCAL loRsa LOCAL lcSignatureString * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. lcConsumerId = "b68d2a72...." lcBaseUrl = "https://marketplace.walmartapis.com/v2/feeds" * This is your Base64 encoded private key lcPrivateEncodedStr = "MIICeAIBADANBgkqhkiG9w0BAQEFAA......" lcHttpMethod = "GET" * We need a timestamp in decimal string form representing the number of milliseconds since Jan 01 1970 UTC. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.CkDateTime') loDt = CreateObject('Chilkat.CkDateTime') * Set bLocal = 1 for a timestamp in the local timezone. Set bLocal = 0 for a UTC timestamp. lnBLocal = 0 * This gets the timestamp in seconds, not milliseconds. lnTimeStampVal = loDt.GetAsUnixTime(lnBLocal) * Build the string to sign. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbStringToSign = CreateObject('Chilkat.StringBuilder') loSbStringToSign.Append(lcConsumerId) loSbStringToSign.Append(CHR(10)) loSbStringToSign.Append(lcBaseUrl) loSbStringToSign.Append(CHR(10)) loSbStringToSign.Append(lcHttpMethod) loSbStringToSign.Append(CHR(10)) loSbStringToSign.AppendInt(lnTimeStampVal) * We add three zero's so that the timestamp value is in milliseconds. * We don't care about accuracy down to less than a second. * All the server cares about is that the request was signed at the current date/time * within some reasonable margin of error (to account for systems having clocks * that may be slightly different). loSbStringToSign.Append("000" + CHR(10)) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.PrivateKey') loPrivKey = CreateObject('Chilkat.PrivateKey') * Load the private key into a private key object. * Note: Technically the private key is not PEM because it lacks the header/footer strings * used for PEM. However, the LoadPem method will still accept it and load it correctly. lnSuccess = loPrivKey.LoadPem(lcPrivateEncodedStr) IF (lnSuccess <> 1) THEN ? loPrivKey.LastErrorText RELEASE loDt RELEASE loSbStringToSign RELEASE loPrivKey CANCEL ENDIF * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Rsa') loRsa = CreateObject('Chilkat.Rsa') lnSuccess = loRsa.ImportPrivateKeyObj(loPrivKey) IF (lnSuccess <> 1) THEN ? loRsa.LastErrorText RELEASE loDt RELEASE loSbStringToSign RELEASE loPrivKey RELEASE loRsa CANCEL ENDIF * We want a base64 signature string. loRsa.EncodingMode = "base64" lcSignatureString = loRsa.SignStringENC(loSbStringToSign.GetAsString(),"SHA256") IF (loRsa.LastMethodSuccess <> 1) THEN ? loRsa.LastErrorText RELEASE loDt RELEASE loSbStringToSign RELEASE loPrivKey RELEASE loRsa CANCEL ENDIF ? "Signature String: " + lcSignatureString RELEASE loDt RELEASE loSbStringToSign RELEASE loPrivKey RELEASE loRsa |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.