Paypal批量支付API

3

我正在尝试找出PayPal批量付款的最佳工作流程:

我已经完成了一切,即我可以发送批量付款并读取和存储响应。

我有一个PaypalService类与Paypals API进行交互。

// ...

use myApp\Contracts\Payment;

class PaypalService implements Payment
{
   public function sendBatchPayout(...)
   {
     ...
   }

  public function getPayoutDetails($payout_batch_id)
  {
   ...
  }
}

// .. etc

我想知道处理大量支付的理想流程是什么。
例如:
  1. 3个收件人需要获得X金额。
  2. 我用以下方式完成:
  3. 创建批量支付。

  4. 这将返回一个带有“payout_batch_id”的响应,这是异步的。
  5. 我是否应立即调用获取支付批次明细以获取状态?或者有等待时间吗?
  6. 响应的哪个部分应存储在我的存储/数据库中,我为每个批量支付的接收者创建一条记录,我应将'payout_batch_id'分配给这些记录之一。
  7. 第5点非常重要,因为下一次我想发送支付时,我想从当前支付金额中扣除先前成功支付的金额。
请帮忙。谢谢。

如果您希望立即检索结果,则可以尝试同步支付。http://paypal.github.io/PayPal-PHP-SDK/sample/#payouts - Jay Patel - PayPal
1个回答

1

我在获取状态后需要立即调用获取支付批次详情的接口吗?还是需要等待一段时间?

您可以定期检查状态,但最好使用Webhooks,这样当批次/项目完成时会通知您,而不是轮询。然后,如果您错过了事件通知(您的服务器宕机),请通过/v1/notifications/webhooks-events重新列出通知,或者定期轮询,以确定自上次更新以来是否已经超过某个时间限制(也许是5/10/15/30/45天)。

哪些部分的响应需要存储在我的存储/数据库中?我为每个批量支付的收件人创建一条记录,我应该将'payout_batch_id'分配给这些记录吗?

我建议始终使用sender_batch_id,这样如果您没有从PayPal得到响应,您将重发相同的sender_batch_id,如果它确实通过了,则会收到相同的响应(防止重复支付)。此值应存储,以及生成的payout_batch_id。为了区分批次中的每个项目,请存储payout_item_id。您可以基于payout_batch_id或payout_item_id获取状态。

第5点很重要,因为下次我想发送支付时,我希望从当前支付金额中扣除之前成功支付的金额。

如果您已经发送了支付并且处于挂起状态(或任何其他不确定的状态),则不应发出另一个相同金额的支付。假设在向PayPal发送请求之前的那一刻,资金已经成功发送,只有在出现具体的失败情况时才假定它失败,否则您可能仍然需要承担责任。

希望这可以帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接