TL;DR- 我如何知道我是否真的通过 PayPal NVP API 获得了报酬?
更长的版本
我正在编写代码来自动处理和分类来自我们 PP 业务帐户的交易。我有调用 NVP 方法 TransactionSearch 和 GetTransactionDetails 的代码,并用返回的结果填充几个数据库表。对于前 24 小时的交易,每天都会发生这种情况。到现在为止还挺好。
我从假设通过 PayPal Web 界面通过手动 CSV 导出获得的相同信息可以通过 API 获得,但我现在发现不是这种情况,或者我应该进行另一个 API 调用获取我需要的其余信息。
特别是,GetTransactionDetails 似乎没有返回相当于 CSV 字段“Reference Txn ID”的内容,并且在某些情况下,我看不到如何连接相关事务。
所以,我的问题是如何获得参考交易 ID,或者我如何连接这些关联交易?
示例 1
这(可能)是需要参考事务 ID 的最常见的情况。
根据买家的资金来源,您可能会立即看到购买完成,或者如果交易必须清算,则在三个单独的交易中完成:
- 原始付款,详细信息包括买家姓名、电子邮件、地址、发票号码、商品 ID、毛额、费用和净额等。
- 随后立即扣除净额
- 几天后,净额贷记。
匹配这三笔交易至关重要,因为除非您这样做,否则您不知道付款是成功还是被拒绝(因此您是否真的拿到了钱)。
在我目前可用的数据中,这种情况只有一个这样的例子,并且对结算交易的 GetTransactionDetails 调用完全失败(“无法加载交易”)——可能是因为,在那种情况下,我知道付款是由没有 PayPal 帐户的人使用信用卡支付的。
这可能是异常情况,也可能是常见情况。我在其他 PayPal 账户中经常看到这三笔交易,但不是这个,所以我不能确定。
示例 2
外币支付通常会产生三笔交易,就像示例 1 中一样:
- 原始付款(例如欧元),其详细信息提供了发件人的姓名和电子邮件地址等;
- 然后立即借记(可能是净)金额(欧元)</li>
- 然后立即以美元计入贷方。
从 NVP API 的角度来看,GetTransactionDetails通常为原始付款返回标有 SETTLEAMT 和 SETTLEAMTCURRENCYCODE 的值。无需进一步处理。
但是,最近的此类交易(甚至 PayPal 都无法充分解释的原因)没有自动转换,即使在手动执行转换后,GetTransactionDetails 调用也缺少结算值。
交易都在那里——但我看不到任何将它们关联起来的编程方式,因为尝试在货币转换交易上调用 GetTransactionDetails 会返回错误“您无法获取此类交易的详细信息”。
——</p>
有关自动处理 PayPal 交易的任何建议或经验?有没有办法以编程方式复制 CSV 导出中包含的相同数据?
如有必要,如果有某种方法可以以编程方式生成 CSV 导出,我会很乐意处理它,但我什至不知道有什么方法可以做到这一点(缺少一个充满陷阱的 Selenium 驱动的解决方案)。