![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 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. Note: This example requires Chilkat v11.0.0 or greater.
LOCAL lnSuccess LOCAL lcConsumerId LOCAL lcBaseUrl LOCAL lcPrivateEncodedStr LOCAL lcHttpMethod LOCAL loDt LOCAL lnBLocal LOCAL lnTimeStampVal LOCAL loSbStringToSign LOCAL loPrivKey LOCAL loRsa LOCAL lcSignatureString lnSuccess = 0 * 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. 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. 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)) 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 = 0) THEN ? loPrivKey.LastErrorText RELEASE loDt RELEASE loSbStringToSign RELEASE loPrivKey CANCEL ENDIF loRsa = CreateObject('Chilkat.Rsa') lnSuccess = loRsa.UsePrivateKey(loPrivKey) IF (lnSuccess = 0) 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 = 0) 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-2025 Chilkat Software, Inc. All Rights Reserved.