Skip to content

Instantly share code, notes, and snippets.

@johnotu
Created December 7, 2018 17:50
Show Gist options
  • Save johnotu/455e5747569f5d649b98ef7c61d6df3e to your computer and use it in GitHub Desktop.
Save johnotu/455e5747569f5d649b98ef7c61d6df3e to your computer and use it in GitHub Desktop.
Payment for Messenger - Handle Bot Postbacks
/**
* Handle postbacks received by bot server
*
*/
'use strict';
// Assume you have these functions defined and exported in your project folder
const sendTextMessage = require('../actions/sendTextMsg');
const processMobilemoney = require('./process-mobilemoney-gh');
const receivedPostback = (event, pageObj) => {
const senderID = event.sender.id;
const payload = event.postback.payload;
if (payload.split('_')[0] === 'pay') {
// Get order details for processing
const payData = payload.split('_');
const payMethod = payData[1];
const orderObj = {
orderNumber: payData[2],
orderTotal: payData[3],
orderOwnerPhone: payData[4]
};
switch (payMethod) {
case 'cashondelivery':
sendTextMessage({
recipientId: senderID,
messageText: `You have choosen to pay Cash on Delivery of order #${orderObj.orderNumber}. Expect your delivery soon!`,
page_token: pageObj.page_token
});
break;
case 'mobilemoney':
// Get number prefix, network and route for mobile money processing
const numberPrefix = orderObj.orderOwnerPhone.slice(0, 3);
const network = '';
const route = '';
processMobilemoney(senderID, orderObj, numberPrefix, network, route, pageObj);
break;
// You can add more cases for other payment method implementations here
}
}
};
module.exports = receivedPostback;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment