Php 如果在Woocommerce中付款失败,如何重新加载签出页面

Php 如果在Woocommerce中付款失败,如何重新加载签出页面,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我有一个自定义的支付网关,如果支付失败,我需要重新加载结帐页面 原因: 当提交卡详细信息时,支付网关生成一个卡令牌,我需要该令牌来处理支付,但我们只能在请求时使用该卡令牌一次 我需要的是: 目前,我只是显示错误消息和付款失败时的返回 if($payment_status['status']){ $order->update_status( 'on-hold', __( "ABC Payment Done\n", 'stackoverflow' ) );

我有一个自定义的支付网关,如果支付失败,我需要重新加载结帐页面

原因: 当提交卡详细信息时,支付网关生成一个卡令牌,我需要该令牌来处理支付,但我们只能在请求时使用该卡令牌一次

我需要的是: 目前,我只是显示错误消息和付款失败时的返回

if($payment_status['status']){
    
    $order->update_status( 'on-hold', __( "ABC Payment Done\n", 'stackoverflow' ) );
    
    wc_reduce_stock_levels($order_id);

    WC()->cart->empty_cart();

    return array(
        'result'    => 'success',
        'redirect'  => $this->get_return_url( $order )
    );
  
}else{
    
    wc_add_notice( $payment_status['message'] , 'error' );
    return;
}
如果付款失败,我如何重新加载/刷新页面?S用户可以再次输入卡的详细信息,我们可以处理付款。
还是其他建议?

这取决于您想要同步还是异步。 同步方式:
标题(“刷新:0”)

它会刷新当前页面。您还可以指定所需的页面:

标题(“Refresh:0;url=other_page.php”)

异步方式: 动态生成内容,清除所有更改和标记。

Fksjii为真

但是,如果有一个生成令牌代码的指定页面,可能会更干净

通过XHR请求,您可以获得它,然后使用XHR提交每个数据并等待回调

但是,如果您不能编辑JS代码,您可以这样做

如果($failed){
取消设置($\请求);
标题(“刷新:0”);
出口
}
在重新加载页面之前,不要忘记清理$\u GET或$\u POST数据


即使在头文件中发送了重定向之后,退出也是非常重要的。确实,发送了头,但代码继续执行,可能会产生一些错误。

您需要返回
数组,例如:

if ( $payment_status['status'] ) {
    $order->update_status( 'on-hold', __( "ABC Payment Done\n", 'stackoverflow' ) );
    wc_reduce_stock_levels($order_id);
    WC()->cart->empty_cart();
    return array(
        'result'    => 'success',
        'redirect'  => $this->get_return_url( $order )
    );

} else {
    $order->update_status( 'failed', __( 'Payment error:', 'woocommerce' ) . $this->get_option( 'error_message' ) );
    wc_add_notice( $payment_status['message'] , 'error' );
    WC()->cart->empty_cart();
    return array(
        'result'   => 'failure',
        'redirect' => WC()->cart->get_checkout_url()
    );
}
该代码将重定向到
签出
页面。希望能帮助你