Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用易趣API更改产品数量_Php_Xml_Ebay Api - Fatal编程技术网

Php 如何使用易趣API更改产品数量

Php 如何使用易趣API更改产品数量,php,xml,ebay-api,Php,Xml,Ebay Api,我想做一件简单的事我想使用PHP更改易趣上现有固定价格商品的数量。这可能吗?我以前问过这个问题,得到的回答告诉我读这个或那个。但我找不到任何实际的代码示例。我很想看到有人贴一张。例如,易趣商品编号123456789的数量为50。我想运行一些PHP代码将其更改为数量20。我想在代码中输入物品编号、新数量以及所需的任何易趣验证数据并运行它。这就是我所需要的。试试这个,它适合我 $feed = <<< EOD <?xml version="1.0" encoding="utf-

我想做一件简单的事我想使用PHP更改易趣上现有固定价格商品的数量。这可能吗?我以前问过这个问题,得到的回答告诉我读这个或那个。但我找不到任何实际的代码示例。我很想看到有人贴一张。例如,易趣商品编号123456789的数量为50。我想运行一些PHP代码将其更改为数量20。我想在代码中输入物品编号、新数量以及所需的任何易趣验证数据并运行它。这就是我所需要的。

试试这个,它适合我

$feed = <<< EOD
<?xml version="1.0" encoding="utf-8"?>
<ReviseItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>$eBay->auth_token</eBayAuthToken>
</RequesterCredentials>
<Item ComplexType="ItemType">
<ItemID>$itemid</ItemID>
<Quantity> int </Quantity>
</Item>
<MessageID>1</MessageID>
<WarningLevel>High</WarningLevel>
<Version>$eBay->api_version</Version>
</ReviseItemRequest>​
EOD;

$feed = trim($feed);
        $site_id = 3;//3 For UK
        $headers = array
            (
            'X-EBAY-API-COMPATIBILITY-LEVEL: ' . $this->api_version,
            'X-EBAY-API-DEV-NAME: ' . $this->dev_id,
            'X-EBAY-API-APP-NAME: ' . $this->app_id,
            'X-EBAY-API-CERT-NAME: ' . $this->cert_id,
            'X-EBAY-API-CALL-NAME: ' . $call_name,
            'X-EBAY-API-SITEID: ' . $site_id,
        );

        // Send request to eBay and load response in $response
        $connection = curl_init();
        curl_setopt($connection, CURLOPT_URL, $this->api_endpoint);
        curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($connection, CURLOPT_POST, 1);
        curl_setopt($connection, CURLOPT_POSTFIELDS, $feed);
        curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
        $response = curl_exec($connection);
        curl_close($connection);
