Как сделать так, чтобы пользовательский шлюз оплаты "обрабатывал" при продаже виртуального или загружаемого продукта, а не "завершен"? - PullRequest
0 голосов
/ 06 апреля 2019

Я использую платежный шлюз woocommerce для продажи виртуального продукта, но после успешной оплаты статус изменится на Завершено! Как изменить статус на Обработка не завершена?

  1. Я пытался изменить код оплаты, но не работает.
if($queryInfo['StatusCode'] == 10001)
                            { 
                                $order->update_status('completed');

                                if (!$this->is_order_complete($order)) {
                                    $this->confirm_order($order, $payment_result_comments);
                                    $oPayment->ConfirmOrder();
                                }
                            }

Изменить на:

$order->update_status('processing');

Я изменяю update_status на обработку, все еще не работает:

  1. Я добавляю код к функциям, все еще не работает.

(1) Первая попытка:

add_action( 'woocommerce_order_status_changed', 'change_order_status_conditionally', 10, 4 );
function change_order_status_conditionally( $order_id, $status_from, $status_to, $order ) {
    if( $order->get_payment_method() === 'onepaid' && $status_from === 'completed' ) {
        $order->update_status( 'processing' );
    }
}

(2) Добавьте этот код к функциям, которые все еще не работают:

add_action( 'woocommerce_payment_complete_order_status', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'processing' );
}

(3) Добавьте этот код к функциям, которые все еще не работают:

add_action( 'woocommerce_payment_complete', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }
    $order = wc_get_order( $order_id );
    if( $order->has_status( 'completed' ) ) 
        {
            $order->update_status( 'processing' );
        }

   $order = wc_get_order( $order_id );
    $order->update_status( 'processing' );

}

Завершите заказ и добавьте комментарии

            function confirm_order($order, $comments) {
                $order->add_order_note($comments, true);
                $order->payment_complete();
            }

После оплаты обратного вызова статус изменится на обработку, а не завершен.


Редактировать

Я использую Плагин OnePaid
Его можно загрузить с этой страницы на китайском языке , где вы можете нажать в разделе Wordpress на кнопке загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...