2016-10-04 2 views
1

У меня есть установка Wordpress с WooCommerce с использованием стандартного шлюза Paypal. Платежи принимаются и проходят штраф. IP-адрес Paypal принимается сайтом и помечен как «Завершено» для заказа, но статус заказа остается неизменным в WooCommerce и по-прежнему читается как «Обработка».WooCommerce Paypal Стандартный шлюз - IPN Получено, но статус заказа застрял на «обработке»

10-04-2016 @ 11:04:18 - Received valid response from PayPal 
10-04-2016 @ 11:04:18 - Found order #1303 
10-04-2016 @ 11:04:18 - Payment status: completed 

woocommerce order status

Другие вещи вошли в настройки шлюза Paypal:

  • Paypal API Подробности
  • Paypal Идентичность Токен
  • Клиенты Paypal Войти электронной почты в качестве адреса приемника и PayPal электронная почта
  • Оплата набор для захвата

Paypal Return URL:

Paypal Уведомление URL:

Другие Связанные Woo Плагины установлены:


Я немного озадачен, как то, что еще попробовать, как IPN является очевидно, получаются, но по какой-либо причине WooCommerce не обновляет порядок st atus с этой информацией. Есть некоторые уведомления PHP о несвязанных точках в других шаблонах, но не что-то, что должно мешать WooCommerce. Любая помощь или идеи, чтобы попробовать, будут высоко оценены!

ответ

0

Спасибо за ответ, я посмотрел плагин с автозаполнением, но клиент в руке потребовал, чтобы это был ручной метод. Мне удалось выяснить метод, который работает для Paypal стандартного платежа, исходя от ниже ресурса:

http://codecharismatic.com/run-your-own-damn-code-after-paypal-calls-woocommerce-back/

<?php 
/** 
* Auto Complete Woocommerce 'processing' orders 
*/ 

add_action('valid-paypal-standard-ipn-request', 'handle_paypal_ipn_response', 50, 1); 

function handle_paypal_ipn_response($formdata) { 

    if (!empty($formdata['invoice']) && !empty($formdata['custom'])) { 

     if($formdata['payment_status'] == 'Completed') { 

      // decode data 
      $order_data = json_decode($formdata['custom'], true); 

      // get order 
      $order_id = ($order_data) ? $order_data['order_id'] : ''; 
      $order = new WC_Order($order_id); 

      // got something to work with? 
      if ($order) { 

       if ($order->post->post_status == 'wc-processing'){ 

        // Status success 
         WC_Gateway_Paypal::log('Changing order #' . $order->id . ' status from processing to completed'); 
         $order->update_status('completed'); 

       } else { 

        // Status fail 
         WC_Gateway_Paypal::log('Status fail, order #' . $order->id . ' status is set to ' . $order->post->post_status . ', not processing'); 

       } 

      } else { 

       // Order fail 
        WC_Gateway_Paypal::log('Fail, no order found'); 

      } 

     } else { 

      // Payment fail 
       WC_Gateway_Paypal::log('Payment status fail, not completed'); 

     } 
    } 


} 
1

У меня была такая же проблема, и я обнаружил, что это, вероятно, нормально для WooCommerce, так как продукт должен быть отправлен, а затем установлен в Completed. Вы можете использовать плагин для автозаполнения заказов.

WooCommerce автозаполнения Заказы
https://wordpress.org/plugins/woocommerce-autocomplete-order/

Как автоматически Установить Заказы WooCommerce PayPal как завершенные
http://biostall.com/how-to-automatically-set-woocommerce-paypal-orders-as-completed/

Примечание: Вы должны убедиться, что ваш продукт Virtual и установите режим «Платные заказы только виртуальных продуктов» в разделе WooCommerce> Настройки> Дополнительные параметры

Смежные вопросы