Paypal Bulk Payout API

时间:2015-08-24 16:43:30

标签: php paypal

我正在努力找出Paypal批量付款的最佳工作流程:

我有一切正常工作,即我可以发送批量付款并阅读和存储回复。

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

// ...

use myApp\Contracts\Payment;

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

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

// .. etc

我想知道处理批量支出的理想流程是什么。

例如:

  1. 3名收件人需要获得X金额

  2. 我这样做:

    创建批量支付。

  3. 这会返回带有'payout_batch_id'的响应,这是异步的。

  4. 在获得状态后,我是否打电话直接获得付款批量详细信息?还是有等待期?

  5. 我要在存储/数据库中存储响应的哪一部分,我为批量付款的每个收件人创建一条记录,我应该为每条记录分配“payout_batch_id”

  6. no.5非常重要,因为下次我希望发送付款时,我想从当前的付款金额中扣除之前成功付款的金额。

  7. 请帮忙。谢谢。

1 个答案:

答案 0 :(得分: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获取状态。

  

no.5非常重要,因为下次我希望发送付款时,我想从当前的付款金额中扣除以前成功支付的金额。

如果您已经发送了付款并且它处于待处理状态(或任何其他不确定状态),则您不应该为该金额发出另一个付款。假设从您向PayPal发送请求之前的那一点成功发送了资金,然后仅假设如果您遇到具体的故障情况则会失败,否则您可能仍有责任。

希望这会有所帮助