Платежный шлюз WooCommerce: дата обновления подписки не обновляется - PullRequest
0 голосов
/ 31 января 2019

Я пишу платежный шлюз, который обрабатывает подписки WooCommerce.Вот пример кода, который обрабатывает продление:

        public function mcc_subscription_renewal($amount, $order) {
            $tid = 123;
            $order->payment_complete( $tid );
            $order->update_status( 'completed' );
            WC_Subscriptions_Manager::process_subscription_payments_on_order( $order );
        }

Это для простой подписки, которая взимает с клиента фиксированную плату каждый год.Когда я вручную запускаю процесс продления, новый заказ и запланированное действие создаются успешно, но дата не обновляется до следующего года.Что мне не хватает?Почему успешно завершенный заказ на продление не обновляет дату окончания подписки?

1 Ответ

0 голосов
/ 25 марта 2019

Если вы еще не нашли ответ, пару вещей.Вы просто пишете шлюз ИЛИ пишете шлюз и процесс подписки?

Woocommerce имеет дополнение, называемое Woocommerce подписка.Он делает все расчеты со шлюзом, которые на данный момент являются только Stripe / PayPal.Если вы пишете новый шлюз и хотите добавить подписку на woocommerce, все, что вам нужно сделать, это посмотреть идентификатор подписки и следующую дату платежа:

 public function mcc_subscription_renewal($amount, $order) 
   {
   $order               = new WC_Order( $order );               
   $OrderNumber         = $order->parent_id;
   $ParentOrder         = new WC_Order( $OrderNumber ); // ORDER NUMBER
   $SubscriptionNumber  = $order->get_order_number();
   $PaymentDate         = $order->get_date_created()->format ('Y-m-d');

    $items  = $order->get_items();
    foreach( $items as $item_id => $product )
       {    
       $ProductName         = $product->get_name();        
       $ProductId           = $product->get_product_id(); 
       $ExpireDate          = WC_Subscriptions_Order::get_next_payment_date ( $ParentOrder, $ProductId  );  
       }
    }

Вам не нужно делатьчто-нибудь еще.Если вы пишете свой собственный пакет подписки, то вам нужно записывать звонки и хранить покупки. Таким образом, рассчитать свои собственные даты истечения срока действия.

Подписка на woocommerce, продолжительность и период продления устанавливаются в соответствии с определением продуктов.

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