paypal-nvp - GetTransactionDetails 缺少订阅 ID 的 PayPal API NVP 响应

标签 paypal-nvp

在过去的几年里,我为我的 saas 应用程序编写了多份审计报告。大多数逻辑使用 PayPal API 来获取完整的交易列表(使用 TransactionSearch),然后为每个交易获取详细信息(使用 GetTransactionDetails)。

目的是将我收到的经常性付款的数据库记录与最新的 PayPal 数据对齐,以确保我没有遗漏 IPN 或任何东西。

直到大约一个月前,它都运行良好。

最近,大多数交易都缺少订阅 ID。

过去,订阅 ID 包含在“SUBSCRIPTIONID”NVP 字段中。这不再适用于所有交易,并且我没有看到返回的任何其他字段包含订阅 ID。不过,所有其他领域似乎都在那里,所以我知道我的电话正在工作。只是 NVP 响应缺少订阅 ID。我还验证了订阅 ID 包含在为相同交易发送的 IPN 中。

我的代码使用的是较旧的 API 版本 (108.0)。现在理论上,PayPal 永远不会改变 API 的工作方式,所以我很困惑为什么结果不再是一个月前使用相同代码库时的结果。

我尝试了最新的 API 版本 (124.0),它提供了超过 108 个交易的订阅 ID,但也不是全部。

我在这里完全被难住了。有没有人有任何线索?

我不想寻求 PayPal 支持,因为需要 3 周才能获得任何帮助:-)

最佳答案

有一个月同样的问题,只是随机停止工作,打算尝试最新版本,但如果你说它是一样的,那么认为最好的行动方案是向 paypal 提交错误报告。

我发现唯一有效的解决方法是保存创建的 api 调用,它将返回电子邮件和订阅 ID。

然后使用获取事务 ID(电子邮件)中的信息从原始数据库(创建)中搜索订阅 ID。凌乱但在他们解决此问题之前暂时有效。

跟进

我正在使用此方法继续进行 api 调用,直到订阅 ID 被创建,因为我们知道它每 5 次尝试中就有 1 次有效。

try {
    /* Original call */
    $transDetailsResponse = $paypalService->GetTransactionDetails($request);
} catch (Exception $ex) {
    include_once("../Error.php");
    exit;
}
// If its not got sub id we start a while loop
    if ($transDetailsResponse->PaymentTransactionDetails->PaymentItemInfo->Subscription->SubscriptionID == "")
        {
    // Run while loop until its found
        while ($transDetailsResponse->PaymentTransactionDetails->PaymentItemInfo->Subscription->SubscriptionID=="")
            {

            try {

            $transDetailsResponse = $paypalService->GetTransactionDetails($request);
            } catch (Exception $ex) {
            include_once("../Error.php");
            exit;
            }   

        }

关于paypal-nvp - GetTransactionDetails 缺少订阅 ID 的 PayPal API NVP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167635/

相关文章:

Paypal 经典 API : Test accounts

paypal - (Paypal) GetTransactionDetails 需要 TRANSACTIONID。我如何获得它?

PayPal Pro NVP API 错误本地化

soap - Paypal SOAP 和 NVP

paypal - 如何通过 API 调用取消 PayPal 账单协议(protocol)

paypal - 如何获取 PayPal 买家的账单地址

asp.net - 具有快速结账功能的 Paypal 获取 BillingAgreementID

paypal - 对 Paypal REST API、NVP 和授予权限感到困惑

php - Paypal 信用卡 NVP 经常性付款配置文件在创建用户的新配置文件后立即被取消