UNPKG

paydunya

Version:
92 lines (82 loc) 2.47 kB
var Invoice = require('./invoice') , request = require('superagent') , Promise = require('bluebird') ; // Inherit invoice OnsiteInvoice.prototype = Object.create(Invoice.prototype); OnsiteInvoice.prototype.constructor = OnsiteInvoice; /** * OnsiteInvoice class * @param {object} setup Instance of paydunya.Setup * @param {object} store Instance of paydunya.Store */ function OnsiteInvoice(setup, store) { Invoice.call(this, setup, store); // call Invoice initializer this.baseURL = this.baseURL + '/opr'; }; /** * Create an invoice * @param {string} customer Account alias, number or username * @return {promise} */ OnsiteInvoice.prototype.create = function (customer) { var self = this; // setup request body var body = { invoice_data: self.generateRequestBody(), opr_data: { account_alias: String(customer) } }; return new Promise(function (resolve, reject) { request.post(self.baseURL + '/create') .set(self.config) .send(body) .end(function (err, res) { if (err) return reject(err) if (res.body.response_code === '00') { self.token = res.body.invoice_token; self.oprToken = res.body.token; self.responseText = res.body.description; resolve(); } else { var e = new Error('Failed to create invoice') e.data = res.body reject(e) } }) }) }; /** * Charge PAYDUNYA account * @param {string} oprToken OPR token generated on first step of onsite payment * @param {string} confirmToken Confirmation token sent to PAYDUNYA user * @return {promise} */ OnsiteInvoice.prototype.charge = function (oprToken, confirmToken){ var self = this; var body = { token: oprToken + '', confirm_token: confirmToken + '' }; return new Promise (function (resolve, reject) { request.post(self.baseURL + '/charge') .set(self.config) .send(body) .end(function (err, res) { if (err) return reject(err) if (res.body.response_code === '00') { self.responseText = res.body.response_text; self.status = res.body.invoice_data.status; self.receiptURL = res.body.invoice_data.receipt_url; self.customer = res.body.invoice_data.customer; resolve(); } else { var e = new Error('Failed to charge invoice. Check OPR/confirm token and try again.') e.data = res.body reject(e) } }) }) }; module.exports = OnsiteInvoice;