我有一个奇怪的问题,这种情况有时会发生,当用户通过PayPal支付课程时,订单状态从挂起变为处理,而不是完成。
在此图像中,IPIN通知已收到,但仍处于处理阶段,是什么导致了此问题。我试图复制这个问题,但它没有在我的末端复制,它有时会发生。
php - 在Woocommerce中从Paypal成功付款后的订单状态处理问题-LMLPHP
以下是产品信息:
产品是虚拟产品
库存被禁用
php - 在Woocommerce中从Paypal成功付款后的订单状态处理问题-LMLPHP

最佳答案

如果您只销售虚拟产品,则可以强制PayPal的“支付完成”功能的订单状态为“完成”,方法如下:

add_filter('woocommerce_payment_complete_order_status', 'paypal_payment_complete_order_status', 10, 2 );
function paypal_payment_complete_order_status( $status, $order_id, $order ){
    if( $order->get_payment_method() === 'paypal' )
        $status = 'completed';

    return $status;
}

代码放在活动子主题(或活动主题)的function.php文件中。测试和工作。
此挂钩仅在成功付款时触发,最初有两个可能的订单状态值“处理”或“完成”(取决于是否需要“处理”)。所以这个答案代码只是强制订单状态为“完成”,目标是PayPal支付网关(用于虚拟产品)。This hook位于WC_Orderpayment_complete()方法上。
所有支付网关对成功的支付使用payment_complete()方法,贝宝对WC_Gateway_Paypal_Response类使用它。

关于php - 在Woocommerce中从Paypal成功付款后的订单状态处理问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53630694/

10-09 22:43