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()
);
}
该代码将重定向到签出
页面。希望能帮助你