epp-lib 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,83 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { IframeMessageType } from '../model/iframe-message-type';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./iframe-message.service";
5
+ export class PaymentService {
6
+ constructor(iframeMessageService) {
7
+ this.iframeMessageService = iframeMessageService;
8
+ this.popup = new Map();
9
+ /**
10
+ * Listen OPEN_PAYMENT_FORM message to open 3th party page
11
+ */
12
+ this.iframeMessageService.messages().subscribe(message => {
13
+ console.log('Received from iframe:', message);
14
+ if (IframeMessageType.OPEN_PAYMENT_FORM != message.type)
15
+ return;
16
+ this.openWindow(message.payload);
17
+ });
18
+ }
19
+ /**
20
+ * Open 3th party page on the popup windown or new tab
21
+ */
22
+ openWindow(checkout) {
23
+ if (!checkout || this.popup.get(checkout.requestId))
24
+ return;
25
+ if (this.popup.size > 0) {
26
+ //TODO clear the current popup
27
+ }
28
+ const width = 470;
29
+ const height = 550;
30
+ // var left = Math.max(0, (screen.width - width) / 2) + (screen.availLeft | 0),
31
+ // top = Math.max(0, (screen.height - height) / 2) + (screen.availTop | 0);
32
+ // var popup = window.open(url, "VOdds", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');
33
+ const popup = window.open(checkout.url, "VOdds", 'width=' + width + ',height=' + height + ',status=0,location=0,menubar=0,toolbar=0');
34
+ if (!popup) {
35
+ checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';
36
+ this.sendMessageToIframe(checkout);
37
+ return;
38
+ }
39
+ checkout.popup = popup;
40
+ this.popup.set(checkout.requestId, checkout);
41
+ popup.focus();
42
+ this.onThirdPartyPopupClose(checkout);
43
+ }
44
+ /**
45
+ * Listen message or action from 3th party on the popup
46
+ */
47
+ onThirdPartyPopupClose(checkout) {
48
+ this.iframeMessageService.thirdPartyMessages().subscribe(event => {
49
+ if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {
50
+ console.log('Received from 3th party:', event.data);
51
+ //TODO close popup again
52
+ checkout.popup = undefined;
53
+ checkout.callback = event.data;
54
+ this.sendMessageToIframe(checkout);
55
+ }
56
+ });
57
+ }
58
+ /**
59
+ * send the message from the parent to the iframe
60
+ */
61
+ sendMessageToIframe(checkout) {
62
+ if (this.iframe == undefined)
63
+ return;
64
+ let message = {
65
+ type: IframeMessageType.PAYMENT_CALLBACK,
66
+ payload: checkout
67
+ };
68
+ this.iframeMessageService.sendMessageToIframe(this.iframe, message);
69
+ }
70
+ removePaymentIframe() {
71
+ //TODO
72
+ this.iframe = undefined;
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaymentService, deps: [{ token: i1.IframeMessageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
75
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaymentService, providedIn: 'root' }); }
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaymentService, decorators: [{
78
+ type: Injectable,
79
+ args: [{
80
+ providedIn: 'root'
81
+ }]
82
+ }], ctorParameters: () => [{ type: i1.IframeMessageService }] });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXBwLWxpYi9zcmMvbGliL3NlcnZpY2UvcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQU9qRSxNQUFNLE9BQU8sY0FBYztJQUl2QixZQUFvQixvQkFBMEM7UUFBMUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUg5RCxVQUFLLEdBQTBCLElBQUksR0FBRyxFQUFFLENBQUM7UUFJckM7O1dBRUc7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsSUFBSSxpQkFBaUIsQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsSUFBSTtnQkFBRSxPQUFPO1lBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQW1CLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxRQUFrQjtRQUN6QixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFBRSxPQUFPO1FBQzVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsOEJBQThCO1FBQ2xDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ25CLCtFQUErRTtRQUMvRSwyRUFBMkU7UUFDM0UsZ0tBQWdLO1FBQ2hLLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxHQUFHLEtBQUssR0FBRyxVQUFVLEdBQUcsTUFBTSxHQUFHLDBDQUEwQyxDQUFDLENBQUM7UUFDdEksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsUUFBUSxDQUFDLFlBQVksR0FBRyx1RUFBdUUsQ0FBQztZQUNoRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsT0FBTztRQUNYLENBQUM7UUFDRCxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxRQUFrQjtRQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCx3QkFBd0I7Z0JBQ3hCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUMzQixRQUFRLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxRQUFrQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUztZQUFFLE9BQU87UUFDckMsSUFBSSxPQUFPLEdBQWtCO1lBQ3pCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0I7WUFDeEMsT0FBTyxFQUFFLFFBQVE7U0FDcEIsQ0FBQTtRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxtQkFBbUI7UUFDZixNQUFNO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQzsrR0FyRVEsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElmcmFtZU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9pZnJhbWUtbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSWZyYW1lTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9tb2RlbC9pZnJhbWUtbWVzc2FnZS10eXBlJztcclxuaW1wb3J0IHsgQ2hlY2tvdXQgfSBmcm9tICcuLi9tb2RlbC9jaGVja291dCc7XHJcbmltcG9ydCB7IElmcmFtZU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9pZnJhbWUtbWVzc2FnZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50U2VydmljZSB7XHJcbiAgICBwb3B1cDogTWFwPHN0cmluZywgQ2hlY2tvdXQ+ID0gbmV3IE1hcCgpO1xyXG4gICAgaWZyYW1lOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PiB8IHVuZGVmaW5lZDsvL1NldCBmcm9tIHRoZSBjb21wb25lbnRcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlmcmFtZU1lc3NhZ2VTZXJ2aWNlOiBJZnJhbWVNZXNzYWdlU2VydmljZSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIExpc3RlbiBPUEVOX1BBWU1FTlRfRk9STSBtZXNzYWdlIHRvIG9wZW4gM3RoIHBhcnR5IHBhZ2VcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLm1lc3NhZ2VzKCkuc3Vic2NyaWJlKG1lc3NhZ2UgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgZnJvbSBpZnJhbWU6JywgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGlmIChJZnJhbWVNZXNzYWdlVHlwZS5PUEVOX1BBWU1FTlRfRk9STSAhPSBtZXNzYWdlLnR5cGUpIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy5vcGVuV2luZG93KG1lc3NhZ2UucGF5bG9hZCBhcyBDaGVja291dCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGVuIDN0aCBwYXJ0eSBwYWdlIG9uIHRoZSBwb3B1cCB3aW5kb3duIG9yIG5ldyB0YWJcclxuICAgICAqL1xyXG4gICAgb3BlbldpbmRvdyhjaGVja291dDogQ2hlY2tvdXQpIHtcclxuICAgICAgICBpZiAoIWNoZWNrb3V0IHx8IHRoaXMucG9wdXAuZ2V0KGNoZWNrb3V0LnJlcXVlc3RJZCkpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5wb3B1cC5zaXplID4gMCkge1xyXG4gICAgICAgICAgICAvL1RPRE8gY2xlYXIgdGhlIGN1cnJlbnQgcG9wdXBcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSA0NzA7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gNTUwO1xyXG4gICAgICAgIC8vIHZhciBsZWZ0ID0gTWF0aC5tYXgoMCwgKHNjcmVlbi53aWR0aCAtIHdpZHRoKSAvIDIpICsgKHNjcmVlbi5hdmFpbExlZnQgfCAwKSxcclxuICAgICAgICAvLyB0b3AgPSBNYXRoLm1heCgwLCAoc2NyZWVuLmhlaWdodCAtIGhlaWdodCkgLyAyKSArIChzY3JlZW4uYXZhaWxUb3AgfCAwKTtcclxuICAgICAgICAvLyB2YXIgcG9wdXAgPSB3aW5kb3cub3Blbih1cmwsIFwiVk9kZHNcIiwgJ3dpZHRoPScgKyB3aWR0aCArICcsaGVpZ2h0PScgKyBoZWlnaHQgKyAnLGxlZnQ9JyArIGxlZnQgKyAnLHRvcD0nICsgdG9wICsgJyxzdGF0dXM9MCxsb2NhdGlvbj0wLG1lbnViYXI9MCx0b29sYmFyPTAnKTtcclxuICAgICAgICBjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKGNoZWNrb3V0LnVybCwgXCJWT2Rkc1wiLCAnd2lkdGg9JyArIHdpZHRoICsgJyxoZWlnaHQ9JyArIGhlaWdodCArICcsc3RhdHVzPTAsbG9jYXRpb249MCxtZW51YmFyPTAsdG9vbGJhcj0wJyk7XHJcbiAgICAgICAgaWYgKCFwb3B1cCkge1xyXG4gICAgICAgICAgICBjaGVja291dC5lcnJvck1lc3NhZ2UgPSAnWW91ciBzZXR0aW5nIHByZXZlbnRzIHBvcHVwcy4gUGxlYXNlIGNoYW5nZSB5b3VyIHNldHRpbmcgdG8gYWxsb3cgaXQuJztcclxuICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZVRvSWZyYW1lKGNoZWNrb3V0KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjaGVja291dC5wb3B1cCA9IHBvcHVwO1xyXG4gICAgICAgIHRoaXMucG9wdXAuc2V0KGNoZWNrb3V0LnJlcXVlc3RJZCwgY2hlY2tvdXQpO1xyXG4gICAgICAgIHBvcHVwLmZvY3VzKCk7XHJcbiAgICAgICAgdGhpcy5vblRoaXJkUGFydHlQb3B1cENsb3NlKGNoZWNrb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RlbiBtZXNzYWdlIG9yIGFjdGlvbiBmcm9tIDN0aCBwYXJ0eSBvbiB0aGUgcG9wdXBcclxuICAgICAqL1xyXG4gICAgb25UaGlyZFBhcnR5UG9wdXBDbG9zZShjaGVja291dDogQ2hlY2tvdXQpIHtcclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLnRoaXJkUGFydHlNZXNzYWdlcygpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLmlzVmFsaWREb21haW4oY2hlY2tvdXQucGF5bWVudFR5cGUsIGV2ZW50Lm9yaWdpbikpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCBmcm9tIDN0aCBwYXJ0eTonLCBldmVudC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIC8vVE9ETyBjbG9zZSBwb3B1cCBhZ2FpblxyXG4gICAgICAgICAgICAgICAgY2hlY2tvdXQucG9wdXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBjaGVja291dC5jYWxsYmFjayA9IGV2ZW50LmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZW5kIHRoZSBtZXNzYWdlIGZyb20gdGhlIHBhcmVudCB0byB0aGUgaWZyYW1lXHJcbiAgICAgKi9cclxuICAgIHNlbmRNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQ6IENoZWNrb3V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWZyYW1lID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGxldCBtZXNzYWdlOiBJZnJhbWVNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBJZnJhbWVNZXNzYWdlVHlwZS5QQVlNRU5UX0NBTExCQUNLLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiBjaGVja291dFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlmcmFtZU1lc3NhZ2VTZXJ2aWNlLnNlbmRNZXNzYWdlVG9JZnJhbWUodGhpcy5pZnJhbWUsIG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgcmVtb3ZlUGF5bWVudElmcmFtZSgpIHtcclxuICAgICAgICAvL1RPRE9cclxuICAgICAgICB0aGlzLmlmcmFtZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -12,6 +12,8 @@ export * from './lib/model/iparam';
12
12
  export * from './lib/model/payment-type';
