处理来自WorldPay交易的回调时,检索传递给OmniPay的原始TransactionID的最佳方法是什么?
这将需要以交易结果更新适当的数据库记录。
我可以看到响应上有一个getTransactionReference()方法,但不能使用getTransactionId()方法(大概可以访问WorldPay返回的" Cartid"值)。
我猜想可以直接访问Cartid值,但是是否有网关不合时宜的方法来执行此操作?
您应该使用自定义返回url将事务授予。
首先,当您设置WorldPay时:
- 登录您的WorldPay Merchant Admin界面
- 在安装下,单击安装ID旁边的设置
- 在付款响应URL字段中,输入
<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();