UNPKG

ng-orel-card-ipg

Version:

## Installation

105 lines 14.3 kB
import { Inject, Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import Pusher from 'pusher-js'; import axios from 'axios'; import * as i0 from "@angular/core"; export class NgOrelCardIpgService { constructor(config) { this.config = config; this.configuration = { local: { apiUrl: 'https://orel.mpg/api/extGateway', }, dev: { apiUrl: 'https://dev.paymediasolutions.com/v1/mpg/api/extGateway', }, prod: { apiUrl: 'https://prod.orelpay.lk/v1/mpg/api/extGateway', } }; this.activePuser = (apiKey, channel) => { this.pusher = new Pusher(apiKey, { cluster: 'ap2', forceTLS: false }); this.pusher.logToConsole = this.currentStage !== 'prod'; this.pusher.log = (msg) => { console.log(msg); }; this.channel = this.pusher.subscribe(channel + '-channel'); }; this.writeLog = (stage, msg) => { if (stage !== 'prod') { console.log('ng-orel-card-ipg: INFO: ' + msg); } }; axios.defaults.baseURL = this.configuration[config.stage].apiUrl; axios.defaults.headers.post['Content-Type'] = 'application/json'; axios.defaults.headers.common['x-plugin-source'] = 'ng-orel-card-ipg'; axios.defaults.headers.common['x-plugin-version'] = '1.0.10'; this.showPage$ = new Observable(x => this.ifShowPage = x); this.getSession$ = new Observable(st => this.setSession = st); this.selectedStage$ = new Observable(stg => this.setStage = stg); this.currentStage = config.stage; } AddCard(token, reference) { this.writeLog(this.currentStage, 'AddCard: ' + token + '-' + reference); this.setStage.next(this.config.stage); return new Promise((resolve, reject) => { axios.defaults.headers.common.Authorization = 'Bearer ' + token; axios.post('/getGatewaySession', { reference }) .then(response => { this.writeLog(this.currentStage, 'gateway-response: ' + response.data); if (response.data.status === 200) { console.log('getGatewaySession', 'success'); const sessionData = response.data.data; const sessionId = sessionData.session; this.setSession.next(sessionId); this.activePuser(sessionData._apk, sessionId); this.ifShowPage.next(true); this.channel.bind(sessionId, (paymentResponse) => { this.pusher.unsubscribe(sessionId + '-channel'); this.writeLog(this.currentStage, 'gateway-3ds-response: ' + paymentResponse); resolve(paymentResponse); }); } else { reject({ status: 400, data: { error: 'SERVER_ERROR', message: 'Payment session create failed.' } }); } }) .catch(error => { this.writeLog(this.currentStage, 'gateway-error-response: ' + error); let msg = ''; if (error.response.status === 401) { msg = 'Unauthorized, Invalid token.'; } else { msg = 'Something went wrong.'; } reject({ status: 400, data: { error: 'INIT_ERROR', message: msg } }); }); }); } } NgOrelCardIpgService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgOrelCardIpgService_Factory() { return new NgOrelCardIpgService(i0.ɵɵinject("config")); }, token: NgOrelCardIpgService, providedIn: "root" }); NgOrelCardIpgService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; NgOrelCardIpgService.ctorParameters = () => [ { type: undefined, decorators: [{ type: Inject, args: ['config',] }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctb3JlbC1jYXJkLWlwZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctb3JlbC1jYXJkLWlwZy9zcmMvbGliL25nLW9yZWwtY2FyZC1pcGcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsVUFBVSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFdBQVcsQ0FBQztBQUMvQixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBSzFCLE1BQU0sT0FBTyxvQkFBb0I7SUF1Qi9CLFlBQXNDLE1BQU07UUFBTixXQUFNLEdBQU4sTUFBTSxDQUFBO1FBWjVDLGtCQUFhLEdBQUc7WUFDZCxLQUFLLEVBQUU7Z0JBQ0wsTUFBTSxFQUFFLGlDQUFpQzthQUMxQztZQUNELEdBQUcsRUFBRTtnQkFDSCxNQUFNLEVBQUUseURBQXlEO2FBQ2xFO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSwrQ0FBK0M7YUFDeEQ7U0FDRixDQUFDO1FBcUVNLGdCQUFXLEdBQUcsQ0FBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLEVBQUU7WUFDeEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQy9CLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDO1lBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDO1lBQ0YsSUFB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e0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIE9ic2VydmVyfSBmcm9tICdyeGpzJztcbmltcG9ydCBQdXNoZXIgZnJvbSAncHVzaGVyLWpzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5nT3JlbENhcmRJcGdTZXJ2aWNlIHtcblxuICBwdXNoZXI6IGFueTtcbiAgY2hhbm5lbDogYW55O1xuICBzaG93UGFnZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHByaXZhdGUgaWZTaG93UGFnZTogT2JzZXJ2ZXI8Ym9vbGVhbj47XG4gIGdldFNlc3Npb24kOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHByaXZhdGUgc2V0U2Vzc2lvbjogT2JzZXJ2ZXI8c3RyaW5nPjtcbiAgc2VsZWN0ZWRTdGFnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHJpdmF0ZSBzZXRTdGFnZTogT2JzZXJ2ZXI8c3RyaW5nPjtcbiAgY3VycmVudFN0YWdlOiBzdHJpbmc7XG4gIGNvbmZpZ3VyYXRpb24gPSB7XG4gICAgbG9jYWw6IHtcbiAgICAgIGFwaVVybDogJ2h0dHBzOi8vb3JlbC5tcGcvYXBpL2V4dEdhdGV3YXknLFxuICAgIH0sXG4gICAgZGV2OiB7XG4gICAgICBhcGlVcmw6ICdodHRwczovL2Rldi5wYXltZWRpYXNvbHV0aW9ucy5jb20vdjEvbXBnL2FwaS9leHRHYXRld2F5JyxcbiAgICB9LFxuICAgIHByb2Q6IHtcbiAgICAgIGFwaVVybDogJ2h0dHBzOi8vcHJvZC5vcmVscGF5LmxrL3YxL21wZy9hcGkvZXh0R2F0ZXdheScsXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2NvbmZpZycpIHByaXZhdGUgY29uZmlnKSB7XG4gICAgYXhpb3MuZGVmYXVsdHMuYmFzZVVSTCA9IHRoaXMuY29uZmlndXJhdGlvbltjb25maWcuc3RhZ2VdLmFwaVVybDtcbiAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLnBvc3RbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIGF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWyd4LXBsdWdpbi1zb3VyY2UnXSA9ICduZy1vcmVsLWNhcmQtaXBnJztcbiAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsneC1wbHVnaW4tdmVyc2lvbiddID0gJzEuMC4xMCc7XG5cbiAgICB0aGlzLnNob3dQYWdlJCA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KHggPT4gdGhpcy5pZlNob3dQYWdlID0geCk7XG4gICAgdGhpcy5nZXRTZXNzaW9uJCA9IG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oc3QgPT4gdGhpcy5zZXRTZXNzaW9uID0gc3QpO1xuICAgIHRoaXMuc2VsZWN0ZWRTdGFnZSQgPSBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KHN0ZyA9PiB0aGlzLnNldFN0YWdlID0gc3RnKTtcbiAgICB0aGlzLmN1cnJlbnRTdGFnZSA9IGNvbmZpZy5zdGFnZTtcbiAgfVxuXG4gIEFkZENhcmQodG9rZW46IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHRoaXMud3JpdGVMb2codGhpcy5jdXJyZW50U3RhZ2UsICdBZGRDYXJkOiAnICsgdG9rZW4gKyAnLScgKyByZWZlcmVuY2UpO1xuICAgIHRoaXMuc2V0U3RhZ2UubmV4dCh0aGlzLmNvbmZpZy5zdGFnZSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb24uQXV0aG9yaXphdGlvbiA9ICdCZWFyZXIgJyArIHRva2VuO1xuICAgICAgYXhpb3MucG9zdCgnL2dldEdhdGV3YXlTZXNzaW9uJywge3JlZmVyZW5jZX0pXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlTG9nKHRoaXMuY3VycmVudFN0YWdlLCAnZ2F0ZXdheS1yZXNwb25zZTogJyArIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZ2V0R2F0ZXdheVNlc3Npb24nLCAnc3VjY2VzcycpO1xuXG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uRGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25JZCA9IHNlc3Npb25EYXRhLnNlc3Npb247XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U2Vzc2lvbi5uZXh0KHNlc3Npb25JZCk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVB1c2VyKHNlc3Npb25EYXRhLl9hcGssIHNlc3Npb25JZCk7XG5cbiAgICAgICAgICAgIHRoaXMuaWZTaG93UGFnZS5uZXh0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5jaGFubmVsLmJpbmQoc2Vzc2lvbklkLCAocGF5bWVudFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHVzaGVyLnVuc3Vic2NyaWJlKHNlc3Npb25JZCArICctY2hhbm5lbCcpO1xuICAgICAgICAgICAgICB0aGlzLndyaXRlTG9nKHRoaXMuY3VycmVudFN0YWdlLCAnZ2F0ZXdheS0zZHMtcmVzcG9uc2U6ICcgKyBwYXltZW50UmVzcG9uc2UpO1xuICAgICAgICAgICAgICByZXNvbHZlKHBheW1lbnRSZXNwb25zZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgICBzdGF0dXM6IDQwMCxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGVycm9yOiAnU0VSVkVSX0VSUk9SJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGF5bWVudCBzZXNzaW9uIGNyZWF0ZSBmYWlsZWQuJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy53cml0ZUxvZyh0aGlzLmN1cnJlbnRTdGFnZSwgJ2dhdGV3YXktZXJyb3ItcmVzcG9uc2U6ICcgKyBlcnJvcik7XG4gICAgICAgICAgbGV0IG1zZyA9ICcnO1xuICAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgbXNnID0gJ1VuYXV0aG9yaXplZCwgSW52YWxpZCB0b2tlbi4nO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtc2cgPSAnU29tZXRoaW5nIHdlbnQgd3JvbmcuJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgc3RhdHVzOiA0MDAsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGVycm9yOiAnSU5JVF9FUlJPUicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IG1zZ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlUHVzZXIgPSAoYXBpS2V5OiBzdHJpbmcsIGNoYW5uZWw6IHN0cmluZykgPT4ge1xuICAgIHRoaXMucHVzaGVyID0gbmV3IFB1c2hlcihhcGlLZXksIHtcbiAgICAgIGNsdXN0ZXI6ICdhcDInLFxuICAgICAgZm9yY2VUTFM6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5wdXNoZXIubG9nVG9Db25zb2xlID0gdGhpcy5jdXJyZW50U3RhZ2UgIT09ICdwcm9kJztcbiAgICB0aGlzLnB1c2hlci5sb2cgPSAobXNnKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhtc2cpO1xuICAgIH07XG4gICAgdGhpcy5jaGFubmVsID0gdGhpcy5wdXNoZXIuc3Vic2NyaWJlKGNoYW5uZWwgKyAnLWNoYW5uZWwnKTtcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVMb2cgPSAoc3RhZ2U6IHN0cmluZywgbXNnOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoc3RhZ2UgIT09ICdwcm9kJykge1xuICAgICAgY29uc29sZS5sb2coJ25nLW9yZWwtY2FyZC1pcGc6IElORk86ICcgKyBtc2cpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=