UNPKG

e2payments

Version:

e2Payments ajuda-lhe a integrar pagamentos de forma fácil e segura. Integrar pagamentos e controlar todas as suas transações, com e2Payments ficou fácil.

278 lines (218 loc) 7.33 kB
const axios = require('axios') axios.defaults.xsrfCookieName = 'csrftoken' axios.defaults.xsrfHeaderName = 'X-CSRFToken' axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; let errorLogKey = 'EXP_LOG' const TOKEN_NAME = '_____________e2p_' const DEFAULT_SERVER_URL = 'https://e2payments.explicador.co.mz' function handlePostRequest (params) { try { const axiosRequestSession = (params.method === 'put') ? axios.put(params.API_ENDPOINT, params.payload, params.header) : axios.post(params.API_ENDPOINT, params.payload, params.header) return axiosRequestSession.then(response => { return response }).catch(error => { return error }) } catch(e) { console.error (errorLogKey + ': ' + e.message) return e; } } // Chamado de forma externa. async function handleMpesaC2bPayment (params) { params.SERVER_URL = params.SERVER_URL ? params.SERVER_URL : DEFAULT_SERVER_URL // $validEndPoint = 'https://e2payments.explicador.co.mz/v1/c2b/mpesa-payment/2'; params.API_ENDPOINT = `${ params.SERVER_URL }/v1/c2b/mpesa-payment/${ params.walletId }` if (isTokenAvailableOnBrowser()) { return makePayment (params) } return autenticateAndGetBearerToken (params) .then(successResponse => { if (successResponse) { return makePayment (params) } }) .catch(error => { return error }) } function makePayment (params) { let payload = {...params} delete payload.CLIENT_SECRET delete payload.CLIENT_ID payload.client_id = params.CLIENT_ID return handlePostRequest({ API_ENDPOINT: params.API_ENDPOINT, payload: payload, header: composeHeader() }) .then(response => { return response }) .catch(error => { console.error(errorLogKey + ' - ', error) return error }) } // Chamado de forma externa. function isTokenAvailableOnBrowser() { let token = getToken(TOKEN_NAME) return !!token } // Chamado de forma externa. function getMyWallets (params) { let payload = {...params} delete payload.CLIENT_SECRET payload.client_id = params.CLIENT_ID params.SERVER_URL = params.SERVER_URL ? params.SERVER_URL : DEFAULT_SERVER_URL return handlePostRequest({ API_ENDPOINT: `${ params.SERVER_URL }/v1/wallets/mpesa/get/all`, payload: payload, header: composeHeader() }) .then(response => { return response }) .catch(error => { console.error(errorLogKey + ' - ', error) return error }) } // Chamado de forma externa. function getMyWalletDetails (params) { let payload = {...params} let walletId = params.walletId payload.client_id = params.CLIENT_ID params.SERVER_URL = params.SERVER_URL ? params.SERVER_URL : DEFAULT_SERVER_URL delete payload.CLIENT_SECRET return handlePostRequest({ API_ENDPOINT: `${ params.SERVER_URL }/v1/wallets/mpesa/get/${ walletId }`, payload: payload, header: composeHeader() }) .then(response => { return response }) .catch(error => { console.error(errorLogKey + ' - ', error) return error }) } // Chamado de forma externa. function getPaymentHistory (params) { let payload = {...params} delete payload.CLIENT_SECRET payload.client_id = params.CLIENT_ID params.SERVER_URL = params.SERVER_URL ? params.SERVER_URL : DEFAULT_SERVER_URL return handlePostRequest({ API_ENDPOINT: `${ params.SERVER_URL }/v1/payments/mpesa/get/all`, payload: payload, header: composeHeader() }) .then(response => { return response }) .catch(error => { console.error(errorLogKey + ' - ', error) return error }) } // Chamado de forma externa. function getPaymentHistoryPaginated (params) { let payload = {...params} let perPageQtd = params.perPageQtd payload.client_id = params.CLIENT_ID params.SERVER_URL = params.SERVER_URL ? params.SERVER_URL : DEFAULT_SERVER_URL delete payload.CLIENT_SECRET return handlePostRequest({ API_ENDPOINT: `${ params.SERVER_URL }/v1/payments/mpesa/get/all/paginate/${ perPageQtd }`, payload: payload, header: composeHeader() }) .then(response => { return response }) .catch(error => { console.error(errorLogKey + ' - ', error) return error }) } // Chamado de forma externa. function autenticateAndGetBearerToken (params) { params.SERVER_URL = params.SERVER_URL ? params.SERVER_URL : DEFAULT_SERVER_URL return handlePostRequest({ API_ENDPOINT: params.SERVER_URL + '/oauth/token', payload: { grant_type: 'client_credentials', client_id: params.CLIENT_ID, client_secret: params.CLIENT_SECRET, }, header: {} }) .then(async r => { let token = await storeTokenInBrowser (r.data) return token }) .catch(error => { console.error(errorLogKey + ' - ', error) return false }) } function addSomeDaysToToken(totalDays) { Date.prototype.addDays = function(days) { var date = new Date(this.valueOf()); date.setDate(date.getDate() + days); return date; } var date = new Date(); return date.addDays(totalDays) } // Armazena o token no browser function storeTokenInBrowser (responseData) { if (!responseData) return null//interrompe a execução let token = responseData.token_type + ' ' + responseData.access_token let expiration_date = addSomeDaysToToken(90) storeToken({ name: TOKEN_NAME, token: token, date: expiration_date, }) return token } function storeToken({ name, token, date }) { var expires = "; expires=" + date.toUTCString(); document.cookie = name + "=" + (token || "") + expires + "; path=/"; } function composeHeader () { return { headers: { 'Authorization': getToken(TOKEN_NAME), 'Content-Type' : 'application/json', 'Accept': 'application/json' } }; } // Recupera o token usado para autenticação function getToken(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function deleteToken() { document.cookie = TOKEN_NAME +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } module.exports.isTokenAvailableOnBrowser = isTokenAvailableOnBrowser; module.exports.deleteToken = deleteToken; module.exports.autenticateAndGetBearerToken = autenticateAndGetBearerToken; module.exports.handleMpesaC2bPayment = handleMpesaC2bPayment; module.exports.getMyWallets = getMyWallets; module.exports.getMyWalletDetails = getMyWalletDetails; module.exports.getPaymentHistory = getPaymentHistory; module.exports.getPaymentHistoryPaginated = getPaymentHistoryPaginated;