How to Build an Order Ahead application
Order Ahead App can be built to work with Poynt in two ways broadly:
1) Poynt Register App Integration
2) Native Order Ahead App Integration
Poynt Register App Integration
An Order Ahead application can be built to work with the on-terminal Poynt Register application. Here are the steps:
1. Merchant authorizes the App
Authorization flow is described under the Poynt Cloud API section. In this particular case, merchant authorizes access to ‘Orders’ and ‘Customers’ resources as shown below.
2. Merchant completes the web-flow using the Merchant Login URL to grant permissions to the App
The web flow is further described under Integrating with Cloud APIs.
3. Create a Customer
Sample Request:
curl -X POST \
https://services.poynt.net/businesses/{businessId}/customers \
-H 'Authorization: Bearer <access-token>' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'api-version: 1.2' \
-d '{
"emails": {
"PERSONAL": {
"emailAddress": "satya+test@poynt.com"
}
},
"firstName": "Satya",
"lastName": "Vedule",
"attributes": {"imageUrl": "https://bit.ly/2IjahBz"}
}'
Response:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"businessPreferences":{
},
"id":45494460,
"emails":{
"PERSONAL":{
"primary":False,
"createdAt":"2018-06-20T20:58:15Z",
"updatedAt":"2018-06-20T20:58:15Z",
"status":"ADDED",
"type":"PERSONAL",
"id":939970,
"emailAddress":"satya+test1@poynt.com"
}
},
"attributes":{
"imageUrl":"https://bit.ly/2IjahBz"
},
"firstName":"Satya",
"lastName":"Vedule",
"businessId":"{businessId}"
}
The id
value (in this case 45494460
) corresponds to the customerId
. This value can be passed to the Order for displaying the customer details.
4. Create an Order
Sample Request:
curl -X POST \
https://services.poynt.net/businesses/{businessId}/orders \
-H 'Authorization: Bearer <access-token>' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'api-version: 1.2' \
-d '{
"items":[
{
"status":"ORDERED",
"fulfillmentInstruction":"PICKUP_INSTORE",
"clientNotes":"to be picked from store# 121",
"code":"Cr",
"name":"Croissant",
"unitOfMeasure":"EACH",
"popular":true,
"unitPrice":195,
"tax":32,
"quantity":2.0
}
],
"amounts": {
"taxTotal":32,
"discountTotal":0,
"subTotal":390,
"currency":"USD"
},
"context": {
"source":"WEB",
"transactionInstruction":"EXTERNALLY_PROCESSED",
"businessId":"{businessId}", // businessId of the merchant
"storeId":"{storeId}", // storeId of the business
"storeDeviceId":"{appId}" // AppId of the developer app
},
"customerUserId": 45494460, //customerId from the Create Customer call.
"statuses": {
"status":"OPENED"
}
}'
Order object Request Response:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
"createdAt": "2018-06-22T19:45:41Z",
"updatedAt": "2018-06-22T19:45:41Z",
"context": {
"employeeUserId": 0,
"storeDeviceId": "{appId}",
"transactionInstruction": "EXTERNALLY_PROCESSED",
"source": "WEB",
"businessId": "{businessId}",
"storeId": "{storeId}"
},
"items": [
{
"createdAt": "2018-06-22T19:45:41Z",
"updatedAt": "2018-06-22T19:45:41Z",
"quantity": 2,
"fulfillmentInstruction": "PICKUP_INSTORE",
"id": 1,
"unitPrice": 195,
"discount": 0,
"fee": 0,
"tax": 32,
"status": "FULFILLED",
"name": "Croissant",
"clientNotes": "to be picked from store# 121",
"unitOfMeasure": "EACH"
}
],
"customerUserId": 45494460,
"amounts": {
"subTotal": 390,
"discountTotal": 0,
"taxTotal": 32,
"netTotal": 422,
"currency": "USD"
},
"statuses": {
"fulfillmentStatus": "FULFILLED",
"status": "OPENED",
"transactionStatusSummary": "EXTERNALLY_PROCESSED"
},
"id": "xxxxxxx"
}
The Order has been successfully created.
A Poynt Cloud Message is sent to the terminal for the newly created order.
Order can be viewed from Order Inbox in the Register app.
Native Order Ahead App Integration
A Native Order Ahead app can be built to work with Poynt. Here are the steps involved:
1. Implicit Authorization
Following permissions should be included in the app Android manifest:
Order Service: poynt.permission.ORDER_SERVICE
Customer Service: poynt.permission.CUSTOMER_SERVICE
When a merchant subscribes to the App, these permissions are implicitly granted to the app.
2. Create Customer and Create Order
Create a Customer followed by an Order as described in the previous article of Order ahead integration using Register app(Steps 3 and 4).
2. Register to listen to order details intent in your app’s activity
When the user taps on the Order Notification on the terminal, the Intents.ACTION_GO_TO_ORDER_DETAILS
can be handled to create a custom Order details view in your app.