Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

How to Guides

Create Quotes

Every delivery attempt at an RBI app is sent in the same format to the Create Quote webhook you provide us.

Step 1. Access your Customer Account


Step 2. Access store locator

By adding /store-locator to the base URL.

image-20240729-073541.png

Step 3. Access Delivery

image-20240729-074428.png

Step 4. Input Delivery address

image-20240729-074643.png

Step 5. Fill address details and click Deliver Here

image-20240729-074922.png

Create Test Orders

  1. Create Quotes

    1. Address within Delivery Area

    2. Address outside Delivery Area

  2. Create Test Orders

1. Integration Scope

1.1 Delivery orders created in RBI App and Delivered by 1P or 3P Delivery Partners

Delivery UAT 1.png

Action

Tests

Expected Vendor Behavior

Expected Result

Eligible restaurant selection

Authenticated user inputs address on restaurant search in Whitelabel App

Vendor answers successfully to DELIVERY_QUOTE_CREATE webhook (docs).

Desired restaurant is selected for delivery.

Order confirmation

Authenticated user navigates to checkout page

The store must remain eligible

Vendor answers successfully to DELIVERY_QUOTE_APPLY webhook (docs).

The delivery fee amount is displayed on order description at the checkout page.

Order creation

Authenticated user clicks on “Continue” on the checkout page, and confirms selecting any payment method by clicking “Place Secure Order”.

Vendor answers successfully to DELIVERY_CREATE webhook (docs).

  • User navigates to order confirmation page.

  • First two progression status on the order are checked: “Order placed”, and “Order being prepared”.

  • ETA field must be correct as informed by vendor

Order is sent to kitchen

Delivery vendor request to move the order to kitchen

Vendor triggers a FIRE_ORDER event by sending a request to the fire order endpoint (docs).

Order is sent to kitchen, for preparation.

It can be validated by the GET request API

Order is picked up by driver

User remains in the order confirmation page, meanwhile the driver picks the order up at the restaurant.

Vendor sends a request to the delivery event endpoint (docs), updating the delivery to ORDER_PICKED_UP status.

“Driver Enroute” state is displayed in the order confirmation page.

Order is delivered to customer address

User remains in the order confirmation page, driver drops order at customer address.

Vendor sends a request to the delivery event endpoint (docs), updating the delivery to ORDER_DROPPED_OFF status.

“Delivered” state is displayed in the order confirmation page.

Alternative flows

Pre-order scheduling

User places a order with “Delivery Time“

Vendor should receive the DELIVERY_CREATE event with the fireOrderInSeconds field

Order must be send to the kicketn only in the right delivery time indicated in the fireOrderInSeconds field

Restaurant not eligible for selection

Inputs address on restaurant search in Whitelabel App.

The store tested must not be eligible

Vendor should not receive request for DELIVERY_QUOTE_CREATE for that restaurant.

Another restaurant is selected for delivery or “no-delivery-stores” modal should be displayed if any restaurant is eligible.

Quote failed by unavailability reason

Inputs address on restaurant search in Whitelabel App.

Vendor should receive the quote request DELIVERY_QUOTE_CREATE webhook (docs), but must return status QUOTE_ERROR with some of the reasons:

  • NO_DRIVERS_AVAILABLE

  • NUMBER_OF_ORDERS

  • REDUCED_CAPACITY

  • RESTAURANT_NEAR_TO_CLOSE

  • TECHNICAL_ISSUES

  • UNREACHABLE_RESTAURANT

  • WEATHER

Another restaurant is selected for delivery or “no-delivery-stores” modal should be displayed if any restaurant is eligible.

Order confirmation when the restaurant is no longer eligible

An authenticated user, select a restaurant, add some item to the cart and navigate to the checkout page.

The store should no longer be eligible

Vendor should not receive request for DELIVERY_QUOTE_CREATE for that restaurant.

A modal should be displayed to inform that the restaurant is unavailable.

Order is cancelled by delivery vendor

Order is cancelled during the delivery process.

Vendor sends a request to the delivery event endpoint (docs), updating the delivery to ORDER_CANCELLED status and another request to update the order status CANCELED (docs).

  • Ordered is cancelled, RBI broadcasts this status through Delivery (docs) / Order (docs) status webhook events.

  • The cancelled modal is displayed on the confirmation page

  • Money is refunded if online payment

Order is cancelled by another party (POS, RBI, etc.)

Order is cancelled by POS, RBI, or a different party than the delivery vendor.

We can simulate it by “Order Event” endpoint (docs)

Vendor reacts to delivery or order status changes from DELIVERY_EVENT (docs) / ORDER_EVENT (docs) webhooks.

Vendor must cancel the order and send delivery event (docs) to indicate that the delivery order has been canceled in full.

  • Consistent final status of order, and delivery, across all integrated systems.

  • The cancelled modal is displayed on the confirmation page

  • Money is refunded if online payment

Driver cancels the trip before collecting the order

After the driver has been assigned to deliver the order, he cancels the trip

Vendor should send the DRIVER_UNASSIGNED event (docs)

No order status change

It can be validated by the GET request API

Driver cancels the trip after collecting the order

