WooCommerece RestAPI - NodeJS

21 Views Asked by At

Im using wc rest api with nodejs and when trying to post new order via "orders" with method POST, I simply get response containing all the existing orders.. Even if not providing any request body, or providing false request body - same response always:

 WooCommerce.post("orders", {
    customer_id: 2000,
  })
    .then((response) => {
      res.send(response.data);
    })
    .catch((err) => {
      res.status(500).send(e.response.data);
    });

Response:

[
    {
        "id": 32941,
        "parent_id": 0,
        "status": "pending",
        "currency": "ILS",
        "version": "5.3.1",
        "prices_include_tax": false,
        "date_created": "2022-02-17T11:23:28",
        "date_modified": "2022-02-17T11:24:39",
        "discount_total": "0.00",
        "discount_tax": "0.00",
        "shipping_total": "0.00",
        "shipping_tax": "0.00",
        "cart_tax": "0.00",
        "total": "9.90",
        "total_tax": "0.00",
        "customer_id": 110,
        "order_key": "wc_order_Gv1ZIlKqqMKFt",
        "billing": {
            "first_name": "",
            "last_name": "",
            "company": "",
            "address_1": "",
            "address_2": "",
            "city": "",
            "state": "",
            "postcode": "",
            "country": "",
            "email": "[email protected]",
            "phone": ""
        },
        "shipping": {
            "first_name": "",
            "last_name": "",
            "company": "",
            "address_1": "",
            "address_2": "",
            "city": "",
            "state": "",
            "postcode": "",
            "country": ""
        },
        "payment_method": "",
        "payment_method_title": "",
        "transaction_id": "",
        "customer_ip_address": "",
        "customer_user_agent": "",
        "created_via": "admin",
        "customer_note": "",
        "date_completed": null,
        "date_paid": null,
        "cart_hash": "",
        "number": "32941",
        "meta_data": [],
        "line_items": [
            {
                "id": 3267,
                "name": "מלפפון",
                "product_id": 32409,
                "variation_id": 0,
                "quantity": 1,
                "tax_class": "",
                "subtotal": "9.90",
                "subtotal_tax": "0.00",
                "total": "9.90",
                "total_tax": "0.00",
                "taxes": [],
                "meta_data": [],
                "sku": "10864",
                "price": 9.9,
                "parent_name": null
            }
        ],
        "tax_lines": [],
        "shipping_lines": [],
        "fee_lines": [],
        "coupon_lines": [],
        "refunds": [],
        "date_created_gmt": "2022-02-17T09:23:28",
        "date_modified_gmt": "2022-02-17T09:24:39",
        "date_completed_gmt": null,
        "date_paid_gmt": null,
        "currency_symbol": "₪",
        "_links": {
            "self": [
                {
                    "href": "https://XXX.XXX.XXX/wp-json/wc/v3/orders/32941"
                }
            ],
            "collection": [
                {
                    "href": "https://XXX.XXX.XXX/wp-json/wc/v3/orders"
                }
            ],
            "customer": [
                {
                    "href": "https://XXX.XXX.XXX/wp-json/wc/v3/customers/110"
                }
            ]
        }
    }
]

Please be aware that I've masked some data :)

1

There are 1 best solutions below

0
RazProd On
WooCommerce.post("orders?_method=POST", order)
    .then((response) => {
      res.send(response.data);
    })
    .catch((e) => {
      console.log(e);
      res
        .status(e?.response?.status || 500)
        .send(e?.response?.statusText || e?.response?.data || "Error!");
    });

Found on google that need to use native http methods like get or post and pass in the param ?_method=METHOD to define what method to use.... Working.