Woocommerce $order->;获取\结帐\付款\ url()产品和订阅的不同行为

Woocommerce $order->;获取\结帐\付款\ url()产品和订阅的不同行为,woocommerce,payment,woocommerce-subscriptions,Woocommerce,Payment,Woocommerce Subscriptions,我正在尝试按代码创建订阅订单。我正在使用最新版本的Woocommerce和Woocommerce订阅插件。它工作正常,但当订单包含订阅产品时,我得到了不同的订单支付页面。 当订单包含订阅时,我得到了所有的账单和发货字段。如果订单只包含简单的产品,我会得到一份关于订单和付款方式的摘要。我希望订阅也有同样的行为 示例链接: 我使用get\u checkout\u payment\u url方法生成链接,在这两种情况下我都得到了类似的链接,但是如果订单包含订阅,我会立即重定向到购物车页面 有人面临同

我正在尝试按代码创建订阅订单。我正在使用最新版本的Woocommerce和Woocommerce订阅插件。它工作正常,但当订单包含订阅产品时,我得到了不同的订单支付页面。 当订单包含订阅时,我得到了所有的账单和发货字段。如果订单只包含简单的产品,我会得到一份关于订单和付款方式的摘要。我希望订阅也有同样的行为

示例链接:

我使用get\u checkout\u payment\u url方法生成链接,在这两种情况下我都得到了类似的链接,但是如果订单包含订阅,我会立即重定向到购物车页面

有人面临同样的问题吗? 谢谢你的帮助

致以最良好的祝愿, 标记


您是否设法解决了此问题?您是否设法解决了此问题?

    $start_date = $order_data['created_at'];

    $billing_address = array(
      'first_name' => $order_data['first_name'],
      'last_name'  => $order_data['last_name'],
      'company'    => $order_data['company_name'],
      'email'      => $order_data['email'],
      'phone'      => $order_data['phone_number'],
      'address_1'  => $order_data['street_address'],
      'address_2'  => $order_data['apartment_suite_unit'],
      'city'       => $order_data['town'],
      'postcode'   => $order_data['zip_code'],
      'country'    => $order_data['country']
  );

  $shipping_address = array(
      'first_name' => $order_data['shipping_first_name'],
      'last_name'  => $order_data['shipping_last_name'],
      'company'    => $order_data['shipping_company_name'],
      'address_1'  => $order_data['shipping_street_address'],
      'address_2'  => $order_data['shipping_apartment_suite_unit'],
      'city'       => $order_data['shipping_town'],
      'postcode'   => $order_data['shipping_zip_code'],
      'country'    => $order_data['shipping_country']
  );

   $email = $order_data['email'];
   if (!$user = get_user_by('email', $email)) $user = get_user_by('id', wc_create_new_customer($email));

  $order = wc_create_order(array('customer_id' => $user->ID));
  update_post_meta($order->ID, "phone_order", true);

  foreach ($order_data['ordered_items'] as $item) {
    $product = wce_get_product($item, $currency);
    $order->add_product( $product, $item['quantity']);
  }

  $order->set_address( $billing_address, 'billing' );
  $order->set_address( $shipping_address, 'shipping' );
  $order->set_currency( $currency );

  $order->set_payment_method( $order_data['payment_method'] );

  $order->calculate_totals();
  $order->calculate_taxes();

  // Előfizetés
  foreach ($order_data['ordered_items'] as $item) {
        if (WC_Subscriptions_Product::is_subscription($item['id'])) {
            $product = wce_get_product($item, $currency);  
            $sub = wcs_create_subscription(array('order_id' => $order->id, 'billing_period' => $period, 'billing_interval' => $interval, 'start_date' => $start_date));
            $sub->add_product( $product, $item['quantity']/*, $args*/);
            $sub->set_address( $billing_address, 'billing' );
            $sub->set_address( $shipping_address, 'shipping' );

            $sub->calculate_totals();
        }
    }

  $payment_link = $order->get_checkout_payment_url();

  return $payment_link;
}