paypal-custom-sdk
Version:
a minimalistic paypal sdk for custom integrations
48 lines (47 loc) • 2.22 kB
JavaScript
;
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);