Skip to content

Bsp ​

Fingermark Bsp menu and ordering integration.

Framework ​

This library requires Node.

Overview ​

This library provide function handlers for Supersonic APIs that interact with bsp APIs.

Current implementation support site-availability, item-availability, preOrder, placeOrder, placeOrderWebhookCallback and cancel order.

Usage ​

All functions handlers return typed objects that will be consumed by the root function to complete the API execution.

ts
//site-availability
import { getSiteHandler } from '@fingermarkglobal/bsp';
import siteOrderJson from './data/site-order-handler-payload';
import { checkSitePayloadBsp, CheckSiteHandlerPayloadResponse } from '@fingermarkglobal/types';

const response: CheckSiteHandlerPayloadResponse = await getSiteHandler(
  siteOrderJson as checkSitePayloadBsp,
);
ts
//item-availability
import { itemAvailabilityHandler } from '@fingermarkglobal/bsp';
import itemOrderJson from './data/item-order-handler-payload';
import { ItemAvailabilityPayloadBsp, ItemHandlerPayloadResponse } from '@fingermarkglobal/types';

const response: ItemHandlerPayloadResponse = await itemAvailabilityHandler(
  itemOrderJson as ItemAvailabilityPayloadBsp,
);
ts
// pre-order.ts
import { preOrderHandler } from '@fingermarkglobal/bsp';
import preOrderJson from './data/pre-order-handler-payload';
import { PreOrderPayloadBsp, PreOrderHandlerPayloadResponse } from '@fingermarkglobal/types';

const response: PreOrderHandlerPayloadResponse = await preOrderHandler(
  preOrderJson as PreOrderPayloadBsp,
);
ts
// place-order.ts
import { placeOrderHandler } from '@fingermarkglobal/bsp';
import placeOrderJson from './data/place-order-handler-payload';
import { PlaceOrderPayloadBsp, PlaceOrderHandlerPayloadResponse } from '@fingermarkglobal/types';
import { EventEmitter } from 'events';

const orderUpdateEvent = new EventEmitter();

// async event emitter to complete order submission
setTimeout(() => {
  orderUpdateEvent.emit(OrderChangeEvent.STATUS_CHANGE, OrderStatus.SUBMITTED);
}, 1000);

const response: PlaceOrderHandlerPayloadResponse = await placeOrderHandler(
  placeOrderJson as PlaceOrderPayloadBsp,
  orderUpdateEvent,
);
ts
// place-order-webhook-callback.ts
import { placeOrderWebhookCallbackHandler } from '@fingermarkglobal/bsp';
import {
  PlaceOrderWebhookCallbackPayload,
  PlaceOrderWebhookCallbackHandlerPayloadResponse,
} from '@fingermarkglobal/types';

const body: PlaceOrderWebhookCallbackPayload = {
  status: 'sent-to-pos-completed',
  pickupDateTime: '1658349702389',
  orderId: '82xxr',
  osOrderId: '908',
};
const response: PlaceOrderWebhookCallbackHandlerPayloadResponse = await placeOrderWebhookCallbackHandler(
  body,
);
ts
// cancel-order.ts
import { cancelOrderHandler } from '@fingermarkglobal/bsp';
import cancelOrderJson from './data/pre-order-handler-payload';
import { PlaceOrderPayloadBsp, PlaceOrderHandlerPayloadResponse } from '@fingermarkglobal/types';

const response: PlaceOrderHandlerPayloadResponse = await cancelOrderHandler(
  cancelOrderJson as PlaceOrderPayloadBsp,
);