$ order-> get_checkout_payment_url()产品和订阅的不同行为

时间:2019-06-17 20:07:33

标签: woocommerce payment woocommerce-subscriptions

我正在尝试通过代码创建订阅顺序。我正在使用最新版本的Woocommerce和Woocommerce订阅插件。它工作正常,但是当订单包含订阅产品时,我得到了不同的订单付款页面。 当订单包含订阅时,我得到了所有的帐单和运输字段。如果订单仅包含简单的产品,那么我将获得有关订单和付款方式的摘要。我希望订阅具有相同的行为。

示例链接: https://test.eu/hu/cart/order-pay/4467/?pay_for_order=true&key=wc_order_161651fdsf56

我使用get_checkout_payment_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;
}

0 个答案:

没有答案