2014-09-26 2 views
1

Я пытаюсь найти свой путь через API eBay, и я нахожу его довольно запутанным. Подобно API отвечает на мои запросы с большим количеством данных, кроме половины из них является нулевым или иным образом не установлен. У меня возникла проблема с возвращаемыми объектами TransactionType.Могу ли я получить идентификатор транзакции PayPal для заказа eBay с использованием eBay API?

Есть две вещи, которые я на самом деле хочу найти, идентификатор транзакции PayPal и если на самом деле был оплачен заказ. Давайте пропустим второй (он, вероятно, получит собственный вопрос, если потребуется).

Итак, мой вопрос: Может ли транзакционный идентификатор PayPal быть фактически извлечен из транзакции eBay с использованием eBay API? Если да, как мне это сделать?

На основании моих выводов этот идентификатор должен появиться в TransactionType.ExternalTransaction, но для моего тестового аукциона (который закончился, когда я «купил» его, используя другую учетную запись для песочницы и успешно «заплатил» за нее с помощью песочницы PayPal), там ничего нет ,

Я видел this post, но даже после добавления DetailLevelCodeType.ReturnAll к DetailLevelList, нет нет ExternalTransaction для сделок в рамках заказа.

var apiCall = new GetOrdersCall(apiContext); 
apiCall.NumberOfDays = 1; 
apiCall.DetailLevelList = new DetailLevelCodeTypeCollection() 
{ 
    DetailLevelCodeType.ReturnAll 
}; 
apiCall.Execute(); 

Обратите внимание, когда доступ к операции в порядке, я использую SomeOrder.TransactionArray.Cast<eBay.Service.Core.Soap.TransactionType>()


Оказывается, что если я явно попросить операции с использованием GetItemTransactionsCall (установка DetailLevel к ReturnAll представляется необходимым) я могу на самом деле получить информацию о транзакции PayPal.

var apiCall = new GetItemTransactionsCall(apiContext); 
apiCall.DetailLevelList = new DetailLevelCodeTypeCollection() 
{ 
    DetailLevelCodeType.ReturnAll 
}; 
apiCall.ItemID = "someItemId"; 
apiCall.Execute(); 
var trans = apiCall.TransactionList.Cast<TransactionType>().ToList(); 
var extTrans = trans.First().ExternalTransaction.Cast<ExternalTransactionType>().ToList(); 
var payPalId = extTrans.First().ExternalTransactionID; 

Я только немного разочарован тем, что я не могу вытащить всю информацию о заказах, которые были размещены с помощью одного вызова к API (там, вероятно, еще способ, чтобы получить всю информацию, что мне нужно, используя минимальное количество массовых вызовов).

ответ

3

GetItemTransactions предоставит вам то, что вам нужно. Я использовал его для получения ID транзакции PayPal для транзакций много раз в прошлом без каких-либо проблем. В частности, Transaction.ExternalTransaction.ExternalTransactionID.

+1

Большое спасибо. Запрос 'GetItemTransactions' с' DetailLevel' 'ReturnAll' дал мне то, что я хотел. Странно, что я не мог получить эту информацию в составе «GetOrdersCall». На этой странице https://ebay.custhelp.com/app/answers/detail/a_id/1550/~/linking-ebay-and-paypal-transactions упоминаются внешние транзакции, пропавшие по какой-либо причине, поэтому, возможно, это связано с этим. – jahu

Смежные вопросы