13
13
  // Services
14
14
  export * from './lib/service/iframe-message.service';
15
+ export * from './lib/service/payment.service';
16
+ export * from './lib/service/vodds-http.service';
15
17
  // Constants
16
18
  export * from './lib/api-route.const';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLFdBQVc7QUFDWCxjQUFjLHNDQUFzQyxDQUFDO0FBRXJELFlBQVk7QUFDWixjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGVwcC1saWJcclxuICovXHJcblxyXG4vLyBNb2RlbHNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvYmFzZS1mb3JtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvY2FsbGJhY2stbWVzc2FnZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2NoZWNrb3V0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZG9tYWluJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvaWZyYW1lLW1lc3NhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9pZnJhbWUtbWVzc2FnZS10eXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvaXBhcmFtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvcGF5bWVudC10eXBlJztcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvaWZyYW1lLW1lc3NhZ2Uuc2VydmljZSc7XHJcblxyXG4vLyBDb25zdGFudHNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpLXJvdXRlLmNvbnN0JzsiXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLFdBQVc7QUFDWCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxZQUFZO0FBQ1osY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBlcHAtbGliXHJcbiAqL1xyXG5cclxuLy8gTW9kZWxzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2Jhc2UtZm9ybSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2NhbGxiYWNrLW1lc3NhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9jaGVja291dCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2RvbWFpbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2lmcmFtZS1tZXNzYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvaWZyYW1lLW1lc3NhZ2UtdHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2lwYXJhbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL3BheW1lbnQtdHlwZSc7XHJcblxyXG4vLyBTZXJ2aWNlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2lmcmFtZS1tZXNzYWdlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3BheW1lbnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvdm9kZHMtaHR0cC5zZXJ2aWNlJztcclxuXHJcbi8vIENvbnN0YW50c1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGktcm91dGUuY29uc3QnOyJdfQ==
