Woocommerce订阅到期时的首期付款

时间:2018-11-27 10:20:53

标签: wordpress woocommerce woocommerce-subscriptions

我已为产品使用woo-commerce订阅插件。现在,客户希望如果订阅已过期,则将自动为相同的订单和客户启动新的订阅。我正在使用计划操作到期挂钩进一步进行操作。 现在,当订阅过期时,将使用我的脚本下方的脚本,该脚本将创建新的订单订阅。但最初的付款不适用于此。请您调查一下并帮助我。 这是我的过期钩子脚本之后的代码。

       /* after subscription expired */
        $subscription = wcs_get_subscription( $subscription_id );
      //  wcs_create_resubscribe_order( $subscription );
        $order = method_exists( $subscription, 'get_parent' ) ? $subscription->get_parent() : $subscription->order;
        $items = $order->get_items();
        foreach ( $items as $item ) {
               $order_id     = $order->get_order_number();
               $product_name = $item->get_name();
               $product_id   = $item->get_product_id();

               /* Get variation attribute based on product ID */
                $product = new WC_Product_Variable( $product_id );
                $variations = $product->get_available_variations();
                foreach ($variations as $variation) {
                     if($variation['attributes']['attribute_velg-antall'] == 'Custom'){
                        $variationID  = $variation['variation_id'];
                        $price_args   = number_format($variation['display_price'],2);

                     }
                }
            }
               $quantity      = 1;   
               $variation_id  =  (string)$variationID;
               $variation_factory = new WC_Product_Variation($variation_id);
               $variation_obj = $variation_factory->get_variation_attributes(); 
               $price_params  = array( 'variation' => $variation_obj, 'totals' => array( 'subtotal' => $price_args*$quantity, 'total' => $price_args*$quantity, 'subtotal_tax' => 0, 'tax' => 0 ) );


               $start_date = wcs_get_datetime_utc_string( wcs_get_objects_property( $order, 'date_created' ) );
               $period     = WC_Subscriptions_Product::get_period( $variation_id );
               $interval   = WC_Subscriptions_Product::get_interval( $variation_id );
               $sub        = wcs_create_subscription( array( 'order_id' => $order_id, 'billing_period' => $period, 'billing_interval' => $interval, 'start_date' => $start_date )) ;
               $sub->add_product( wc_get_product( $product_id ), $quantity, $price_params );
               $sub->calculate_totals();
               WC_Subscriptions_Manager::activate_subscriptions_for_order($order);

0 个答案:

没有答案
相关问题