WC_Helper_Order::create_order PHP Method

create_order() public static method

Create a order.
Since: 2.4
public static create_order ( $customer_id = 1 ) : WC_Order
return WC_Order Order object.
    public static function create_order($customer_id = 1)
    {
        // Create product
        $product = WC_Helper_Product::create_simple_product();
        WC_Helper_Shipping::create_simple_flat_rate();
        $order_data = array('status' => 'pending', 'customer_id' => $customer_id, 'customer_note' => '', 'total' => '');
        $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
        // Required, else wc_create_order throws an exception
        $order = wc_create_order($order_data);
        // Add order products
        $order->add_product($product, 4);
        // Set billing address
        $order->set_billing_first_name('Jeroen');
        $order->set_billing_last_name('Sormani');
        $order->set_billing_company('WooCompany');
        $order->set_billing_address_1('WooAddress');
        $order->set_billing_address_2('');
        $order->set_billing_city('WooCity');
        $order->set_billing_state('NY');
        $order->set_billing_postcode('123456');
        $order->set_billing_country('US');
        $order->set_billing_email('[email protected]');
        $order->set_billing_phone('555-32123');
        // Add shipping costs
        $shipping_taxes = WC_Tax::calc_shipping_tax('10', WC_Tax::get_shipping_tax_rates());
        $rate = new WC_Shipping_Rate('flat_rate_shipping', 'Flat rate shipping', '10', $shipping_taxes, 'flat_rate');
        $item = new WC_Order_Item_Shipping();
        $item->set_props(array('method_title' => $rate->label, 'method_id' => $rate->id, 'total' => wc_format_decimal($rate->cost), 'taxes' => $rate->taxes, 'meta_data' => $rate->get_meta_data()));
        $order->add_item($item);
        // Set payment gateway
        $payment_gateways = WC()->payment_gateways->payment_gateways();
        $order->set_payment_method($payment_gateways['bacs']);
        // Set totals
        $order->set_shipping_total(10);
        $order->set_discount_total(0);
        $order->set_discount_tax(0);
        $order->set_cart_tax(0);
        $order->set_shipping_tax(0);
        $order->set_total(40);
        // 4 x $10 simple helper product
        $order->save();
        return $order;
    }

Usage Example

 /**
  * Test getting tokens associated with an order.
  * @since 2.6.0
  */
 function test_wc_payment_tokens_get_order_tokens()
 {
     $order = WC_Helper_Order::create_order();
     $this->assertEmpty(WC_Payment_Tokens::get_order_tokens($order->id));
     $token = WC_Helper_Payment_Token::create_cc_token();
     update_post_meta($order->id, '_payment_tokens', array($token->get_id()));
     $this->assertCount(1, WC_Payment_Tokens::get_order_tokens($order->id));
 }
All Usage Examples Of WC_Helper_Order::create_order