UNPKG

paypal-custom-sdk

Version:

a minimalistic paypal sdk for custom integrations

48 lines (47 loc) 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const contexts_1 = require("../utils/contexts"); const constants_1 = require("../configs/constants"); const request_1 = tslib_1.__importDefault(require("../utils/request")); const qs_1 = tslib_1.__importDefault(require("qs")); const withMemo_1 = require("../utils/HOF/withMemo"); const withSingleton_1 = tslib_1.__importDefault(require("../utils/HOF/withSingleton")); const authorizationServices = () => { const clientId = (0, contexts_1.getItem)('clientId'); const clientSecret = (0, contexts_1.getItem)('clientSecret'); const env = (0, contexts_1.getItem)('env'); const baseUrl = env === 'production' ? constants_1.BASE_URLS.PAYPAL : constants_1.BASE_URLS.SANDBOX; const request = (0, request_1.default)(baseUrl); const headers = { Authorization: `Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString('base64')}`, 'Content-Type': 'application/x-www-form-urlencoded', }; const getToken = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { console.log('get token'); const { data } = yield request.post(constants_1.PATHS.GET_TOKEN, qs_1.default.stringify({ grant_type: 'client_credentials', response_type: 'token', }), { headers, }); return data.access_token; }); const getHeaders = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const token = yield getToken(); return { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', }; }); const verifyIPNMessage = (body) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const { data } = yield request.post(constants_1.PATHS.VERIFY_IPN, Object.assign(Object.assign({}, body), { cmd: '_notify-validate' })); return data; }); return { getToken: (0, withMemo_1.withMemo)(getToken, 1000 * 60 * 60 * 8), getHeaders: (0, withMemo_1.withMemo)(getHeaders, 1000 * 60 * 60 * 8), verifyIPNMessage, }; }; exports.default = (0, withSingleton_1.default)(authorizationServices);