@@ -223,6 +223,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
223
223
  }]
224
224
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: VoddsHttpService }] });
225
225
 
226
+ class PaymentService {
227
+ constructor(iframeMessageService) {
228
+ this.iframeMessageService = iframeMessageService;
229
+ this.popup = new Map();
230
+ /**
231
+ * Listen OPEN_PAYMENT_FORM message to open 3th party page
232
+ */
233
+ this.iframeMessageService.messages().subscribe(message => {
234
+ console.log('Received from iframe:', message);
235
+ if (IframeMessageType.OPEN_PAYMENT_FORM != message.type)
236
+ return;
237
+ this.openWindow(message.payload);
238
+ });
239
+ }
240
+ /**
241
+ * Open 3th party page on the popup windown or new tab
242
+ */
243
+ openWindow(checkout) {
244
+ if (!checkout || this.popup.get(checkout.requestId))
245
+ return;
246
+ if (this.popup.size > 0) {
247
+ //TODO clear the current popup
248
+ }
249
+ const width = 470;
250
+ const height = 550;
251
+ // var left = Math.max(0, (screen.width - width) / 2) + (screen.availLeft | 0),
252
+ // top = Math.max(0, (screen.height - height) / 2) + (screen.availTop | 0);
253
+ // var popup = window.open(url, "VOdds", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');
254
+ const popup = window.open(checkout.url, "VOdds", 'width=' + width + ',height=' + height + ',status=0,location=0,menubar=0,toolbar=0');
255
+ if (!popup) {
256
+ checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';
257
+ this.sendMessageToIframe(checkout);
258
+ return;
259
+ }
260
+ checkout.popup = popup;
261
+ this.popup.set(checkout.requestId, checkout);
262
+ popup.focus();
263
+ this.onThirdPartyPopupClose(checkout);
264
+ }
265
+ /**
266
+ * Listen message or action from 3th party on the popup
267
+ */
268
+ onThirdPartyPopupClose(checkout) {
269
+ this.iframeMessageService.thirdPartyMessages().subscribe(event => {
270
+ if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {
271
+ console.log('Received from 3th party:', event.data);
272
+ //TODO close popup again
273
+ checkout.popup = undefined;
274
+ checkout.callback = event.data;
275
+ this.sendMessageToIframe(checkout);
276
+ }
277
+ });
278
+ }
279
+ /**
280
+ * send the message from the parent to the iframe
281
+ */
282
+ sendMessageToIframe(checkout) {
283
+ if (this.iframe == undefined)
284
+ return;
285
+ let message = {
286
+ type: IframeMessageType.PAYMENT_CALLBACK,
287
+ payload: checkout
288
+ };
289
+ this.iframeMessageService.sendMessageToIframe(this.iframe, message);
290
+ }
291
+ removePaymentIframe() {
292
+ //TODO
293
+ this.iframe = undefined;
294
+ }
295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaymentService, deps: [{ token: IframeMessageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
296
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaymentService, providedIn: 'root' }); }
297
+ }
298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaymentService, decorators: [{
299
+ type: Injectable,
300
+ args: [{
301
+ providedIn: 'root'
302
+ }]
303
+ }], ctorParameters: () => [{ type: IframeMessageService }] });
304
+
226
305
  /*
227
306
  * Public API Surface of epp-lib
228
307
  */
