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,
);