在过去的几年里,我为我的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周才能得到任何帮助: - )
答案 0 :(得分:2)
如果同一个问题持续一个月以及随机停止工作会尝试最新版本,但如果你说的相同,那么认为最好的行动方案就是用paypal提交错误报告。
我找到的唯一有效工作是保存创建的api调用,该调用将返回电子邮件和订阅ID。
然后使用来自get transaction id(email)的信息从原始数据库(已创建)中搜索订阅ID。凌乱,但现在工作,直到他们解决这个问题。
关注
我正在使用这种方法继续进行api调用,直到订阅ID为止,因为我们知道它每5次尝试就会工作。
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;
}
}
答案 1 :(得分:0)
我担心我没有答案,但我无法通过任何方式参与此次讨论,因为我没有足够的声誉来发表评论。
我几周来一直遇到同样的问题。 (事实上,我可以说这些问题最初始于2016-03-07的变化)。 https://stackoverflow.com/questions/36647177/paypal-api-has-stopped-sending-profile-ids-any-way-to-match-payments-up-to-a-s
我今天已经注意到我们已经开始再次接收SUBSCRIPTIONID。但是,TRANSACTIONTYPE已更改为' recurring_payment'而不是' subscrpayment'。
我们还发现,我们正在接收来自其他卖家的交易详情,这些交易详细信息完全与我们的交易细节混在一起 - 产品名称行与我们的业务完全没有任何关系。完全破碎,可能存在安全问题。
我已经用paypal-techsupport.com打开了几张票来描述这些问题,但我还没有收到他们的回复。
答案 2 :(得分:0)
PayPal支持终于回应了这个:
产品团队报告此问题应该得到解决。 如果您仍然看到此问题的实例,请告诉我们。