@@ -232,5 +311,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
232
311
  * Generated bundle index. Do not edit.
233
312
  */
234
313
 
235
- export { ApiRoute, BaseForm, CallbackMessage, Checkout, Domain, IParam, IframeMessageService, IframeMessageType, PaymentType };
314
+ export { ApiRoute, BaseForm, CallbackMessage, Checkout, Domain, IParam, IframeMessageService, IframeMessageType, PaymentService, PaymentType, VoddsHttpService };
236
315
  //# sourceMappingURL=epp-lib.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"epp-lib.mjs","sources":["../../../projects/epp-lib/src/lib/model/iparam.ts","../../../projects/epp-lib/src/lib/model/base-form.ts","../../../projects/epp-lib/src/lib/model/callback-message.ts","../../../projects/epp-lib/src/lib/model/payment-type.ts","../../../projects/epp-lib/src/lib/model/checkout.ts","../../../projects/epp-lib/src/lib/model/domain.ts","../../../projects/epp-lib/src/lib/model/iframe-message-type.ts","../../../projects/epp-lib/src/lib/api-route.const.ts","../../../projects/epp-lib/src/lib/service/vodds-http.service.ts","../../../projects/epp-lib/src/lib/service/iframe-message.service.ts","../../../projects/epp-lib/src/public-api.ts","../../../projects/epp-lib/src/epp-lib.ts"],"sourcesContent":["export class IParam {\r\n getMobileFlag(): boolean {\r\n return /android|mobi/i.test(navigator.userAgent.toLowerCase());\r\n }\r\n \r\n toJson(): string {\r\n return JSON.stringify(this);\r\n }\r\n\r\n toFormUrlEncoded(): string {\r\n return new URLSearchParams(Object.entries(this).map(([key, value]) => [key, String(value)])).toString();\r\n }\r\n}\r\n","import { HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { IParam } from './iparam';\r\n\r\nexport class BaseForm extends IParam {\r\n\tisMobile: string;\r\n\r\n\tconstructor() {\r\n super();\r\n\t\tthis.isMobile = 'false';\r\n\t}\r\n\r\n\t/**\r\n\t * Use this function for building POST params with form url encoded content type.\r\n\t * Remeber to call params.toString() when passing to http request\r\n\t */\r\n\tgetUrlSearchParam() {\r\n\t\tconst params = new URLSearchParams();\r\n\t\tparams.set('isMobile', this.isMobile);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t/**\r\n\t * Use this function for building GET params\r\n\t */\r\n\tgetHttpParams() {\r\n\t\tlet params = new HttpParams();\r\n\t\tparams = params.append('isMobile', this.isMobile);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t/**\r\n\t * Add isMobile = 'true' to paramters\r\n\t * @param params : object\r\n\t */\r\n\taddIsMobile(params: any) {\r\n\t\tparams['isMobile'] = this.isMobile;\r\n\t}\r\n\r\n\t/**\r\n\t * For POST request with form-urlencoded\r\n\t */\r\n\tgetHeaderWithContentTypeForm() {\r\n\t\tconst headers = new HttpHeaders()\r\n\t\t\t.set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\r\n\t\treturn headers;\r\n\t}\r\n\r\n\t/**\r\n\t * For POST request with json body\r\n\t */\r\n\tgetHeaderWithContentTypeJson() {\r\n\t\tconst headers = new HttpHeaders()\r\n\t\t\t.set('Content-Type', 'application/json; charset=utf-8');\r\n\t\treturn headers;\r\n\t}\r\n}","export class CallbackMessage {\r\n errorMessage: string = '';\r\n \r\n constructor(errorMessage: string) {\r\n this.errorMessage = errorMessage;\r\n }\r\n}\r\n","export enum PaymentType {\r\n NA,\r\n JETON\r\n}\r\n","import { PaymentType } from \"./payment-type\";\r\n\r\nexport class Checkout {\r\n requestId: string = '';\r\n paymentType: PaymentType = PaymentType.NA;\r\n url: string = '';\r\n errorMessage: string = '';\r\n callback: any;\r\n popup: any;\r\n}\r\n","export class Domain {\r\n defaultDomain: string = '';\r\n allowedOrigins: string[] = [];\r\n specialDomain: string[] = [];\r\n jetonDomain: string = '';\r\n constructor() {}\r\n}\r\n","export enum IframeMessageType {\r\n OPEN_PAYMENT_FORM,\r\n PAYMENT_CALLBACK\r\n}\r\n","export const ApiRoute = {\r\n GET_DOMAIN: { url: \"/getDomain\", method: \"get\" }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IParam } from '../model/iparam';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class VoddsHttpService {\r\n\r\n constructor(public httpClient: HttpClient) { }\r\n\r\n postJson(url: string, request: IParam): Observable<any> {\r\n const headers = new HttpHeaders({ 'Content-type': 'application/json' });\r\n return this.httpClient.post(url, request.toJson(), { headers });\r\n }\r\n\r\n get<T>(url: string, param?: IParam): Observable<T> {\r\n if(param) {\r\n url = url + '?' + param.toFormUrlEncoded();\r\n }\r\n return this.httpClient.get<T>(url);\r\n }\r\n get2<T>(url: string, option?: any): Observable<T> {\r\n const observable: Observable<any> = new Observable(observer => {\r\n this.httpClient.get<any>(url, option).subscribe(\r\n res => {\r\n observer.next(res);\r\n },\r\n err => {\r\n observer.next(err);\r\n }\r\n );\r\n });\r\n return observable;\r\n }\r\n\r\n postFormUrlEncoded(url: string, request: IParam) {\r\n let options = {\r\n headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')\r\n };\r\n return this.httpClient.post(url, request.toFormUrlEncoded(), options);\r\n }\r\n\r\n getMainDomain(url: string){\r\n let mainDomain = url;\r\n let domain = window.location.origin;\r\n if(domain.includes(\"promo.\")){\r\n domain = domain.replace(\"promo.\", \"\");\r\n mainDomain = domain + url;\r\n }\r\n\r\n return mainDomain;\r\n }\r\n\r\n getFullUrl(url: string, param: IParam): string {\r\n return `${url}?${param.toFormUrlEncoded()}`;\r\n }\r\n}\r\n","import { ElementRef, Injectable, NgZone } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Domain } from '../model/domain';\r\nimport { VoddsHttpService } from './vodds-http.service';\r\nimport { ApiRoute } from '../api-route.const';\r\nimport { PaymentType } from '../model/payment-type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IframeMessageService {\r\n private readonly messages$ = new Subject<IframeMessage>();\r\n private readonly thirdPartyMessages$ = new Subject<MessageEvent>();\r\n private domain: Domain;\r\n\r\n private readonly listener = (event: MessageEvent) => {\r\n if (!this.domain.allowedOrigins.includes(event.origin)) {\r\n if (this.domain.jetonDomain == event.origin) {\r\n this.ngZone.run(() => {\r\n this.thirdPartyMessages$.next(event);\r\n });\r\n return;\r\n }\r\n return;\r\n }\r\n this.ngZone.run(() => {\r\n this.messages$.next(event.data);\r\n });\r\n };\r\n\r\n constructor(private readonly ngZone: NgZone, private http: VoddsHttpService) {\r\n this.domain = new Domain();\r\n this.http.get(ApiRoute.GET_DOMAIN.url).subscribe({\r\n next: (resp: any) => {\r\n if (resp.data) {\r\n this.domain = resp.data;\r\n }\r\n },\r\n error: err => {}\r\n });\r\n window.addEventListener('message', this.listener);\r\n }\r\n\r\n messages(): Observable<IframeMessage> {\r\n return this.messages$.asObservable();\r\n }\r\n thirdPartyMessages(): Observable<MessageEvent> {\r\n return this.thirdPartyMessages$.asObservable();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('message', this.listener);\r\n this.messages$.complete();\r\n this.thirdPartyMessages$.complete();\r\n }\r\n\r\n isValidDomain(paymentType: PaymentType, origin: string) {\r\n if (paymentType == null) return false;\r\n switch(paymentType) {\r\n case PaymentType.JETON:\r\n return this.domain.jetonDomain == origin;\r\n default:\r\n return false;\r\n }\r\n\r\n }\r\n sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage) {\r\n if (iframe == undefined) return;\r\n iframe.nativeElement.contentWindow?.postMessage(\r\n message,\r\n window.location.hostname\r\n );\r\n }\r\n}\r\n","/*\r\n * Public API Surface of epp-lib\r\n */\r\n\r\n// Models\r\nexport * from './lib/model/base-form';\r\nexport * from './lib/model/callback-message';\r\nexport * from './lib/model/checkout';\r\nexport * from './lib/model/domain';\r\nexport * from './lib/model/iframe-message';\r\nexport * from './lib/model/iframe-message-type';\r\nexport * from './lib/model/iparam';\r\nexport * from './lib/model/payment-type';\r\n\r\n// Services\r\nexport * from './lib/service/iframe-message.service';\r\n\r\n// Constants\r\nexport * from './lib/api-route.const';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VoddsHttpService"],"mappings":"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"}
