簡體   English   中英

如何使用Omnipay退款

[英]How to refund with Omnipay

用貝寶快遞完成付款並且數據庫更新失敗后,在那種情況下我該怎么辦?

這是代碼:

    $transaction = $this->initPayPalExpress()->completePurchase($this->param);
    $response = $transaction->send();
    $data = $response->getData();
    if (isset($data['PAYMENTINFO_0_ACK']) && $data['PAYMENTINFO_0_ACK'] === 'Success') {
      $this->updateDatabase($data);
    }

我建議您從PayPal Express切換到PayPal REST。 那是較新的並且具有更好的文檔。

關於數據庫更新失敗的處理方式,我建議您需要某種備份計划-您可以使用RestListPurchaseRequest()消息來檢查購買歷史記錄。

您問有關退款的問題,但不提供退款示例-問題的確切性質是什么?

在omnipay-paypal REST消息和網關的文檔塊中有一些很好的示例,可以實現我想做的事情。

如果您使用支付網關,則不依賴會話數據來存儲信息,您將使用這些信息將支付鏈接回用戶。 相反,由於用戶要付款,因此必須有一個orders / subscriptions表或什至只是用戶的id本身。 因此,您可以在允許通過的自定義字段中將標識信息傳遞給PayPal,然后在重定向/回調中可以執行類似操作(不是Omnipay代碼,但可以說明要點):

$response = GetExpressCheckoutDetails( $_REQUEST['token'] );
$orderID = $response["PAYMENTREQUEST_0_CUSTOM"];

這樣,無論用戶是否有活動會話,您都可以完成交易。 如果數據庫發生故障,則您不必退還客戶,因為問題不在他們那里,而是您自己。 您最好趕上數據庫故障,並讓腳本日志或通過電子郵件發送便箋,告知您某某費用已成功支付,但數據庫失敗-您可以手動完成購買。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM