Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicCkPythonChilkat2-PythonRubySQL ServerSwift 2Swift 3/4TclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcelGo

Ruby Web API Examples

Primary Categories

Facebook
GeoOp
Jira
PayPal
Peoplevox
QuickBooks

Shopify
Stripe
SugarCRM
Twitter
VoiceBase
Walmart
Xero
eBay
effectconnect

 

 

 

(Ruby) Walmart - Send Shipping Notification

See Shipping notifications/updates for more information about this call.

Note: This example requires Chilkat v9.5.0.67 or greater.

Chilkat Ruby Downloads

Ruby Library for Linux and MAC OS X

require 'chilkat'

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# Sends the following POST request:
# POST https://marketplace.walmartapis.com/v3/orders/{purchaseOrderId}/shipping

sbUrl = Chilkat::CkStringBuilder.new()
success = sbUrl.Append("https://marketplace.walmartapis.com/v3/orders/{purchaseOrderId}/shipping")
numReplaced = sbUrl.Replace("{purchaseOrderId}","1111691995111")

requestMethod = "POST"

# First we need to generate a signature for our request.
# The signature needs to be re-generated for each new Walmart HTTP request.
authUtil = Chilkat::CkAuthUtil.new()

wmConsumerId = "WALMART_CONSUMER_ID"
wmPrivateKey = "WALMART_PRIVATE_KEY"
jsonStr = authUtil.walmartSignature(sbUrl.getAsString(),wmConsumerId,wmPrivateKey,requestMethod)
if (authUtil.get_LastMethodSuccess() != true)
    print authUtil.lastErrorText() + "\n";
    exit
end

# The JSON returned by WalmartSignature contains the values to be used in the following
# header fields: WM_SEC.AUTH_SIGNATURE, WM_SEC.TIMESTAMP, and WM_QOS.CORRELATION_ID
json = Chilkat::CkJsonObject.new()
json.Load(jsonStr)

http = Chilkat::CkHttp.new()
http.SetRequestHeader("WM_SVC.NAME","Walmart Marketplace")
http.SetRequestHeader("WM_QOS.CORRELATION_ID",json.stringOf("correlation_id"))
http.SetRequestHeader("WM_SEC.TIMESTAMP",json.stringOf("timestamp"))
http.SetRequestHeader("WM_SEC.AUTH_SIGNATURE",json.stringOf("signature"))
http.SetRequestHeader("WM_CONSUMER.ID",wmConsumerId)
http.SetRequestHeader("WM_CONSUMER.CHANNEL.TYPE","WALMART_CHANNEL_TYPE")
http.put_Accept("application/xml")

# Note: Do not explicitly set the "Host" header.  Chilkat will set it automatically.

# The body of the POST request will be XML that looks something like this:

# 	<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
# 	<ns2:orderShipment
# 	    xmlns:ns2="http://walmart.com/mp/v3/orders"
# 	    xmlns:ns3="http://walmart.com/">
# 	    <ns2:orderLines>
# 	        <ns2:orderLine>
# 	            <ns2:lineNumber>2</ns2:lineNumber>
# 	            <ns2:orderLineStatuses>
# 	                <ns2:orderLineStatus>
# 	                    <ns2:status>Shipped</ns2:status>
# 	                    <ns2:statusQuantity>
# 	                        <ns2:unitOfMeasurement>Each</ns2:unitOfMeasurement>
# 	                        <ns2:amount>1</ns2:amount>
# 	                    </ns2:statusQuantity>
# 	                    <ns2:trackingInfo>
# 	                        <ns2:shipDateTime>2016-06-27T05:30:15.000Z</ns2:shipDateTime>
# 	                        <ns2:carrierName>
# 	                            <ns2:carrier>FedEx</ns2:carrier>
# 	                        </ns2:carrierName>
# 	                        <ns2:methodCode>Standard</ns2:methodCode>
# 	                        <ns2:trackingNumber>12333634122</ns2:trackingNumber>
# 	                    </ns2:trackingInfo>
# 	                </ns2:orderLineStatus>
# 	            </ns2:orderLineStatuses>
# 	        </ns2:orderLine>
# 	    </ns2:orderLines>
# 	</ns2:orderShipment>

# Build the XML request body:
lineNumber = 1
shippingStatus = "Shipped"
quantity = 1
carrier = "USPS"
shippingMethod = "Standard"
trackingNumber = "9999869903501929298999"

dtNow = Chilkat::CkDateTime.new()
dtNow.SetFromCurrentSystemTime()
shipDateTime = dtNow.getAsTimestamp(false)

xmlBody = Chilkat::CkXml.new()
xmlBody.put_Tag("ns2:orderShipment")
xmlBody.AddAttribute("xmlns:ns2","http://walmart.com/mp/v3/orders")
xmlBody.AddAttribute("xmlns:ns3","http://walmart.com/")
xmlBody.UpdateChildContentInt("ns2:orderLines|ns2:orderLine|ns2:lineNumber",lineNumber)

# orderLine is a CkXml
orderLine = xmlBody.GetChildWithTag("ns2:orderLines|ns2:orderLine")
orderLine.UpdateChildContent("ns2:orderLineStatuses|ns2:orderLineStatus|ns2:status",shippingStatus)

# orderLineStatus is a CkXml
orderLineStatus = orderLine.GetChildWithTag("ns2:orderLineStatuses|ns2:orderLineStatus")
orderLineStatus.UpdateChildContent("ns2:statusQuantity|ns2:unitOfMeasurement","Each")
orderLineStatus.UpdateChildContentInt("ns2:statusQuantity|ns2:amount",quantity)
orderLineStatus.UpdateChildContent("ns2:trackingInfo|ns2:shipDateTime",shipDateTime)
orderLineStatus.UpdateChildContent("ns2:trackingInfo|ns2:carrierName|ns2:carrier",carrier)
orderLineStatus.UpdateChildContent("ns2:trackingInfo|ns2:methodCode",shippingMethod)
orderLineStatus.UpdateChildContent("ns2:trackingInfo|ns2:trackingNumber",trackingNumber)

print "POST request body:" + "\n";
print xmlBody.getXml() + "\n";
print "--" + "\n";

# This is a simple POST that can be sent w/ the PostXml method.
# Explicitly set the Content-Type header, otherwise "text/xml" will be used.
http.SetRequestHeader("Content-Type","application/xml")
# resp is a CkHttpResponse
resp = http.PostXml(sbUrl.getAsString(),xmlBody.getXml(),"utf-8")
if (http.get_LastMethodSuccess() != true)
    print http.lastErrorText() + "\n";
    exit
end

xml = Chilkat::CkXml.new()
xml.LoadXml(resp.bodyStr())

# A successful response should have a 200 response status
if (resp.get_StatusCode() != 200)
    print xml.getXml() + "\n";
    print "Response Status Code: " + resp.get_StatusCode().to_s() + "\n";
    print "Failed." + "\n";

    exit
end

# Show the XML response..
print xml.getXml() + "\n";
print "--" + "\n";
print "Success!" + "\n";

 

© 2000-2019 Chilkat Software, Inc. All Rights Reserved.