1
+ {"version":3,"file":"epp-lib.mjs","sources":["../../../projects/epp-lib/src/lib/model/iparam.ts","../../../projects/epp-lib/src/lib/model/base-form.ts","../../../projects/epp-lib/src/lib/model/callback-message.ts","../../../projects/epp-lib/src/lib/model/payment-type.ts","../../../projects/epp-lib/src/lib/model/checkout.ts","../../../projects/epp-lib/src/lib/model/domain.ts","../../../projects/epp-lib/src/lib/model/iframe-message-type.ts","../../../projects/epp-lib/src/lib/api-route.const.ts","../../../projects/epp-lib/src/lib/service/vodds-http.service.ts","../../../projects/epp-lib/src/lib/service/iframe-message.service.ts","../../../projects/epp-lib/src/lib/service/payment.service.ts","../../../projects/epp-lib/src/public-api.ts","../../../projects/epp-lib/src/epp-lib.ts"],"sourcesContent":["export class IParam {\r\n getMobileFlag(): boolean {\r\n return /android|mobi/i.test(navigator.userAgent.toLowerCase());\r\n }\r\n \r\n toJson(): string {\r\n return JSON.stringify(this);\r\n }\r\n\r\n toFormUrlEncoded(): string {\r\n return new URLSearchParams(Object.entries(this).map(([key, value]) => [key, String(value)])).toString();\r\n }\r\n}\r\n","import { HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { IParam } from './iparam';\r\n\r\nexport class BaseForm extends IParam {\r\n\tisMobile: string;\r\n\r\n\tconstructor() {\r\n super();\r\n\t\tthis.isMobile = 'false';\r\n\t}\r\n\r\n\t/**\r\n\t * Use this function for building POST params with form url encoded content type.\r\n\t * Remeber to call params.toString() when passing to http request\r\n\t */\r\n\tgetUrlSearchParam() {\r\n\t\tconst params = new URLSearchParams();\r\n\t\tparams.set('isMobile', this.isMobile);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t/**\r\n\t * Use this function for building GET params\r\n\t */\r\n\tgetHttpParams() {\r\n\t\tlet params = new HttpParams();\r\n\t\tparams = params.append('isMobile', this.isMobile);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t/**\r\n\t * Add isMobile = 'true' to paramters\r\n\t * @param params : object\r\n\t */\r\n\taddIsMobile(params: any) {\r\n\t\tparams['isMobile'] = this.isMobile;\r\n\t}\r\n\r\n\t/**\r\n\t * For POST request with form-urlencoded\r\n\t */\r\n\tgetHeaderWithContentTypeForm() {\r\n\t\tconst headers = new HttpHeaders()\r\n\t\t\t.set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\r\n\t\treturn headers;\r\n\t}\r\n\r\n\t/**\r\n\t * For POST request with json body\r\n\t */\r\n\tgetHeaderWithContentTypeJson() {\r\n\t\tconst headers = new HttpHeaders()\r\n\t\t\t.set('Content-Type', 'application/json; charset=utf-8');\r\n\t\treturn headers;\r\n\t}\r\n}","export class CallbackMessage {\r\n errorMessage: string = '';\r\n \r\n constructor(errorMessage: string) {\r\n this.errorMessage = errorMessage;\r\n }\r\n}\r\n","export enum PaymentType {\r\n NA,\r\n JETON\r\n}\r\n","import { PaymentType } from \"./payment-type\";\r\n\r\nexport class Checkout {\r\n requestId: string = '';\r\n paymentType: PaymentType = PaymentType.NA;\r\n url: string = '';\r\n errorMessage: string = '';\r\n callback: any;\r\n popup: any;\r\n}\r\n","export class Domain {\r\n defaultDomain: string = '';\r\n allowedOrigins: string[] = [];\r\n specialDomain: string[] = [];\r\n jetonDomain: string = '';\r\n constructor() {}\r\n}\r\n","export enum IframeMessageType {\r\n OPEN_PAYMENT_FORM,\r\n PAYMENT_CALLBACK\r\n}\r\n","export const ApiRoute = {\r\n GET_DOMAIN: { url: \"/getDomain\", method: \"get\" }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IParam } from '../model/iparam';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class VoddsHttpService {\r\n\r\n constructor(public httpClient: HttpClient) { }\r\n\r\n postJson(url: string, request: IParam): Observable<any> {\r\n const headers = new HttpHeaders({ 'Content-type': 'application/json' });\r\n return this.httpClient.post(url, request.toJson(), { headers });\r\n }\r\n\r\n get<T>(url: string, param?: IParam): Observable<T> {\r\n if(param) {\r\n url = url + '?' + param.toFormUrlEncoded();\r\n }\r\n return this.httpClient.get<T>(url);\r\n }\r\n get2<T>(url: string, option?: any): Observable<T> {\r\n const observable: Observable<any> = new Observable(observer => {\r\n this.httpClient.get<any>(url, option).subscribe(\r\n res => {\r\n observer.next(res);\r\n },\r\n err => {\r\n observer.next(err);\r\n }\r\n );\r\n });\r\n return observable;\r\n }\r\n\r\n postFormUrlEncoded(url: string, request: IParam) {\r\n let options = {\r\n headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')\r\n };\r\n return this.httpClient.post(url, request.toFormUrlEncoded(), options);\r\n }\r\n\r\n getMainDomain(url: string){\r\n let mainDomain = url;\r\n let domain = window.location.origin;\r\n if(domain.includes(\"promo.\")){\r\n domain = domain.replace(\"promo.\", \"\");\r\n mainDomain = domain + url;\r\n }\r\n\r\n return mainDomain;\r\n }\r\n\r\n getFullUrl(url: string, param: IParam): string {\r\n return `${url}?${param.toFormUrlEncoded()}`;\r\n }\r\n}\r\n","import { ElementRef, Injectable, NgZone } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Domain } from '../model/domain';\r\nimport { VoddsHttpService } from './vodds-http.service';\r\nimport { ApiRoute } from '../api-route.const';\r\nimport { PaymentType } from '../model/payment-type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IframeMessageService {\r\n private readonly messages$ = new Subject<IframeMessage>();\r\n private readonly thirdPartyMessages$ = new Subject<MessageEvent>();\r\n private domain: Domain;\r\n\r\n private readonly listener = (event: MessageEvent) => {\r\n if (!this.domain.allowedOrigins.includes(event.origin)) {\r\n if (this.domain.jetonDomain == event.origin) {\r\n this.ngZone.run(() => {\r\n this.thirdPartyMessages$.next(event);\r\n });\r\n return;\r\n }\r\n return;\r\n }\r\n this.ngZone.run(() => {\r\n this.messages$.next(event.data);\r\n });\r\n };\r\n\r\n constructor(private readonly ngZone: NgZone, private http: VoddsHttpService) {\r\n this.domain = new Domain();\r\n this.http.get(ApiRoute.GET_DOMAIN.url).subscribe({\r\n next: (resp: any) => {\r\n if (resp.data) {\r\n this.domain = resp.data;\r\n }\r\n },\r\n error: err => {}\r\n });\r\n window.addEventListener('message', this.listener);\r\n }\r\n\r\n messages(): Observable<IframeMessage> {\r\n return this.messages$.asObservable();\r\n }\r\n thirdPartyMessages(): Observable<MessageEvent> {\r\n return this.thirdPartyMessages$.asObservable();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('message', this.listener);\r\n this.messages$.complete();\r\n this.thirdPartyMessages$.complete();\r\n }\r\n\r\n isValidDomain(paymentType: PaymentType, origin: string) {\r\n if (paymentType == null) return false;\r\n switch(paymentType) {\r\n case PaymentType.JETON:\r\n return this.domain.jetonDomain == origin;\r\n default:\r\n return false;\r\n }\r\n\r\n }\r\n sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage) {\r\n if (iframe == undefined) return;\r\n iframe.nativeElement.contentWindow?.postMessage(\r\n message,\r\n window.location.hostname\r\n );\r\n }\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { IframeMessageService } from './iframe-message.service';\r\nimport { IframeMessageType } from '../model/iframe-message-type';\r\nimport { Checkout } from '../model/checkout';\r\nimport { IframeMessage } from '../model/iframe-message';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaymentService {\r\n popup: Map<string, Checkout> = new Map();\r\n iframe: ElementRef<HTMLIFrameElement> | undefined;//Set from the component\r\n\r\n constructor(private iframeMessageService: IframeMessageService) {\r\n /**\r\n * Listen OPEN_PAYMENT_FORM message to open 3th party page\r\n */\r\n this.iframeMessageService.messages().subscribe(message => {\r\n console.log('Received from iframe:', message);\r\n if (IframeMessageType.OPEN_PAYMENT_FORM != message.type) return;\r\n this.openWindow(message.payload as Checkout);\r\n });\r\n }\r\n\r\n /**\r\n * Open 3th party page on the popup windown or new tab\r\n */\r\n openWindow(checkout: Checkout) {\r\n if (!checkout || this.popup.get(checkout.requestId)) return;\r\n if (this.popup.size > 0) {\r\n //TODO clear the current popup\r\n }\r\n const width = 470;\r\n const height = 550;\r\n // var left = Math.max(0, (screen.width - width) / 2) + (screen.availLeft | 0),\r\n // top = Math.max(0, (screen.height - height) / 2) + (screen.availTop | 0);\r\n // var popup = window.open(url, \"VOdds\", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');\r\n const popup = window.open(checkout.url, \"VOdds\", 'width=' + width + ',height=' + height + ',status=0,location=0,menubar=0,toolbar=0');\r\n if (!popup) {\r\n checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';\r\n this.sendMessageToIframe(checkout);\r\n return;\r\n }\r\n checkout.popup = popup;\r\n this.popup.set(checkout.requestId, checkout);\r\n popup.focus();\r\n this.onThirdPartyPopupClose(checkout);\r\n }\r\n\r\n /**\r\n * Listen message or action from 3th party on the popup\r\n */\r\n onThirdPartyPopupClose(checkout: Checkout) {\r\n this.iframeMessageService.thirdPartyMessages().subscribe(event => {\r\n if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {\r\n console.log('Received from 3th party:', event.data);\r\n //TODO close popup again\r\n checkout.popup = undefined;\r\n checkout.callback = event.data;\r\n this.sendMessageToIframe(checkout);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * send the message from the parent to the iframe\r\n */\r\n sendMessageToIframe(checkout: Checkout) {\r\n if (this.iframe == undefined) return;\r\n let message: IframeMessage = {\r\n type: IframeMessageType.PAYMENT_CALLBACK,\r\n payload: checkout\r\n }\r\n this.iframeMessageService.sendMessageToIframe(this.iframe, message);\r\n }\r\n removePaymentIframe() {\r\n //TODO\r\n this.iframe = undefined;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of epp-lib\r\n */\r\n\r\n// Models\r\nexport * from './lib/model/base-form';\r\nexport * from './lib/model/callback-message';\r\nexport * from './lib/model/checkout';\r\nexport * from './lib/model/domain';\r\nexport * from './lib/model/iframe-message';\r\nexport * from './lib/model/iframe-message-type';\r\nexport * from './lib/model/iparam';\r\nexport * from './lib/model/payment-type';\r\n\r\n// Services\r\nexport * from './lib/service/iframe-message.service';\r\nexport * from './lib/service/payment.service';\r\nexport * from './lib/service/vodds-http.service';\r\n\r\n// Constants\r\nexport * from './lib/api-route.const';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VoddsHttpService","i1.IframeMessageService"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { IframeMessageService } from './iframe-message.service';
3
+ import { Checkout } from '../model/checkout';
4
+ import * as i0 from "@angular/core";
5
+ export declare class PaymentService {
6
+ private iframeMessageService;
7
+ popup: Map<string, Checkout>;
8
+ iframe: ElementRef<HTMLIFrameElement> | undefined;
9
+ constructor(iframeMessageService: IframeMessageService);
10
+ /**
11
+ * Open 3th party page on the popup windown or new tab
12
+ */
13
+ openWindow(checkout: Checkout): void;
14
+ /**
15
+ * Listen message or action from 3th party on the popup
16
+ */
17
+ onThirdPartyPopupClose(checkout: Checkout): void;
18
+ /**
19
+ * send the message from the parent to the iframe
20
+ */
21
+ sendMessageToIframe(checkout: Checkout): void;
22
+ removePaymentIframe(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaymentService, never>;
24
+ static ɵprov: i0.ɵɵInjectableDeclaration<PaymentService>;
25
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "epp-lib",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0"
package/public-api.d.ts CHANGED
@@ -7,4 +7,6 @@ export * from './lib/model/iframe-message-type';
7
7
  export * from './lib/model/iparam';
8
8
  export * from './lib/model/payment-type';
9
9
  export * from './lib/service/iframe-message.service';
10
+ export * from './lib/service/payment.service';
11
+ export * from './lib/service/vodds-http.service';
10
12
  export * from './lib/api-route.const';