woocommerce_order_status_completed не вызывается при оплате чеком - PullRequest
0 голосов
/ 16 февраля 2019

Я написал собственный плагин, и часть этого плагина использует хук "woocommerce_order_status_completed" как:

add_action( 'woocommerce_order_status_completed', 'mmd_woointerface_order_complete', 1);
mmd_woointerface_order_complete($order)
{
 //print to log file here
}

Я использую систему оплаты с использованием чередования, проверил и дважды проверил ключи API, имеюопределили конечные точки Webhook в соответствии с рекомендациями плагинов woocommerce.

  1. Я попытался совершить покупку, и система, похоже, отвечает правильно, при этом заказы отображаются в серверной части моего сайта.
  2. Я попытался отправить тестовые webhooks с помощью бэкэнда полосы.

Ни одна из этих опций не приводит к выполнению действия mmd_woointerface_order_complete .Мой пользовательский вызов никогда не инициируется.Я что-то пропустил.

Кто-нибудь заставил это работать со Stripe?Нужна помощь.

1 Ответ

0 голосов
/ 22 февраля 2019

ПРОБЛЕМА РЕШЕНА! Если вы используете stripe и хотите написать код, который вызывается при оплате.У плагина полосы woocommerce есть целый другой хук действия sdk.

Ссылку на вызовы можно найти здесь: https://docs.woocommerce.com/document/stripe/#section-13

Тот, который работает лучше, но отличается от стандартных хуков woocommerceis "wc_gateway_stripe_process_response ($ stripe_response, $ order)" *

Вам нужно будет проверить переменную $ stripe-response, которой назначено одно из следующих строковых значений: 'successeded', 'failed', 'pending',и 'on-hold'

Это код, который я написал, и он работает на удивление хорошо.

function ProcessStripePayment($stripe_response, $order)
  {
    switch($stripe_response->status)
    {
    case 'succeeded';
       DebugLog('wc_gateway_stripe_process_payment HOOK FIRED  succeeded'); 
    break;

    case 'failed';
     DebugLog('wc_gateway_stripe_process_payment HOOK FIRED - failed'); 
    break;

    case 'pending';
        DebugLog('wc_gateway_stripe_process_payment HOOK FIRED - pending'); 
    break;

    case 'on-hold';
       DebugLog('wc_gateway_stripe_process_payment HOOK FIRED - on-hold');  
    break;          
    }   
  }

Другая довольно БОЛЬШАЯ ошибка, на данный момент это не работает вплагин.Вы должны поместить его в function.php ИЛИ Я использовал плагин под названием snippets.Это делает работу.

Оставшаяся часть кода, который вам нужно написать, является частью структуры класса.

$order               = new WC_Order( $order_id ); 

Довольно просто, пока вы не доберетесь до Meta_data, которыйИспользуется в полях оформления woocommerce.Для этого это работает:

foreach($MetaData as $SubRow)
 {
 switch($SubRow->key)
   {
    case 'Your Custom Field Name':
    break;
   } // switch($SubRow->key) 

DebugLog($SubRow->key); 
DebugLog($SubRow->value);       
}   // foreach($MetaData as $SubRow)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...