fillup / walmart-partner-api-sdk-php

PHP client for Walmart Partner APIs
MIT License
37 stars 51 forks source link

walmart shipping api #32

Closed alies69 closed 7 years ago

alies69 commented 7 years ago

Hi, I am getting 400 error during the calling of shipping api. here my code. string ordernumber = "3577287596698"; string xml = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>"; xml = xml + ""; xml = xml + ""; xml = xml + ""; xml = xml + "4</ns3:lineNumber>"; xml = xml + ""; xml = xml + ""; xml = xml + "Shipped</ns3:status>"; xml = xml + ""; xml = xml + "Each</ns3:unitOfMeasurement>"; xml = xml + "1</ns3:amount>"; xml = xml + "</ns3:statusQuantity>"; xml = xml + ""; xml = xml + "2016-12-06T05:30:15.000Z</ns3:shipDateTime>"; xml = xml + ""; xml = xml + "UPS</ns3:carrier>"; xml = xml + "</ns3:carrierName>"; xml = xml + "Ground</ns3:methodCode>"; xml = xml + "9400110200828232124799</ns3:trackingNumber>"; xml = xml + "http://www.ups.com</ns3:trackingURL>"; xml = xml + "</ns3:trackingInfo>"; xml = xml + "</ns3:orderLineStatus>"; xml = xml + "</ns3:orderLineStatuses>"; xml = xml + "</ns3:orderLine>"; xml = xml + "</ns3:orderLines>"; xml = xml + "</ns3:orderShipment>";

        string reqUrl = "https://marketplace.walmartapis.com/v3/orders/" + ordernumber + "/shipping";
        string method = "POST";
        string ApiKey = "apikey";
        string ConsumerId = "consumerId";
        string WM_CONSUMERCHANNELTYPE = "0f3e4dd4-0514-4346-b39d-af0e00ea066d";

        Signature sig = new Signature(ConsumerId, ApiKey, reqUrl, method);
        string timeStamp = Signature.GetTimestampInJavaMillis();
        string sigStr = sig.GetSignature(timeStamp.ToString());

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(reqUrl);
        req.ContentType = "application/xml";
        req.Accept = "application/xml";

        byte[] bytes= Encoding.UTF8.GetBytes(xml);

        req.ContentLength = bytes.Length;
        req.Method = method;
        req.Headers.Add("WM_SVC.NAME", "Walmart Marketplace");
        req.Headers.Add("WM_SEC.AUTH_SIGNATURE", sigStr);
        req.Headers.Add("WM_CONSUMER.ID", ConsumerId);
        req.Headers.Add("WM_SEC.TIMESTAMP", timeStamp.ToString());
        req.Headers.Add("WM_QOS.CORRELATION_ID", "123456abcdef");
        req.Headers.Add("WM_CONSUMER.CHANNEL.TYPE", WM_CONSUMERCHANNELTYPE);
        req.GetRequestStream().Write(bytes, 0, bytes.Length);
        HttpWebResponse response = (HttpWebResponse)req.GetResponse(); // error line
        if (response.StatusCode == HttpStatusCode.OK)
        {
            Stream responseStream = response.GetResponseStream();
            string responseStr = new StreamReader(responseStream).ReadToEnd();

        }
fillup commented 7 years ago

Not sure if you have a copy/paste error, but lots of your xml above is missing the actual xml tags. Have you tried using this SDK rather than manually making the api calls?

fillup commented 7 years ago

Closing this old ticket. Let me know if you've switched to using this SDK and are still having problems.