【问题标题】:Omnipay: How to retrieve original transaction ID when using WorldPay callbackOmnipay:使用 WorldPay 回调时如何检索原始交易 ID
【发布时间】:2014-02-11 00:40:39
【问题描述】:

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

例如,这将需要使用事务结果更新适当的数据库记录。

我可以看到响应中有一个 getTransactionReference() 方法可用,但没有 getTransactionId() 方法(它可能会访问 WorldPay 返回的“cartId”值)。

我猜测可以直接访问 cartId 值,但有没有网关无关的方法来做到这一点?

【问题讨论】:

    标签: php payment-processing omnipay


    【解决方案1】:

    您应该使用自定义的 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();
    

    【讨论】:

    • 这可能有效,但是它违背了“通用支付提供商”的目的!您如何使用 Omnipay 现有的抽象方法来做到这一点?例如,目标使用 'trxid' 作为参数。
    猜你喜欢
    • 1970-01-01
    • 2012-09-30
    • 2020-08-27
    • 2018-07-24
    • 2017-09-21
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    相关资源
    最近更新 更多