Make sure you have consumed the below APIs before requesting integration team for the sign-off -
- Order Relay
- Order Status Update from POS to UP
- Order Status Update from UP to POS
- Rider Status Update
- Adding/updating the stores
- Store Add/Update Callback
- Store Actions
- Stores Actions Callback
- Manage Catalogue Update
- Catalogue ingestion callback
- Item/Option – actions
- Item Actions Callback
- Option Actions Callback
- Category Timing Groups
- Category Timing Group Ingestion Callback
- Setting up webhooks
- Satellite SDK Widget(optional)
Important points to remember while validating the integration development at POS end.
- These pieces of information should show on POS frontend/screen along with the ordered item details,
- Order_id of the aggregator
- payment type
- delivery rider contact details
- current status of the order
- current status of the delivery rider
- Merchant Sponsored Discount
- Merchant Sponsored Discount = (discount - total_external_discount). Make sure this logic is handled at the POS end for the merchant to show how much merchant sponsored discount has been applied for an order. Also, show the same on the POS screen and bill.
- Merchant receivable amount from aggregators = (order_total + total_external_discount). This will give an estimate of what is the total receivable money from the aggregators. This will not include the charges in which aggregators are put for merchants on each order.
- Placed and cancelled order status from aggregators should show as a pop-up notification/sound notification on POS screen,
- Validate order level, as well as item-level taxes and charges, are taken care and the same is visible in the POS screen.
- Validate the ordered items with options, quantity, taxes, charges, and discount information is showing correctly on the POS screen.
- Check all the mandatory order status update - Acknowledged, Food Ready, Cancelled is being passed from the POS system and the status has been updated in the UP system.
- Food Ready - the status update should be passed as soon as the food is prepared in the kitchen.
- The POS has to push only the online selling menu to UrbanPiper system.
- Use https://staging.urbanpiper.com as host for staging environment and use https://api.urbanpiper.com as host for production environment while making the request.
- Make sure you have made a provision for configuring the different API-keys for different brands. If you have considered using the multi-brand integration, make sure you have considered using the biz_id.
- If you have merchants who are running multiple brands in the same outlet, then make sure you have multi-brand integration with us. That is the same API-keys will be associated with multiple brands and you will pass one more header to insert the biz_id value of the brand under - x-upr-biz-id. The biz_id will be shared by the UrbanPiper team.
- Check if the requests are being made to UrbanPiper APIs is of https scheme.
- Make sure the webhook data pushed to POS endpoints are returning the response within 5 seconds.
- Check the time taken to show the orders in the POS screen and time taken for status update happening from POS to the UP system. The changes should reflect within 10 seconds.
- Make sure POS has handled the throttling limit for all the APIs.
- Make sure the retry mechanism for a failed response from UrbanPiper should have max. of 3 times only.
- Make sure the Swiggy Cancellation Error Response use case has been handled.
- The request call to our APIs should always happen as a bulk request. The objects should be sent in bulk while making a request to our system.
- The POS Menu catalogue IDs for an item should be the same for all the stores for a single brand - Federated Structure.
- The same item should not have different prices for different aggregators. Basically, the price for the item should be the same across all the platforms.
- Make sure you have simulated all the payloads shared in the Postman collection for Order Relay and Rider Status Update webhook.
If you have any queries to ask, feel free to drop an email to email@example.com.