$feed=api\u版本
​
排爆药;
$feed=修剪($feed);
$site_id=3//3英国
$headers=数组
(
“X-EBAY-API-COMPATIBILITY-LEVEL:”。$this->API_版本,
“X-EBAY-API-DEV-NAME:”。$this->DEV_id,
“X-EBAY-API-APP-NAME:”。$this->APP\u id,
“X-EBAY-API-CERT-NAME:”。$this->CERT\u id,
“X-EBAY-API-CALL-NAME:”.$CALL\u NAME,
“X-EBAY-API-SITEID:”。$site\u id,
);
//将请求发送到易趣并在$response中加载响应
$connection=curl_init();
curl\u setopt($connection,CURLOPT\u URL,$this->api\u endpoint);
curl_setopt($connection,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($connection,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($connection,CURLOPT_HTTPHEADER,$headers);
curl_setopt($connection,CURLOPT_POST,1);
curl_setopt($connection,CURLOPT_POSTFIELDS,$feed);
curl_setopt($connection,CURLOPT_RETURNTRANSFER,1);
$response=curl\u exec($connection);
旋涡关闭($连接);

在易趣上,有三个选项可用于更新实时物品

为了快速更新项目的数量,您可能需要使用ReviseInventoryStatus,因为它比其他方法有一些优势

  • 项目可以在一次呼叫中更新
  • 更新数量的确认为
如果您同意在PHP项目中使用Composer,我已经开发了一个简化易趣API使用的工具。下面的示例显示了如何使用具有ReviseInventoryStatus的SDK。代码中的注释应该告诉您需要更改什么才能使其工作

<?php
require 'vendor/autoload.php';

use \DTS\eBaySDK\Constants;
use \DTS\eBaySDK\Trading\Services;
use \DTS\eBaySDK\Trading\Types;
use \DTS\eBaySDK\Trading\Enums;

// Your authorization token associated with the seller's account.
$authToken = 'abcd123';
// The ID of the item you wish to update (Must be a string).
$itemID = '123456789';
// The new quantity (Must be an integer and not a string!).
$quantity = 20;
// The numerical ID of the site that the item was listed on. For example the site ID for ebay.com is 0 and for ebay.co.uk it is 3. A complete list is available from eBay: http://developer.ebay.com/DevZone/XML/docs/Reference/ebay/types/SiteCodeType.html.
$siteID = '0';

$service = new Services\TradingService(array(
    'authToken' => $authToken,
    'apiVersion' => '899',
    'siteId' => $siteID
));

$request = new Types\ReviseInventoryStatusRequestType();
$inventoryStatus = new Types\InventoryStatusType();
$inventoryStatus->ItemID = $itemID;
$inventoryStatus->Quantity = $quantity;
$request->InventoryStatus[] = $inventoryStatus;
$request->ErrorLanguage = 'en_US';
$request->WarningLevel = 'High';

$response = $service->reviseInventoryStatus($request);

if (isset($response->Errors)) {
    foreach ($response->Errors as $error) {
        printf("%s: %s\n%s\n\n",
            $error->SeverityCode === Enums\SeverityCodeType::C_ERROR ? 'Error' : 'Warning',
            $error->ShortMessage,
            $error->LongMessage
        );
    }
}

if ($response->Ack !== 'Failure') {
    foreach ($response->InventoryStatus as $inventoryStatus) {
        printf("Quantity for [%s] is %s\n\n",
            $inventoryStatus->ItemID,
            $inventoryStatus->Quantity
        );
    }
}

这里是一个准备测试的示例,只需替换项目id和数量即可

此php代码是通过单击“检索php代码”按钮生成的。php的SDK也可以在那里下载

require_once 'EbatNs_Session.php';
require_once 'EbatNs_Logger.php';
require_once 'EbatNs_ServiceProxy.php';
require_once 'EbatNs_Session.php';
require_once 'EbatNs_DataConverter.php';

$session = new EbatNs_Session();
$session->setSiteId(0);
$session->setUseHttpCompression(1);
$session->setAppMode(0);
$session->setDevId(YOUR_DEV_ID_HERE);
$session->setAppId(YOUR_APP_ID_HERE);
$session->setCertId(YOUR_CERT_ID_HERE);
$session->setRequestToken(YOUR_TOKEN_HERE);
$session->setTokenUsePickupFile(false);
$session->setTokenMode(true);

require_once 'EbatNs_ServiceProxy.php';
$proxy = new EbatNs_ServiceProxy($session, 'EbatNs_DataConverterUtf8');

require_once 'ReviseInventoryStatusRequestType.php';
$reviseinventorystatusrequest = new ReviseInventoryStatusRequestType();
$inventorystatus = new InventoryStatusType();
$reviseinventorystatusrequest->addInventoryStatus($inventorystatus);
$inventorystatus->setItemID("YOUR ITEM ID");
$inventorystatus->setQuantity("YOUR QUANTITY");
$reviseinventorystatusrequest->setErrorLanguage("en_US");
$reviseinventorystatusrequest->setVersion("899");
$reviseinventorystatusrequest->setWarningLevel("High");

$response = $proxy->ReviseInventoryStatus($reviseinventorystatusrequest);

您是否正在将易趣数据拉入自己的网站?您正在尝试完成的内容和您已经设置的内容有点模糊。请阅读易趣的API-我没有任何设置。我对ebay API完全陌生,这有点让我不知所措。不过我对php很在行。我只是想知道我所问的是否可行,如果可能的话,我希望看到一些代码来实现它。你能用PHP对易趣物品进行修改吗?请不要使用capslock。我认为这段原始代码是最好的,因为你不需要学习其他ppl类,比如David t Example如何获取物品的HTML描述?这是一个实时列表,我有它的id。
require_once 'EbatNs_Session.php';
require_once 'EbatNs_Logger.php';
require_once 'EbatNs_ServiceProxy.php';
require_once 'EbatNs_Session.php';
require_once 'EbatNs_DataConverter.php';

$session = new EbatNs_Session();
$session->setSiteId(0);
$session->setUseHttpCompression(1);
$session->setAppMode(0);
$session->setDevId(YOUR_DEV_ID_HERE);
$session->setAppId(YOUR_APP_ID_HERE);
$session->setCertId(YOUR_CERT_ID_HERE);
$session->setRequestToken(YOUR_TOKEN_HERE);
$session->setTokenUsePickupFile(false);
$session->setTokenMode(true);

require_once 'EbatNs_ServiceProxy.php';
$proxy = new EbatNs_ServiceProxy($session, 'EbatNs_DataConverterUtf8');

require_once 'ReviseInventoryStatusRequestType.php';
$reviseinventorystatusrequest = new ReviseInventoryStatusRequestType();
$inventorystatus = new InventoryStatusType();
$reviseinventorystatusrequest->addInventoryStatus($inventorystatus);
$inventorystatus->setItemID("YOUR ITEM ID");
$inventorystatus->setQuantity("YOUR QUANTITY");
$reviseinventorystatusrequest->setErrorLanguage("en_US");
$reviseinventorystatusrequest->setVersion("899");
$reviseinventorystatusrequest->setWarningLevel("High");

$response = $proxy->ReviseInventoryStatus($reviseinventorystatusrequest);