2014-01-21 82 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