You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce Opayo Payment Suite:程序化设置交易为立即付款或仅认证

解决方案

针对你的需求,我们可以利用Opayo Payment Suite提供的过滤器钩子动态修改交易类型,以下是具体实现步骤:

核心实现代码

将以下代码添加到你的主题functions.php文件或自定义插件中:

add_filter( 'opayo_payment_suite_transaction_type', 'custom_opayo_transaction_type_based_on_deposit', 10, 2 );

function custom_opayo_transaction_type_based_on_deposit( $transaction_type, $order ) {
    // 1. 定义判断订单是否包含预付款的逻辑,根据你的实际情况调整
    $has_deposit = false;
    
    // 示例1:检查订单是否有预付款元数据(比如使用了WooCommerce Deposits插件)
    $deposit_amount = $order->get_meta( '_deposit_amount', true );
    if ( ! empty( $deposit_amount ) && $deposit_amount > 0 ) {
        $has_deposit = true;
    }
    
    // 示例2:检查订单是否包含特定产品类型的预付款商品
    foreach ( $order->get_items() as $item ) {
        $product = $item->get_product();
        if ( $product && $product->is_type( 'deposit' ) ) {
            $has_deposit = true;
            break;
        }
    }

    // 2. 根据判断结果修改交易类型
    if ( ! $has_deposit ) {
        // 无预付款时设置为「仅认证」,对应Opayo的交易类型值为AUTH
        return 'AUTH';
    }

    // 有预付款时保留默认的「立即付款」(对应Opayo的SALE)
    return $transaction_type;
}

关键说明

  • 钩子说明:opayo_payment_suite_transaction_type是Opayo Payment Suite官方提供的过滤器,用于覆盖默认交易类型,接收当前交易类型和订单对象两个参数。
  • 预付款判断逻辑:代码提供了两种常见判断示例,你需要根据业务场景调整:
    • 若使用第三方预付款插件(如WooCommerce Deposits),可通过订单元数据判断
    • 若是自定义预付款产品类型,直接检查商品类型即可
  • 交易类型值:Opayo交易类型中,SALE对应「立即付款」,AUTH对应「仅认证」,注意值的大小写要准确。

测试建议

  1. 创建两个测试订单:一个含预付款商品,一个不含
  2. 完成支付流程后,登录Opayo后台查看交易记录类型是否符合预期
  3. 若判断逻辑不生效,可通过var_dump($order)输出订单数据,确认预付款相关标识字段

内容的提问来源于stack exchange,提问作者AlwaysConfused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:07:18