我正在努力找出Paypal批量付款的最佳工作流程:
我有一切正常工作,即我可以发送批量付款并阅读和存储回复。
我有一个与Paypals API交互的PaypalService类。
// ...
use myApp\Contracts\Payment;
class PaypalService implements Payment
{
public function sendBatchPayout(...)
{
...
}
public function getPayoutDetails($payout_batch_id)
{
...
}
}
// .. etc
我想知道处理批量支出的理想流程是什么。
例如:
3名收件人需要获得X金额
我这样做:
创建批量支付。
这会返回带有'payout_batch_id'的响应,这是异步的。
在获得状态后,我是否打电话直接获得付款批量详细信息?还是有等待期?
我要在存储/数据库中存储响应的哪一部分,我为批量付款的每个收件人创建一条记录,我应该为每条记录分配“payout_batch_id”
no.5非常重要,因为下次我希望发送付款时,我想从当前的付款金额中扣除之前成功付款的金额。
请帮忙。谢谢。
答案 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发送请求之前的那一点成功发送了资金,然后仅假设如果您遇到具体的故障情况则会失败,否则您可能仍有责任。
希望这会有所帮助