WooCommerce付款网关:订阅续订日期未更新

时间:2019-01-31 06:57:01

标签: woocommerce woocommerce-subscriptions

我正在编写一个处理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 :(得分: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订阅,时间长度和续订时间均在产品定义下设置。