【发布时间】:2016-01-21 09:00:26
【问题描述】:
大家。
对 ebay 交易 api 有疑问。
我正在尝试获取授权用户的所有订单。 我正在使用 PHP 开发我的 Web 应用程序。
所以,我使用这个 sdk: https://github.com/davidtsadler/ebay-sdk-php
我正在使用 getOrders 方法获取列表:
http://developer.ebay.com/devzone/xml/docs/Reference/ebay/GetOrders.html
这是我的代码示例:
public function getOrders(){
$service = $this->getTradingService();
$args = array(
//"OrderStatus" => "Completed",
"OrderStatus" => "All",
"SortingOrder" => "Ascending",
"OrderRole" => "Seller",
//"CreateTimeFrom" => new \DateTime('2015-01-01'),
"CreateTimeFrom" => new \DateTime('2000-01-01'),
"CreateTimeTo" => new \DateTime(),
);
$request = new Types\GetOrdersRequestType($args);
$request->RequesterCredentials = new Types\CustomSecurityHeaderType();
$request->RequesterCredentials->eBayAuthToken = $this->userToken;
$request->IncludeFinalValueFee = true;
$request->Pagination = new Types\PaginationType();
$request->Pagination->EntriesPerPage = 100;
$pageNum = 1;
$orders = [];
do {
$request->Pagination->PageNumber = $pageNum;
$response = $service->getOrders($request);
if (isset($response->Errors)) {
$message = '';
foreach ($response->Errors as $error) {
$message .= $error->ShortMessage;
}
throw new Exception($message);
}
if ($response->Ack !== 'Failure' && isset($response->OrderArray)) {
foreach ($response->OrderArray->Order as $order) {
$orders[] = $order->toArray();
}
}
$pageNum += 1;
}
while(isset($response->OrderArray) && $pageNum <= $response->PaginationResult->TotalNumberOfPages);
return $orders;
}
它对我来说很好,除了一个问题。 我无法收到买家电子邮件。
$orders[0]['ShippingAddress']['ExternalAddressID']
是空的。
$orders[0]['TransactionArray']['Transaction'][0]['Buyer']['Email']
是字符串值“无效请求”
如果有人知道如何获取买家电子邮件。
或者只是在一个请求中获取有关许多用户的信息(这样我就可以简单地合并它们)。
更新:
也尝试在没有 SDK 的情况下做同样的事情。
public function getOrders2(){
$xml = '<?xml version="1.0" encoding="utf-8"?>
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<CreateTimeFrom>2000-01-01T00:00:00</CreateTimeFrom>
<CreateTimeTo>2015-10-22T00:00:00</CreateTimeTo>
<IncludeFinalValueFee>true</IncludeFinalValueFee>
<OrderRole>Seller</OrderRole>
<OrderStatus>All</OrderStatus>
<DetailLevel>ReturnAll</DetailLevel>
<RequesterCredentials>
<eBayAuthToken>' . $this->userToken . '</eBayAuthToken>
</RequesterCredentials>
</GetOrdersRequest>';
$url = 'https://api.ebay.com/ws/api.dll';
$results = $this->sendPostRequest($xml,$url);
$results = new SimpleXMLElement($results);
return $results;
}
遇到同样的问题。
谢谢
【问题讨论】:
-
试过GetUser Api方法,也收不到邮件。改为获取无效的请求字符串
-
大约 5% 的时间我也会收到一个空的电子邮件字段。如果您这样做是为了联系买家,一种解决方法是使用 AddMemberMessageAAQToPartner 调用
-
我收到任何订单的空电子邮件。但订单大约在 1 年前完成。
-
也许是因为这个。我只需要将订单导入我的 crm 系统,并且那里的电子邮件是必填字段。
-
如果您需要某种电子邮件标识符,您可能需要使用 StaticAlias,它采用电子邮件地址的形式,例如
@members.ebay.com。