Используйте WooCommerce для цифровых продуктов, и, как известно, для этого типа продукта или статуса платежа он всегда обрабатывается. Чтобы устранить эту проблему, используйте следующий код, который решает проблему, но уведомление «платеж получен успешно» не синхронизирован. Кто-нибудь знает как это решить?
add_action( 'woocommerce_order_status_changed', 'ts_auto_complete_by_payment_method' );
function ts_auto_complete_by_payment_method( $order_id ) {
if ( !$order_id ) {
return;
}
global $product;
$order = wc_get_order( $order_id );
if ( $order->data[ 'status' ] == 'processing' ) {
$payment_method = $order->get_payment_method();
if ( $payment_method != "cod" ) {
$order->update_status( 'completed' );
}
}
}