在处理 WorldPay 交易的回调时,检索传递给 Omnipay 的原始 transactionId 的最佳方法是什么?
例如,这将需要使用事务结果更新适当的数据库记录。
我可以看到响应中有一个 getTransactionReference() 方法可用,但没有 getTransactionId() 方法(它可能会访问 WorldPay 返回的“cartId”值)。
我猜cartId 值可以直接访问,但有没有网关不可知的方法来做到这一点?
在处理 WorldPay 交易的回调时,检索传递给 Omnipay 的原始 transactionId 的最佳方法是什么?
例如,这将需要使用事务结果更新适当的数据库记录。
我可以看到响应中有一个 getTransactionReference() 方法可用,但没有 getTransactionId() 方法(它可能会访问 WorldPay 返回的“cartId”值)。
我猜cartId 值可以直接访问,但有没有网关不可知的方法来做到这一点?
您应该使用自定义 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();