Полное раскрытие: Я разработчик службы уведомлений в eBay SDK
eBay является не то, что официально поддерживается SDK, как это область из API, что я не знаком, но я постараюсь ответить на ваш вопрос как можно лучше.
Как я понимаю, в уведомлениях платформы eBay есть две части.
- Вы сообщаете eBay, которые пользователь уведомления вас интересует.
- платформы eBay по Уведомления затем асинхронно раздвигает уведомлений на месте доставки (который обычно является URL под доменом, который вы контролируете.)
Первая часть должна быть возможна с SDK, поскольку она просто включает отправку запроса на операцию SetNotificationPreferences. Похоже, вы уже разработали, как сделать эту часть, но я привел приведенный ниже пример только вовремя, чтобы это помогло. Я не пробовал код ниже, но он должен дать вам некоторое представление о том, что делать.
use \DTS\eBaySDK\Trading\Services;
use \DTS\eBaySDK\Trading\Types;
/**
* Fill out $request according to your project needs.
*/
$request = new Types\SetNotificationPreferencesRequest();
$request->UserDeliveryPreferenceArray = new Types\NotificationEnableArrayType();
$notification = new Types\NotificationEnableType();
$notification->EventEnable = 'Enable';
$notification->EventType = 'FixedPriceTransaction';
$request->UserDeliveryPreferenceArray->NotificationEnable[] = $notification;
/**
* Handle response according to your project needs.
*/
$response = $service->SetNotificationPreferences($request);
if ($response->Ack !== 'Failure') {
}
Вторая часть может быть возможна с помощью SDK, но это одна из областей, с которой у меня нет опыта. Насколько я понимаю, eBay отправит HTTP-запрос POST на URL-адрес, который вы контролируете. Вы несете ответственность за обработку данных, включенных в запрос, и ответ со стандартным статусом HTTP 200 OK. Я предполагаю, что данные POST включают в себя тело SOAP, к которому может обращаться скрипт PHP в виде строки. Внутри тела SOAP должен быть XML уведомления. До тех пор, пока у вас есть способ получить фактическую строку XML, которую отправляет eBay, вы можете использовать класс XmlParser. Этот класс использует SDK для преобразования ответа XML из API обратно в объект PHP. Это означает, что вы также можете сделать то же самое.
<?php
require __DIR__.'/vendor/autoload.php';
use DTS\eBaySDK\Parser;
/**
* This string is not a complete example of what eBay could send.
* A full example can be found at http://developer.ebay.com/Devzone/guides/ebayfeatures/Notifications/Notif-EndOfAuction.html#Example
* It assumes that eBay sends a POST request to your sever and
* that you can obtain the data as a string, E.g via $_POST[] or some other way.
*/
$soap = <<<EOF_S
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ebl:RequesterCredentials soapenv:mustUnderstand="0" xmlns:ns="urn:ebay:apis:eBLBaseComponents" xmlns:ebl="urn:ebay:apis:eBLBaseComponents">
<ebl:NotificationSignature xmlns:ebl="urn:ebay:apis:eBLBaseComponents">1w5Fdyr9V9ofTq67etR0lA==</ebl:NotificationSignature>
</ebl:RequesterCredentials>
</soapenv:Header>
<soapenv:Body>
<GetItemTransactionsResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Item>
<ItemID>123456789</ItemID>
</Item>
</GetItemTransactionsResponse>
</soapenv:Body>
</soapenv:Envelope>
EOF_S;
/**
* Very simple method of extracting the XML from the string.
*/
$matches = array();
preg_match('#<soapenv:Body>(.*?)</soapenv:Body>#s', $soap, $matches);
$xml = $matches[1];
/**
* The parser requires the full namespace and classname of the object that will be built from the XML.
*/
$parser = new Parser\XmlParser('DTS\eBaySDK\Trading\Types\GetItemTransactionsResponseType');
/**
* Pass the XML and the parser will return a PHP object.
*/
$response = $parser->parse($xml);
/**
* Use the object.
*/
echo $response->Item->ItemID;
Отлично! У меня есть что-то подобное уже для первой части, но вторая часть невероятно полезна. Очень признателен! – jdawg
спасибо. можете ли вы сообщить мне, есть ли способ узнать, отправил ли ebay уведомление на url. Я добавляю сообщение журнала, но не получаю вызов. email devliery url works – coder771
Я собирался отправить и опубликовать на github, но это полностью ответили на мой вопрос! – nikksan