$ order-> get_checkout_payment_url () различное поведение для продукта и подписки - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать порядок подписки по коду. Я использую последнюю версию плагинов Woocommerce и Woocommerce Subscription. Работает нормально, но у меня появилась другая страница оплаты заказа, когда заказ содержит продукт подписки. Когда заказ содержит подписку, я получил все поля для выставления счетов и доставки. Если заказ содержит только простые продукты, я получил сводку о заказе и способах оплаты. Мне бы хотелось, чтобы такое же поведение было и для подписок.

Пример ссылки: https://test.eu/hu/cart/order-pay/4467/?pay_for_order=true&key=wc_order_161651fdsf56

Я создаю ссылку с помощью метода get_checkout_payment_url, и в обоих случаях я получаю аналогичную ссылку, но если заказ содержит подписку, я сразу же перенаправляюсь на страницу корзины.

Кто-нибудь сталкивался с такой же проблемой? Спасибо за любую помощь!

С наилучшими пожеланиями, Mark


    $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;
}

...