PayPal IPN,eBay 多行订单 ebay_txn_id = 0

PayPal IPN, eBay Multi-Line Order ebay_txn_id = 0

我正在构建一个系统,通过网站购物车和 eBay 交易自动处理我们的 PayPal 订单。当来自 eBay 的订单是组合发票订单(通过 eBay 同时购买多件商品)时,每件商品的 eBay 交易 ID (ebay_txn_id) 为 0。

我使用 eBay 交易 ID 来获取有关 eBay 未发送给我们的订单的更多信息,但我在 IPN 中找不到任何其他 ID 可以帮助解决此问题。

还有其他人有这个问题吗?

IPN 数据中每个购物车商品的 item_number 是 eBay 拍卖编号。您可以点击 eBay 的 GetItemTransactions API 以提取与该特定 item/auction.

关联的所有交易

当然,与单个拍卖相关联的交易可能不止一笔,因此为确保您获取正确的数据,您可以使用一些 XPath。

eBay 交易数据在其所谓的 "external transaction" 数据中包含 PayPal 交易 ID。

我最近在自己的一个项目中做了所有这些,这是我用来根据PayPal交易ID拉取具体数据的。

$DOM = new DOMDocument();
$DOM->loadXML($GetItemTransactionsResponse);
$XPath = new DOMXPath($DOM);
$XPath->registerNamespace("ns","urn:ebay:apis:eBLBaseComponents");

$eBayTransID = $XPath->query("//ns:Transaction[ns:ExternalTransaction/ns:ExternalTransactionID = '" . $txn_id . "']/ns:TransactionID/text()")->item(0)->data;
$shipping_method = $XPath->query("//ns:Transaction[ns:ExternalTransaction/ns:ExternalTransactionID = '" . $txn_id . "']/ns:ShippingServiceSelected/ns:ShippingService/text()")->item(0)->data;
$buyer_feedback_score = $XPath->query("//ns:Transaction[ns:ExternalTransaction/ns:ExternalTransactionID = '" . $txn_id . "']/ns:Buyer/ns:FeedbackScore/text()")->item(0)->data;

所以那里使用的 XPath 基本上是说“在 ExternalTransactionID = $txn_id 处获取此数据,它来自 PayPal IPN 数据。

因此将几部分拼接在一起,但它会很好地工作。