Skip to main content

Example of REST API

To place an order using the Reward Points, you have to complete the following preconditions:

  • The customer should be registered and logged in, as the module doesn't work with guest customers
  • You should have at least one configured and enabled Payment method: Stores -> Settings -> Configuration -> Sales -> Payment Methods
  • Also, there should be at least one configured and enabled Shipping method on Stores -> Settings -> Configuration -> Sales -> Shipping Methods
  • To spend points, you have to configure a Spending rule according to your requirements: Reward Points -> Spending Rules
  • Your customer as well should have points on his account

Our example below is intended to provide a step-by-step guide you can use on your store for placing an order using points.

  1. Create an integration in System -> Integrations and set Resource Access - all

  2. Firstly, you should get the admin's token:

curl -H "Content-Type: application/json" -XPOST "https://domain.com/index.php/rest/V1/integration/admin/token" -d'{"username":"<username>","password":"<password>"}'
  1. Then you should get the customer's cart:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPOST "https://domain.com/index.php/rest/V1/customers/<customerId>/carts"
  1. When we have got the cart ID, we can add an item on the cart: <cartId> - current active cart ID returned in previous request
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPOST "https://domain.com/index.php/rest/V1/carts/<cartId>/items" -d'{"cart_item":{"quote_id":<cartId>,"sku":"24-MB03","qty":1,"price":19.00}}'
  1. After adding the items, we can then check out for the total information:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPOST "https://domain.com/index.php/rest/V1/carts/<cartId>/totals-information" -d'{"cartId":<cartId>,"addressInformation":{"address":{"region": "New York","region_id": 43,"region_code": "NY","country_id": "US","street": ["123 Oak Ave"],"postcode": "10577","city": "Purchase","firstname": "Jane","lastname": "Doe","customer_id": 4,"email": "[email protected]","telephone": "(512) 555-1111","same_as_billing": 1}}}'
  1. Get the available shipping address:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPOST "https://domain.com/index.php/rest/V1/carts/<cartId>/estimate-shipping-methods" -d'{"address": {"region": "New York","region_id": 43,"region_code": "NY","country_id": "US","street": ["123 Oak Ave"],"postcode": "10577","city": "Purchase","firstname": "Jane","lastname": "Doe","customer_id": 4,"email": "[email protected]","telephone": "(512) 555-1111","same_as_billing": 1}}'
  1. Now we have the address where we want to receive the items ordered, we will be able to set down the necessary shipping method:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPOST "https:///domain.com/index.php/rest/V1/carts/<cartId>/shipping-information" -d'{"addressInformation": {"shipping_address": {"region": "New York","region_id": 43,"region_code": "NY","country_id": "US","street": ["123 Oak Ave"],"postcode": "10577","city": "Purchase","firstname": "Jane","lastname": "Doe","email": "[email protected]","telephone": "512-555-1111"},"billing_address": {"region": "New York","region_id": 43,"region_code": "NY","country_id": "US","street": ["123 Oak Ave"],"postcode": "10577","city": "Purchase","firstname": "Jane","lastname": "Doe","email": "[email protected]","telephone": "512-555-1111"},"shipping_carrier_code": "flatrate","shipping_method_code": "flatrate"}}'
  1. We can now add the reward points required:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPOST "https:///domain.com/index.php/rest/V1/rewards/<cartId>/apply/1148"
  1. Get the payment methods available:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XGET "https:///domain.com/index.php/rest/V1/carts/<cartId>/payment-methods"
  1. Once we have checked the payment methods we have available, - we can pick one from them:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPUT "https:///domain.com/index.php/rest/V1/carts/<cartId>/selected-payment-method" -d'{"method": {"method": "checkmo"}}'
  1. All required steps are complete and we can place order:
curl -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -XPUT "https:///domain.com/index.php/rest/V1/carts/<cartId>/order"