处理来自WorldPay交易的回调时,检索传递给Omnipay的原始transactionId的最佳方法是什么?
例如,需要使用事务结果更新相应的数据库记录。
我可以看到响应中有一个getTransactionReference()方法,但不是getTransactionId()方法(可能会访问WorldPay返回的'cartId'值)。
我猜测可以直接访问cartId值,但是有一种与网关无关的方法吗?
答案 0 :(得分:1)
您应该使用自定义returnUrl将transactionId传递回给自己。
首先,当您设置Worldpay时:
<wpdisplay item=MC_callback>
然后,当您使用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();