沃尔玛修改促销价格

发布时间 2023-11-15 16:56:22作者: 天心PHP

文档地址:Promotion - US - API Reference - Walmart Developer Portal

1.单个调价接口 Update a promotional price

us和mx 接口地址:https://marketplace.walmartapis.com/v3/price?promo=true

ca接口地址:https://marketplace.walmartapis.com/v3/ca/price?promo=true

"priceDisplayCodes": "CART" 这个参数不能要  不然页面变成了  see price in cart

processMode = DELETE  删除活动 必须是当前活动的原始开始和结束时间

replaceAll 不填 可以吧非促销活动变成促销活动, replaceAll="true" 可以删除当前促销活动,重新设置促销活动

促销价格最好设置为 90%  如果设置少一分 两分的 不会成功  促销价格必须小于对比价格

//currency货币类型  $currencyarr = ['us'=>'USD','mx'=>'MXN','ca'=>'CAD'];

$walmartPostService = new WalmartListingData(30);
$effective_date = date('Y-m-d H:i:s', (strtotime(date('Y-m-d H:i:s')) - (3600*8)+300));//减去时差8个小时,也就是开始时间为当前时间+5分钟
$expiration_date = date('Y-m-d H:i:s', (strtotime('2023-11-20 08:00:00') - (3600*8)));//结束时间
$data = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Price xmlns="http://walmart.com/">
    <itemIdentifier>
        <sku>Bling-WFS-3904-003009-12U0D</sku>
    </itemIdentifier>
    <pricingList replaceAll="true">
        <pricing effectiveDate="'.date('Y-m-d\TH:i:s.000\Z', strtotime($effective_date)).'" expirationDate="'.date('Y-m-d\TH:i:s.000\Z', strtotime($expiration_date)).'" processMode="UPSERT">
            <currentPrice>
                <value currency="USD" amount="21.58"/>
            </currentPrice>
            <currentPriceType>REDUCED</currentPriceType>
            <comparisonPrice>
                <value currency="USD" amount="23.99"/>
            </comparisonPrice>
        </pricing>
    </pricingList>
</Price>';
$res = $walmartPostService->updateproprice($data);//返回为xml类型
//xml转换为数组
$preg = "/(<|<\/)(?:\w+:)/is";
$newXmlStr = preg_replace($preg,"\\1",$res[1]);
$xmlstring = simplexml_load_string($newXmlStr);
$res[1] = json_decode(json_encode($xmlstring),true);


/**
 * 单个促销调价(new)
 */
public function updatepropricenew($data){
    $accountInfo = array();
    $url = 'https://marketplace.walmartapis.com/v3/price?promo=true';
    $extra = [
        "Accept"=>"application/xml",
        "Content-Type"=>"application/xml",
    ];
    if($this->site=='ca'){
        $url = 'https://marketplace.walmartapis.com/v3/ca/price?promo=true';
    }
    $headers = $this->getHeaders($url, 'PUT', $accountInfo, $extra);
    $result = $this->cur_request($url,'PUT',$data,$headers);
    return $result;
}

public function cur_request($URL, $type, $params, $headers)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $URL);
    if ($headers != "") {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    } else {
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded'));
    }
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch,CURLOPT_ENCODING,""); // 返回数据支持所有编码,不乱码 ;如果为空字符串"",会发送所有支持的编码类型。
    switch ($type) {
        case "GET" :
            curl_setopt($ch, CURLOPT_HTTPGET, true);
            break;
        case "POST":
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            break;
        case "PUT" :
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            break;
        case "PATCH":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            break;
        case "DELETE":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            break;
    }
    $file_contents = curl_exec($ch);//获得返回值
    $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return [$responseCode, $file_contents];
}