何时停止查询 paypal api 的付款状态?

Posted

技术标签:

【中文标题】何时停止查询 paypal api 的付款状态?【英文标题】:When to stop querying paypal api's for payment status? 【发布时间】:2014-07-03 23:42:24 【问题描述】:

使用并行支付 paypal api。如果用户 1 向用户 2 付款,我会使用 api 进行检查,以确保 paypal 将付款详细信息返回为 COMPLETED。

paypal 会将完成的付款记录保留多长时间?他们是无限期保留它,还是在一段时间后将其删除?我问是因为我正处于开发阶段,我需要决定是否应该依靠贝宝无限期地保留该记录,或者我是否应该在我的服务器上创建一个付款已完成的记录,或者我是否应该始终检查是否付款已通过查询贝宝标记为已完成?

我“想”通过贝宝检查的唯一原因是,当使用他们的 API 查询贝宝时,付款是否曾经以 REFUNDED 或 PARITALLY_REFUNDED 的形式退还给 user1。我想在这种情况下采取相应的行动。

如果状态为 REFUNDED 或 PARTIALLY_REFUNDED,这并不是什么大问题,因为如果人们在 45 天到期之前不使用 paypal 开箱,显然无法获得退款。我更关心的是 REVERSED 状态,这显然随时可能发生,即使是在 45 天之后,这是 paypal 无法控制的,因为它是由信用卡公司完成的,如果用户使用信用卡付款...

【问题讨论】:

我认为 PayPal 会向您的 IPN 请求发送确认已完成的请求。您不需要查询它。等 PP 做吧。 @SergeyRomanov,我查询状态的原因是为了确保用户不会意外支付双倍费用,从长远来看,这对我来说意味着更多的工作。如果我能从一开始就阻止他们双倍付款,那么当人们给我打电话或给我发电子邮件说他们不小心双倍付款等时,我将不得不做更少的工作信。 这是我通常的做法。我在发送到贝宝之前创建订单。我将订单 ID 传递给 PP。因此,当用户再次尝试时,如果仍然未付款,我可以加载相同的订单,或者通知这可能是第二次尝试,具体取决于订单创建日期。 【参考方案1】:

使用PaymentDetails 请求,我能够提取我最早的自适应支付交易,该交易已有60 多天的历史,并且使用transactionId 字段提取它没有问题。只要它们在 PayPal 帐户中列出(目前是永久的),它应该能够提取付款。

如果您存储的是 payKey 字段而不是 transactionId,这也可以使用,但是 transactionId 会显示在您的 PayPal 帐户中,并与 IPN 响应一起发送。

【讨论】:

以上是关于何时停止查询 paypal api 的付款状态?的主要内容,如果未能解决你的问题,请参考以下文章

PayPal REST API 未执行付款。无法将付款对象的状态从“已创建”更改为“已批准”或“已完成”

Paypal Sandbox 付款状态待定

Magento 中的 Paypal 状态

PayPal Rest API 直接付款

在 Paypal Standard 中停止 Paypal 定期付款

发票 API:如何获得付款费用?