After the driver has been picked up the order, he cancels the trip

Vendor should send the ORDER_CANCELLED event (docs)

  • Ordered is cancelled, RBI broadcasts this status through Delivery (docs) / Order (docs) status webhook events.

  • The cancelled modal is displayed on the confirmation page

  • Money is refunded if online payment

Optional flows

Set restaurant to available/unavailable

When the delivery provider changes store availability

It is used when the store stops receiving new delivery orders for a period of time (ie: Pause mode).

Send a event to the RBI to notify the change (docs)

Receive the event from the vendor

Refund order

The order paid with online payment is canceled by the vendor and the customer receives a refund

Vendor should send a request to refund the order (docs)

The refund must be made successfully

Create a loyalty vouncher

The order is delivered with problem (ie: missing fry), manager send a voucher to the customer by loyalty offer.

Vendor should send a request to create a voucher to the customer loyalty account (docs)

A voucher must be create in the customer loyalty account.

We consider the store ineligible for delivery if any criteria is true:

  • No mobile ordering (Sanity)

  • Restaurant closed (Delivery hours)

  • Restaurant heartbeat offline

  • Restaurant not enabled for delivery (Sanity)

1.2 Delivery orders created by Aggregators and Delivered by 3P Delivery Partners

This case is valid when the delivery partner acts as an aggregator of aggregators receiving injection of orders from aggregators such as UberEats.

Delivery UAT (8).png

Action

Tests

Expected Vendor Behavior

Expected Result

Order Injection

User places an order in an aggregator

Vendor injects, and integrates, the order to the POS system.

Vendor injects order in RBI, using the “Insert an order without price validations“ endpoint that inject the order with COMMITTED state (docs).

RBI, and POS system, have the order information stored.

The order must have the deliveryMode as MANAGED_BY_STORE.

Order State Transition

Order progresses to different states, such as: PREPARING, PREPARED, DONE, ERROR, or CANCELLED.

Vendor notifies RBI of the order state transition, by sending a request to the order event endpoint (docs).

RBI is aware of the most up to date state of the order.

Order Delivery State Transition

Order delivery progresses to different states, such as: "DRIVER_ASSIGNED" "DRIVER_STARTING" "DRIVER_AT_STORE" "ORDER_PICKED_UP" "DRIVER_AT_CUSTOMER" "ORDER_DROPPED_OFF" "DRIVER_UNASSIGNED" "ORDER_CANCELLED" "ERROR"

Vendor notifies RBI of the order delivery state transition, by sending a request to the delivery event endpoint (docs).

RBI is aware of the most up to date state of the order delivery.

1.3 Delivery orders created and Delivered by Aggregators

This case is valid when the aggregators integrate directly with partners API and the delivery responsibility lies with the aggrregator.

Delivery UAT (6) 2.png

Action

Tests

Expected Vendor Behavior

Expected Result

Order Injection

User places an order in an aggregator

Aggregator must be call the order injection APIs.

Vendor answers successfully to DELIVERY_CREATE webhook (docs).

The order must have the deliveryMode as MANAGED_EXTERNALLY.

The delivery vendor screen must not be able to change the order.

The order is a read-only, managed by the aggregator.

Order State Transition

Order progresses to different states, such as: PREPARING, PREPARED, DONE, ERROR, or CANCELLED.

Vendor is notified by the order webhooks (docs).

RBI and the delivery vendor is aware of the most up to date state of the order.

Order Delivery State Transition

Order delivery progresses to different states.

Vendor is notified by the delivery webhooks (docs).

The status must be reflected in the RBI and delivery vendor

1.4 Open tickets

Delivery UAT (7).png

Action

Tests

Expected Vendor Behavior

Expected Result

Open a support ticket for the store

User open a complain in the WL app

Vendor answers successfully to STORE_SUPPORT_TICKET_EVENT webhook (docs).

A ticket must be open to the store

Open a general support ticket

The store manager opens a ticket to the market support team

Vendor send a request to open a support ticket (docs)

RBI receives the request and call the webhook GENERAL_SUPPORT_TICKET_EVENT to create the ticket on the support system.

A ticket on the support system must be created

2. Vendor interface scope

2.1 Validate some bussiness scenarios in the vendor side

Action

Tests

Expected Vendor Behavior

Expected Result

Order is sent to kitchen (trigger: DMP action)

Restaurant operator moves the order to kitchen using the DMP interface

Vendor receives request from DMP, to fire the order, then subsequently vendor triggers a FIRE_ORDER event, by sending a request to the fire order endpoint (docs).

Order is sent to kitchen, for preparation.

Order is sent to kitchen (trigger: driver geolocation)

Driver arrives within range of restaurant.

Vendor triggers a FIRE_ORDER event, by sending a request to the fire order endpoint (docs).

Order is sent to kitchen, for preparation.

Display the order number in the tablet

Display the order in the receipt printed

References

/wiki/spaces/TRX/pages/4372824251

/wiki/spaces/TRX/pages/4345594036

Burger King Saudi Arabia (BK KSA)

Burger King United Arab Emirates (BK UAE)

Delivery State Flows

  • No labels