【问题标题】:WooCommerce Payment Gateway: Subscription Renewal Date Not UpdatedWooCommerce 支付网关:未更新订阅续订日期
【发布时间】:2019-06-24 13:58:39
【问题描述】:

我正在编写一个处理 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 );
        }

这是一个简单的订阅,每年向客户收取固定费用。当我手动运行续订过程时,新订单和计划操作已成功创建,但日期未更新到下一年。我错过了什么?为什么成功完成的续订订单没有更新订阅的到期日期?

【问题讨论】:

    标签: woocommerce woocommerce-subscriptions


    【解决方案1】:

    假设您还没有找到答案,有几件事。您是在编写网关还是在编写网关和订阅流程?

    Woocommerce 有一个名为 Woocommerce 订阅的插件。它对网关进行所有计费,目前只有 Stripe/PayPal。如果您正在编写新网关并添加了 woocommerce 订阅,那么您需要做的就是查看订阅 ID 和下一个付款日期:

     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 订阅、时间长度和续订期限均在产品定义下设置。

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 2020-02-07
      • 2019-06-19
      • 2016-12-09
      • 2013-05-12
      • 2017-11-30
      • 2011-01-11
      • 2018-04-04
      • 2021-06-02
      相关资源
      最近更新 更多