Omnipay:使用WorldPay回调时如何检索原始交易ID

时间:2014-01-21 12:12:19

标签: php payment-processing omnipay

处理来自WorldPay交易的回调时,检索传递给Omnipay的原始transactionId的最佳方法是什么?

例如,需要使用事务结果更新相应的数据库记录。

我可以看到响应中有一个getTransactionReference()方法,但不是getTransactionId()方法(可能会访问WorldPay返回的'cartId'值)。

我猜测可以直接访问cartId值,但是有一种与网关无关的方法吗?

1 个答案:

答案 0 :(得分:1)

您应该使用自定义returnUrl将transactionId传递回给自己。

首先,当您设置Worldpay时:

  1. 登录您的WorldPay商家管理界面
  2. 在“安装”下,单击“安装ID”旁边的“设置”
  3. 在付款响应网址字段中,输入<wpdisplay item=MC_callback>
  4. 确保启用了付款响应?选项已选中
  5. 然后,当您使用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();