1

I am creating an order for a guest user using Magento rest API.

Approach:

  1. Create a quote
  2. Add items to the cart
  3. Prepare checkout - Adding billing and shipping information for the order
  4. Create an order - Adding payment information while creating order

I am following the above steps to create order, When I do the final step its showing error customer email is missing.

URL: 
/rest/V1/carts/10/order
Payload: {

"paymentMethod": {
"method": "checkmo"
}
}

Response:
{
    "message": "The customer email is missing. Enter and try again."
}

How to add customer details in guest user order?

Please do need full for this scenario

1 Answer 1

2

Create order for guest customer using Rest API

Get the admin token:

EndPoint : http://magento.host/index.php/rest/V1/integration/admin/token

Method : POST

Headers:

Content-Type : application/json

Body json:-

{"username":"API_USER","password":"API_PASSWORD"}

Response:-

16fsjy4242fssdsfsxipegpr9gpxf7p2424bx91sbbje0mg

This token will be used for the further steps while creating order through api.

Create empty cart for the guest customer :

EndPoint : http://magento.host/index.php/rest/V1/guest-carts/

Method : POST

Headers:-

Content-Type : application/json

Authorization : Bearer {TOKEN}

It will return a alphanumeric string, which is the cart id, this will be used to add/update/delete items form the cart.

Add/Update items in cart :

Endpoint : http://magento.host/index.php/rest/V1/guest-carts/{cartId}/items

i.e. http://magento.host/index.php/rest/V1/guest-carts/4522ebc7d219rre415a8ad1eewr22f73b55/items

Method : POST

Headers:

Content-Type : application/json

Authorization : Bearer {TOKEN}

Body json:

{ "cartItem": { "quote_id": "4522ebc7d219rre415a8ad1eewr22f73b55", "sku": "Item SKU", "qty": 1 } }

Note :- It will return the item_id which can be used later to update/delete item from the cart. To update shopping item use the following request in body json on the same endpoint as above :-

{ "cartItem": { "quote_id": "4522ebc7d219rre415a8ad1eewr22f73b55", "item_id": 1139, "sku": "Item SKU", "qty": 2 } }

Add shipping information to the cart :

EndPoint : http://magento.host/index.php/rest/V1/guest-carts/{cartId}/shipping-information

Method : POST

Headers:

Content-Type : application/json

Authorization : Bearer {TOKEN}

Body json :-

{ "addressInformation": { "shippingAddress": { "country_id": "US", "street": [ "Street Address" ], "company": "Company", "telephone": "2313131312", "postcode": "", "city": "California", "firstname": "john", "lastname": "harrison", "email": "[email protected]", "sameAsBilling": 1 }, "billingAddress": { "country_id": "US", "street": [ "Street Address" ], "company":"Company", "telephone": "2313131312", "postcode": "", "city": "California", "firstname": "john", "lastname": "harrison", "email": "[email protected]" }, "shipping_method_code": "flatrate", "shipping_carrier_code": "flatrate" } }

Note :- Here flatrate is the shipping method code, you can change whatever shipping method you are using for your store. It will return the payment methods available with entire cart information.

Response :-

{ "payment_methods": [ { "code": "checkmo", "title": "Check / Money Order" } ], "totals": { "grand_total": 40.5, "base_grand_total": 40.5, "subtotal": 40, "base_subtotal": 40, "discount_amount": 0, "base_discount_amount": 0, "subtotal_with_discount": 40, "base_subtotal_with_discount": 40, "shipping_amount": 0.5, "base_shipping_amount": 0.5, "shipping_discount_amount": 0, "base_shipping_discount_amount": 0, "tax_amount": 0, "base_tax_amount": 0, "weee_tax_applied_amount": null, "shipping_tax_amount": 0, "base_shipping_tax_amount": 0, "subtotal_incl_tax": 40, "shipping_incl_tax": 0.5, "base_shipping_incl_tax": 0.5, "base_currency_code": "USD", "quote_currency_code": "USD", "items_qty": 2, "items": [ { "item_id": 14437, "price": 10, "base_price": 10, "qty": 2, "row_total": 40, "base_row_total": 40, "row_total_with_discount": 0, "tax_amount": 0, "base_tax_amount": 0, "tax_percent": 0, "discount_amount": 0, "base_discount_amount": 0, "discount_percent": 0, "price_incl_tax": 10, "base_price_incl_tax": 10, "row_total_incl_tax": 40, "base_row_total_incl_tax": 40, "options": "[]", "weee_tax_applied_amount": null, "weee_tax_applied": null, "name": "Baby Bag" } ], "total_segments": [ { "code": "subtotal", "title": "Subtotal", "value": 40 }, { "code": "flatrate", "title": "Flat Rate", "value": 0.5 }, { "code": "tax", "title": "Tax", "value": 0, "extension_attributes": { "tax_grandtotal_details": [] } }, { "code": "grand_total", "title": "Grand Total", "value": 40.5, "area": "footer" } ] } }

Add payment information and place the order :

EndPoint : http://magento.host/index.php/rest/V1/guest-carts/{cartId}/order

Method : PUT

Headers:

Content-Type : application/json

Authorization : Bearer {TOKEN}

Body json:-

{ "paymentMethod": { "method": "checkmo" } }

It will return the order id, now you can check the order has been created in the admin.

Reference: https://github.com/rakeshmagento/magento2-create-order-for-guest-customer-rest-api#1-get-the-admin-token--

I hope this will help

1
  • I followed the same steps for order creation but the final step it's showing error - customer email is missing. Apr 17, 2019 at 8:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.