2014-01-21 86 views
0

當從WorldPay交易處理回叫時,檢索傳遞給Omnipay的原始transactionId的最佳方法是什麼?Omnipay:如何使用WorldPay回撥檢索原始交易ID

例如,這將需要用事務結果更新適當的數據庫記錄。

我可以看到在響應中有一個getTransactionReference()方法可用,但不是getTransactionId()方法(這可能會訪問WorldPay返回的'cartId'值)。

我猜cartId值可以直接訪問,但有沒有一個網關不可知的方式來做到這一點?

回答

0

您應該通過使用自定義returnUrl將transactionId傳回給自己。

首先,當你設置WorldPay的:

  1. 登錄到您的WorldPay的商戶管理界面
  2. 在安裝,點擊下一步安裝到您的安裝ID
  3. 在支付響應URL字段中輸入<wpdisplay item=MC_callback>
  4. 確保支付響應啓用?選項

然後,當您使用Omnipay進行初始購買請求時,請傳遞一個自定義returnUrl。例如:

$response = $gateway->purchase(array(
    'amount' => '10.00', 
    'currency' => 'USD', 
    'returnUrl' => 'https://www.example.com/return?transactionId=123' 
))->send(); 

這樣一來,你的回調/返回頁面上,你可以在調用completePurchase()之前加載原始交易細節:

$transaction = Transaction::find($_GET['transactionId']); 
$response = $gateway->completePurchase(array(
    'amount' => $transaction->amount, 
    'currency' => $transaction->currency, 
))->send(); 
+0

這可能有效,但是它違背了目的的「全球支付提供商'!你怎麼能用Omnipay的現有抽象方法來做到這一點?目標例如使用'trxid'作爲參數。 – twicejr