epp-lib 0.0.2 → 0.0.4

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.
@@ -1,10 +1,21 @@
1
1
  import { PaymentType } from "./payment-type";
2
2
  export class Checkout {
3
3
  constructor() {
4
- this.requestId = '';
4
+ this.requestId = 0;
5
5
  this.paymentType = PaymentType.NA;
6
6
  this.url = '';
7
+ this.expiration = 300;
7
8
  this.errorMessage = '';
9
+ this.successMessage = '';
10
+ }
11
+ setErrorMessage(errorMessage) {
12
+ this.errorMessage = errorMessage;
13
+ this.popup = undefined;
14
+ }
15
+ setCallback(callback) {
16
+ this.successMessage = 'success';
17
+ this.callback = callback;
18
+ this.popup = undefined;
8
19
  }
9
20
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcHAtbGliL3NyYy9saWIvbW9kZWwvY2hlY2tvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ0ksY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFnQixXQUFXLENBQUMsRUFBRSxDQUFDO1FBQzFDLFFBQUcsR0FBWSxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBVyxFQUFFLENBQUM7SUFHOUIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF5bWVudFR5cGUgfSBmcm9tIFwiLi9wYXltZW50LXR5cGVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dCB7XHJcbiAgICByZXF1ZXN0SWQ6IHN0cmluZyA9ICcnO1xyXG4gICAgcGF5bWVudFR5cGU6IFBheW1lbnRUeXBlID0gUGF5bWVudFR5cGUuTkE7XHJcbiAgICB1cmw6IHN0cmluZyAgPSAnJztcclxuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICBjYWxsYmFjazogYW55O1xyXG4gICAgcG9wdXA6IGFueTtcclxufVxyXG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcHAtbGliL3NyYy9saWIvbW9kZWwvY2hlY2tvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ0ksY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixnQkFBVyxHQUFnQixXQUFXLENBQUMsRUFBRSxDQUFDO1FBQzFDLFFBQUcsR0FBWSxFQUFFLENBQUM7UUFDbEIsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUN6QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQixtQkFBYyxHQUFXLEVBQUUsQ0FBQztJQWNoQyxDQUFDO0lBVkcsZUFBZSxDQUFDLFlBQW9CO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBYTtRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXltZW50VHlwZSB9IGZyb20gXCIuL3BheW1lbnQtdHlwZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIENoZWNrb3V0IHtcclxuICAgIHJlcXVlc3RJZDogbnVtYmVyID0gMDtcclxuICAgIHBheW1lbnRUeXBlOiBQYXltZW50VHlwZSA9IFBheW1lbnRUeXBlLk5BO1xyXG4gICAgdXJsOiBzdHJpbmcgID0gJyc7XHJcbiAgICBleHBpcmF0aW9uOiBudW1iZXIgPSAzMDA7XHJcbiAgICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgc3VjY2Vzc01lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgY2FsbGJhY2s6IGFueTtcclxuICAgIHBvcHVwOiBhbnk7XHJcblxyXG4gICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5wb3B1cCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDYWxsYmFjayhjYWxsYmFjazogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zdWNjZXNzTWVzc2FnZSA9ICdzdWNjZXNzJztcclxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XHJcbiAgICAgICAgdGhpcy5wb3B1cCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,9 +1,9 @@
1
1
  export class Domain {
2
2
  constructor() {
3
3
  this.defaultDomain = '';
4
- this.allowedOrigins = [];
4
+ this.allowedOrigins = ['http://localhost:9000'];
5
5
  this.specialDomain = [];
6
6
  this.jetonDomain = '';
7
7
  }
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXBwLWxpYi9zcmMvbGliL21vZGVsL2RvbWFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sTUFBTTtJQUtmO1FBSkEsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0IsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7SUFDVixDQUFDO0NBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERvbWFpbiB7XHJcbiAgICBkZWZhdWx0RG9tYWluOiBzdHJpbmcgPSAnJztcclxuICAgIGFsbG93ZWRPcmlnaW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgc3BlY2lhbERvbWFpbjogc3RyaW5nW10gPSBbXTtcclxuICAgIGpldG9uRG9tYWluOiBzdHJpbmcgPSAnJztcclxuICAgIGNvbnN0cnVjdG9yKCkge31cclxufVxyXG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXBwLWxpYi9zcmMvbGliL21vZGVsL2RvbWFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sTUFBTTtJQUtmO1FBSkEsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0IsbUJBQWMsR0FBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckQsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7SUFDVixDQUFDO0NBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERvbWFpbiB7XHJcbiAgICBkZWZhdWx0RG9tYWluOiBzdHJpbmcgPSAnJztcclxuICAgIGFsbG93ZWRPcmlnaW5zOiBzdHJpbmdbXSA9IFsnaHR0cDovL2xvY2FsaG9zdDo5MDAwJ107XHJcbiAgICBzcGVjaWFsRG9tYWluOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgamV0b25Eb21haW46IHN0cmluZyA9ICcnO1xyXG4gICAgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcbiJdfQ==
@@ -2,5 +2,7 @@ export var PaymentType;
2
2
  (function (PaymentType) {
3
3
  PaymentType[PaymentType["NA"] = 0] = "NA";
4
4
  PaymentType[PaymentType["JETON"] = 1] = "JETON";
5
+ PaymentType[PaymentType["ECOPAYZ"] = 2] = "ECOPAYZ";
6
+ PaymentType[PaymentType["RAPYD"] = 3] = "RAPYD";
5
7
  })(PaymentType || (PaymentType = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXBwLWxpYi9zcmMvbGliL21vZGVsL3BheW1lbnQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLHlDQUFFLENBQUE7SUFDRiwrQ0FBSyxDQUFBO0FBQ1QsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUGF5bWVudFR5cGUge1xyXG4gICAgTkEsXHJcbiAgICBKRVRPTlxyXG59XHJcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXBwLWxpYi9zcmMvbGliL21vZGVsL3BheW1lbnQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxXQUtYO0FBTEQsV0FBWSxXQUFXO0lBQ25CLHlDQUFFLENBQUE7SUFDRiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtJQUNQLCtDQUFLLENBQUE7QUFDVCxDQUFDLEVBTFcsV0FBVyxLQUFYLFdBQVcsUUFLdEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBQYXltZW50VHlwZSB7XHJcbiAgICBOQSxcclxuICAgIEpFVE9OLFxyXG4gICAgRUNPUEFZWixcclxuICAgIFJBUFlEXHJcbn1cclxuIl19
@@ -0,0 +1,41 @@
1
+ import { Checkout } from "./checkout";
2
+ export class Timer {
3
+ constructor(interval, maxTime) {
4
+ this.interval = 0;
5
+ this.maxTime = 120000; // 2 minute
6
+ this.currentTime = 0;
7
+ this.popupTimer = null;
8
+ this.popup = null;
9
+ this.interval = interval;
10
+ if (maxTime)
11
+ this.maxTime = maxTime;
12
+ }
13
+ oberserableTimer(data, callback) {
14
+ this.popup = data.popup;
15
+ console.log("investigate popup status begin: ", this.popup?.name, this.popup);
16
+ this.popupTimer = setInterval(() => {
17
+ console.log("investigate popup status: ", data);
18
+ if ((this.maxTime > 0 && this.currentTime >= this.maxTime) || !data) {
19
+ this.stopWatcher();
20
+ // TODO Hit expire time
21
+ return;
22
+ }
23
+ this.currentTime += this.interval;
24
+ if (data instanceof Checkout && (!data.popup || (data.popup && data.popup.closed))) { // Handle detect close popup by the user
25
+ console.log("Close popup");
26
+ this.stopWatcher();
27
+ if (callback) {
28
+ data.setErrorMessage("Payment popup is closed");
29
+ callback(data);
30
+ }
31
+ }
32
+ }, this.interval);
33
+ }
34
+ stopWatcher() {
35
+ if (this.popupTimer) {
36
+ clearInterval(this.popupTimer);
37
+ this.popupTimer = null;
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcHAtbGliL3NyYy9saWIvbW9kZWwvdGltZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0QyxNQUFNLE9BQU8sS0FBSztJQU9kLFlBQVksUUFBZ0IsRUFBRSxPQUFnQjtRQU45QyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLFlBQU8sR0FBVyxNQUFNLENBQUMsQ0FBQyxXQUFXO1FBQ3JDLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBMEMsSUFBSSxDQUFDO1FBQ3pELFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBR2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksT0FBTztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNDLENBQUM7SUFDRSxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsUUFBbUI7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLHVCQUF1QjtnQkFDdkIsT0FBTztZQUNYLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEMsSUFBSSxJQUFJLFlBQVksUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLHdDQUF3QztnQkFDMUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFDaEQsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUNELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGVja291dCB9IGZyb20gXCIuL2NoZWNrb3V0XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVGltZXIge1xyXG4gICAgaW50ZXJ2YWw6IG51bWJlciA9IDA7XHJcbiAgICBtYXhUaW1lOiBudW1iZXIgPSAxMjAwMDA7IC8vIDIgbWludXRlXHJcbiAgICBjdXJyZW50VGltZTogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgcG9wdXBUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIHBvcHVwOiBXaW5kb3cgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbnRlcnZhbDogbnVtYmVyLCBtYXhUaW1lPzogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IGludGVydmFsO1xyXG4gICAgICAgIGlmIChtYXhUaW1lKSB0aGlzLm1heFRpbWUgPSBtYXhUaW1lO1xyXG5cdH1cclxuICAgIG9iZXJzZXJhYmxlVGltZXIoZGF0YTogYW55LCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5wb3B1cCA9IGRhdGEucG9wdXA7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJpbnZlc3RpZ2F0ZSBwb3B1cCBzdGF0dXMgYmVnaW46IFwiLCB0aGlzLnBvcHVwPy5uYW1lLCB0aGlzLnBvcHVwKTtcclxuICAgICAgICB0aGlzLnBvcHVwVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW52ZXN0aWdhdGUgcG9wdXAgc3RhdHVzOiBcIiwgZGF0YSk7XHJcbiAgICAgICAgICAgIGlmICgodGhpcy5tYXhUaW1lID4gMCAmJiB0aGlzLmN1cnJlbnRUaW1lID49IHRoaXMubWF4VGltZSkgfHwgIWRhdGEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFdhdGNoZXIoKTtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE8gSGl0IGV4cGlyZSB0aW1lXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VGltZSArPSB0aGlzLmludGVydmFsO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIENoZWNrb3V0ICYmICghZGF0YS5wb3B1cCB8fCAoZGF0YS5wb3B1cCAmJiBkYXRhLnBvcHVwLmNsb3NlZCkpKSB7IC8vIEhhbmRsZSBkZXRlY3QgY2xvc2UgcG9wdXAgYnkgdGhlIHVzZXJcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2xvc2UgcG9wdXBcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BXYXRjaGVyKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnNldEVycm9yTWVzc2FnZShcIlBheW1lbnQgcG9wdXAgaXMgY2xvc2VkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdGhpcy5pbnRlcnZhbCk7XHJcbiAgICB9XHJcbiAgICBzdG9wV2F0Y2hlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5wb3B1cFRpbWVyKSB7XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5wb3B1cFRpbWVyKTtcclxuICAgICAgICAgICAgdGhpcy5wb3B1cFRpbWVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -3,6 +3,7 @@ import { Subject } from 'rxjs';
3
3
  import { Domain } from '../model/domain';
4
4
  import { ApiRoute } from '../api-route.const';
5
5
  import { PaymentType } from '../model/payment-type';
6
+ import { IframeMessageType } from '../model/iframe-message-type';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "./vodds-http.service";
8
9
  export class IframeMessageService {
@@ -12,7 +13,9 @@ export class IframeMessageService {
12
13
  this.messages$ = new Subject();
13
14
  this.thirdPartyMessages$ = new Subject();
14
15
  this.listener = (event) => {
16
+ // console.log("message: ", event);
15
17
  if (!this.domain.allowedOrigins.includes(event.origin)) {
18
+ console.log("listener not allow: ", event);
16
19
  if (this.domain.jetonDomain == event.origin) {
17
20
  this.ngZone.run(() => {
18
21
  this.thirdPartyMessages$.next(event);
@@ -21,9 +24,11 @@ export class IframeMessageService {
21
24
  }
22
25
  return;
23
26
  }
24
- this.ngZone.run(() => {
25
- this.messages$.next(event.data);
26
- });
27
+ if (event.data && IframeMessageType[event.data.type]) {
28
+ this.ngZone.run(() => {
29
+ this.messages$.next(event.data);
30
+ });
31
+ }
27
32
  };
28
33
  this.domain = new Domain();
29
34
  this.http.get(ApiRoute.GET_DOMAIN.url).subscribe({
@@ -60,7 +65,7 @@ export class IframeMessageService {
60
65
  sendMessageToIframe(iframe, message) {
61
66
  if (iframe == undefined)
62
67
  return;
63
- iframe.nativeElement.contentWindow?.postMessage(message, window.location.hostname);
68
+ iframe.nativeElement.contentWindow?.postMessage(message, window.location.origin);
64
69
  }
65
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, deps: [{ token: i0.NgZone }, { token: i1.VoddsHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
66
71
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, providedIn: 'root' }); }
@@ -71,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
71
76
  providedIn: 'root'
72
77
  }]
73
78
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.VoddsHttpService }] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLW1lc3NhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9zZXJ2aWNlL2lmcmFtZS1tZXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFLcEQsTUFBTSxPQUFPLG9CQUFvQjtJQW9CN0IsWUFBNkIsTUFBYyxFQUFVLElBQXNCO1FBQTlDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFrQjtRQW5CMUQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQ3pDLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR2xELGFBQVEsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN6QyxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPO2dCQUNYLENBQUM7Z0JBQ0QsT0FBTztZQUNYLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztRQUdFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM3QyxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUM1QixDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFFLENBQUM7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUNELGtCQUFrQjtRQUNkLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUF3QixFQUFFLE1BQWM7UUFDbEQsSUFBSSxXQUFXLElBQUksSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3RDLFFBQU8sV0FBVyxFQUFFLENBQUM7WUFDakIsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7WUFDN0M7Z0JBQ0ksT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUVMLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxNQUFxQyxFQUFFLE9BQXNCO1FBQzdFLElBQUksTUFBTSxJQUFJLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FDM0MsT0FBTyxFQUNQLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUMzQixDQUFDO0lBQ04sQ0FBQzsrR0E5RFEsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElmcmFtZU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9pZnJhbWUtbWVzc2FnZSc7XHJcbmltcG9ydCB7IERvbWFpbiB9IGZyb20gJy4uL21vZGVsL2RvbWFpbic7XHJcbmltcG9ydCB7IFZvZGRzSHR0cFNlcnZpY2UgfSBmcm9tICcuL3ZvZGRzLWh0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVJvdXRlIH0gZnJvbSAnLi4vYXBpLXJvdXRlLmNvbnN0JztcclxuaW1wb3J0IHsgUGF5bWVudFR5cGUgfSBmcm9tICcuLi9tb2RlbC9wYXltZW50LXR5cGUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSWZyYW1lTWVzc2FnZVNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlcyQgPSBuZXcgU3ViamVjdDxJZnJhbWVNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlyZFBhcnR5TWVzc2FnZXMkID0gbmV3IFN1YmplY3Q8TWVzc2FnZUV2ZW50PigpO1xyXG4gICAgcHJpdmF0ZSBkb21haW46IERvbWFpbjtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RlbmVyID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZG9tYWluLmFsbG93ZWRPcmlnaW5zLmluY2x1ZGVzKGV2ZW50Lm9yaWdpbikpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG9tYWluLmpldG9uRG9tYWluID09IGV2ZW50Lm9yaWdpbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRoaXJkUGFydHlNZXNzYWdlcyQubmV4dChldmVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMkLm5leHQoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUgaHR0cDogVm9kZHNIdHRwU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuZG9tYWluID0gbmV3IERvbWFpbigpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5nZXQoQXBpUm91dGUuR0VUX0RPTUFJTi51cmwpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvbWFpbiA9IHJlc3AuZGF0YTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7fVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5saXN0ZW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgbWVzc2FnZXMoKTogT2JzZXJ2YWJsZTxJZnJhbWVNZXNzYWdlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXMkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcmRQYXJ0eU1lc3NhZ2VzKCk6IE9ic2VydmFibGU8TWVzc2FnZUV2ZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGhpcmRQYXJ0eU1lc3NhZ2VzJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubGlzdGVuZXIpO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMkLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy50aGlyZFBhcnR5TWVzc2FnZXMkLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNWYWxpZERvbWFpbihwYXltZW50VHlwZTogUGF5bWVudFR5cGUsIG9yaWdpbjogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHBheW1lbnRUeXBlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBzd2l0Y2gocGF5bWVudFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5KRVRPTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbWFpbi5qZXRvbkRvbWFpbiA9PSBvcmlnaW47XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHNlbmRNZXNzYWdlVG9JZnJhbWUoaWZyYW1lOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PiwgbWVzc2FnZTogSWZyYW1lTWVzc2FnZSkge1xyXG4gICAgICAgIGlmIChpZnJhbWUgPT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgICAgaWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLW1lc3NhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VwcC1saWIvc3JjL2xpYi9zZXJ2aWNlL2lmcmFtZS1tZXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFLakUsTUFBTSxPQUFPLG9CQUFvQjtJQXdCN0IsWUFBNkIsTUFBYyxFQUFVLElBQXNCO1FBQTlDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFrQjtRQXZCMUQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQ3pDLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR2xELGFBQVEsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUNoRCxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsT0FBTztnQkFDWCxDQUFDO2dCQUNELE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUdFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM3QyxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUM1QixDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFFLENBQUM7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUNELGtCQUFrQjtRQUNkLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUF3QixFQUFFLE1BQWM7UUFDbEQsSUFBSSxXQUFXLElBQUksSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3RDLFFBQU8sV0FBVyxFQUFFLENBQUM7WUFDakIsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7WUFDN0M7Z0JBQ0ksT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUVMLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxNQUFxQyxFQUFFLE9BQXNCO1FBQzdFLElBQUksTUFBTSxJQUFJLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FDM0MsT0FBTyxFQUNQLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUN6QixDQUFDO0lBQ04sQ0FBQzsrR0FsRVEsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElmcmFtZU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9pZnJhbWUtbWVzc2FnZSc7XHJcbmltcG9ydCB7IERvbWFpbiB9IGZyb20gJy4uL21vZGVsL2RvbWFpbic7XHJcbmltcG9ydCB7IFZvZGRzSHR0cFNlcnZpY2UgfSBmcm9tICcuL3ZvZGRzLWh0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVJvdXRlIH0gZnJvbSAnLi4vYXBpLXJvdXRlLmNvbnN0JztcclxuaW1wb3J0IHsgUGF5bWVudFR5cGUgfSBmcm9tICcuLi9tb2RlbC9wYXltZW50LXR5cGUnO1xyXG5pbXBvcnQgeyBJZnJhbWVNZXNzYWdlVHlwZSB9IGZyb20gJy4uL21vZGVsL2lmcmFtZS1tZXNzYWdlLXR5cGUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSWZyYW1lTWVzc2FnZVNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlcyQgPSBuZXcgU3ViamVjdDxJZnJhbWVNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlyZFBhcnR5TWVzc2FnZXMkID0gbmV3IFN1YmplY3Q8TWVzc2FnZUV2ZW50PigpO1xyXG4gICAgcHJpdmF0ZSBkb21haW46IERvbWFpbjtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RlbmVyID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm1lc3NhZ2U6IFwiLCBldmVudCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvbWFpbi5hbGxvd2VkT3JpZ2lucy5pbmNsdWRlcyhldmVudC5vcmlnaW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibGlzdGVuZXIgbm90IGFsbG93OiBcIiwgZXZlbnQpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kb21haW4uamV0b25Eb21haW4gPT0gZXZlbnQub3JpZ2luKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGhpcmRQYXJ0eU1lc3NhZ2VzJC5uZXh0KGV2ZW50KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgSWZyYW1lTWVzc2FnZVR5cGVbZXZlbnQuZGF0YS50eXBlXSkge1xyXG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyQubmV4dChldmVudC5kYXRhKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLCBwcml2YXRlIGh0dHA6IFZvZGRzSHR0cFNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLmRvbWFpbiA9IG5ldyBEb21haW4oKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEFwaVJvdXRlLkdFVF9ET01BSU4udXJsKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcC5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21haW4gPSByZXNwLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge31cclxuICAgICAgICB9KTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lc3NhZ2VzKCk6IE9ic2VydmFibGU8SWZyYW1lTWVzc2FnZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VzJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIHRoaXJkUGFydHlNZXNzYWdlcygpOiBPYnNlcnZhYmxlPE1lc3NhZ2VFdmVudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRoaXJkUGFydHlNZXNzYWdlcyQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLmxpc3RlbmVyKTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzJC5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHRoaXMudGhpcmRQYXJ0eU1lc3NhZ2VzJC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmFsaWREb21haW4ocGF5bWVudFR5cGU6IFBheW1lbnRUeXBlLCBvcmlnaW46IHN0cmluZykge1xyXG4gICAgICAgIGlmIChwYXltZW50VHlwZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgc3dpdGNoKHBheW1lbnRUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuSkVUT046XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21haW4uamV0b25Eb21haW4gPT0gb3JpZ2luO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBzZW5kTWVzc2FnZVRvSWZyYW1lKGlmcmFtZTogRWxlbWVudFJlZjxIVE1MSUZyYW1lRWxlbWVudD4sIG1lc3NhZ2U6IElmcmFtZU1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAoaWZyYW1lID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,100 @@
1
+ import { inject } from '@angular/core';
2
+ import { IframeMessageService } from './iframe-message.service';
3
+ import { IframeMessageType } from '../model/iframe-message-type';
4
+ import { Checkout } from '../model/checkout';
5
+ import { Timer } from '../model/timer';
6
+ import { PaymentType } from '../model/payment-type';
7
+ export class PaymentService {
8
+ constructor() {
9
+ this.cache = new Map();
10
+ this.timer = new Timer(500); // 0.5s
11
+ this.iframeMessageService = inject(IframeMessageService);
12
+ /**
13
+ * Listen OPEN_PAYMENT_FORM message to open 3th party page
14
+ */
15
+ this.iframeMessageService.messages().subscribe(message => {
16
+ console.log('Received from iframe:', message);
17
+ if (IframeMessageType.OPEN_PAYMENT_FORM == message.type) {
18
+ const checkout = Object.assign(new Checkout(), message.payload);
19
+ if (!checkout || this.cache.get(checkout.requestId))
20
+ return;
21
+ if (this.cache.size > 0) {
22
+ this.cache.clear();
23
+ //TODO clear the current popup
24
+ }
25
+ switch (checkout.paymentType) {
26
+ case PaymentType.JETON:
27
+ case PaymentType.ECOPAYZ:
28
+ this.openWindow(checkout);
29
+ break;
30
+ case PaymentType.RAPYD:
31
+ this.openVisaCheckout(checkout);
32
+ break;
33
+ default:
34
+ }
35
+ }
36
+ if (IframeMessageType.PAYMENT_CALLBACK == message.type) {
37
+ this.result = Object.assign(new Checkout(), message.payload);
38
+ }
39
+ });
40
+ }
41
+ /**
42
+ * Open 3th party page on the popup windown or new tab
43
+ */
44
+ openWindow(checkout) {
45
+ console.log("Open windown: ", this.cache);
46
+ const width = 470;
47
+ const height = 550;
48
+ // var left = Math.max(0, (screen.width - width) / 2) + (screen.availLeft | 0),
49
+ // top = Math.max(0, (screen.height - height) / 2) + (screen.availTop | 0);
50
+ // var popup = window.open(url, "VOdds", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');
51
+ const popup = window.open(checkout.url, 'VOdds', 'width=' + width + ',height=' + height + ',status=0,location=0,menubar=0,toolbar=0');
52
+ if (!popup) {
53
+ checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';
54
+ this.sendMessageToIframe(checkout);
55
+ return;
56
+ }
57
+ checkout.popup = popup;
58
+ window.addEventListener("beforeunload", () => {
59
+ window.opener?.postMessage({ type: "vodds-popup-closing12" }, window.location.origin);
60
+ });
61
+ popup.postMessage({ type: "vodds-popup-closing" }, window.location.origin);
62
+ this.cache.set(checkout.requestId, checkout);
63
+ popup.focus();
64
+ this.onThirdPartyPopupClose(checkout);
65
+ }
66
+ /**
67
+ * Listen message or action from 3th party on the popup
68
+ */
69
+ onThirdPartyPopupClose(checkout) {
70
+ this.iframeMessageService.thirdPartyMessages().subscribe(event => {
71
+ if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {
72
+ console.log('Received from 3th party:', event.data);
73
+ checkout.setCallback(event.data);
74
+ this.timer.stopWatcher();
75
+ this.sendMessageToIframe(checkout);
76
+ }
77
+ });
78
+ this.timer.oberserableTimer(checkout, () => this.sendMessageToIframe(checkout));
79
+ }
80
+ /**
81
+ * send the message from the parent to the iframe
82
+ */
83
+ sendMessageToIframe(checkout) {
84
+ console.log("send message to iframe");
85
+ if (this.iframe == undefined)
86
+ return;
87
+ let message = {
88
+ type: IframeMessageType.PAYMENT_CALLBACK,
89
+ payload: checkout
90
+ };
91
+ this.iframeMessageService.sendMessageToIframe(this.iframe, message);
92
+ }
93
+ // removePaymentIframe() {
94
+ // //TODO
95
+ // this.iframe = undefined;
96
+ // }
97
+ async openVisaCheckout(checkout) {
98
+ }
99
+ }
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXBwLWxpYi9zcmMvbGliL3NlcnZpY2UvcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxNQUFNLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE1BQU0sT0FBTyxjQUFjO0lBT3ZCO1FBTkEsVUFBSyxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXpDLFVBQUssR0FBVSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU87UUFFOUIseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFHeEQ7O1dBRUc7UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsSUFBSSxpQkFBaUIsQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sUUFBUSxHQUFhLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFD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LENBQUM7Z0JBQ3BELFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsUUFBa0I7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTO1lBQUUsT0FBTztRQUNyQyxJQUFJLE9BQU8sR0FBa0I7WUFDekIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLGdCQUFnQjtZQUN4QyxPQUFPLEVBQUUsUUFBUTtTQUNwQixDQUFBO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELDBCQUEwQjtJQUMxQixhQUFhO0lBQ2IsK0JBQStCO0lBQy9CLElBQUk7SUFDSixLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBa0I7SUFFekMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSWZyYW1lTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL2lmcmFtZS1tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJZnJhbWVNZXNzYWdlVHlwZSB9IGZyb20gJy4uL21vZGVsL2lmcmFtZS1tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyBDaGVja291dCB9IGZyb20gJy4uL21vZGVsL2NoZWNrb3V0JztcclxuaW1wb3J0IHsgSWZyYW1lTWVzc2FnZSB9IGZyb20gJy4uL21vZGVsL2lmcmFtZS1tZXNzYWdlJztcclxuaW1wb3J0IHsgVGltZXIgfSBmcm9tICcuLi9tb2RlbC90aW1lcic7XHJcbmltcG9ydCB7IFBheW1lbnRUeXBlIH0gZnJvbSAnLi4vbW9kZWwvcGF5bWVudC10eXBlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50U2VydmljZSB7XHJcbiAgICBjYWNoZTogTWFwPG51bWJlciwgQ2hlY2tvdXQ+ID0gbmV3IE1hcCgpO1xyXG4gICAgaWZyYW1lOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PiB8IHVuZGVmaW5lZDsvL1NldCBmcm9tIHRoZSBjb21wb25lbnRcclxuICAgIHRpbWVyOiBUaW1lciA9IG5ldyBUaW1lcig1MDApOyAvLyAwLjVzXHJcbiAgICByZXN1bHQ6IENoZWNrb3V0IHwgdW5kZWZpbmVkO1xyXG4gICAgcHJpdmF0ZSBpZnJhbWVNZXNzYWdlU2VydmljZSA9IGluamVjdChJZnJhbWVNZXNzYWdlU2VydmljZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogTGlzdGVuIE9QRU5fUEFZTUVOVF9GT1JNIG1lc3NhZ2UgdG8gb3BlbiAzdGggcGFydHkgcGFnZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuaWZyYW1lTWVzc2FnZVNlcnZpY2UubWVzc2FnZXMoKS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCBmcm9tIGlmcmFtZTonLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgaWYgKElmcmFtZU1lc3NhZ2VUeXBlLk9QRU5fUEFZTUVOVF9GT1JNID09IG1lc3NhZ2UudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tvdXQ6IENoZWNrb3V0ID0gT2JqZWN0LmFzc2lnbihuZXcgQ2hlY2tvdXQoKSwgbWVzc2FnZS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIGlmICghY2hlY2tvdXQgfHwgdGhpcy5jYWNoZS5nZXQoY2hlY2tvdXQucmVxdWVzdElkKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGUuc2l6ZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9UT0RPIGNsZWFyIHRoZSBjdXJyZW50IHBvcHVwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoZWNrb3V0LnBheW1lbnRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXltZW50VHlwZS5KRVRPTjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFBheW1lbnRUeXBlLkVDT1BBWVo6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbldpbmRvdyhjaGVja291dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUGF5bWVudFR5cGUuUkFQWUQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlblZpc2FDaGVja291dChjaGVja291dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKElmcmFtZU1lc3NhZ2VUeXBlLlBBWU1FTlRfQ0FMTEJBQ0sgPT0gbWVzc2FnZS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdCA9IE9iamVjdC5hc3NpZ24obmV3IENoZWNrb3V0KCksIG1lc3NhZ2UucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gM3RoIHBhcnR5IHBhZ2Ugb24gdGhlIHBvcHVwIHdpbmRvd24gb3IgbmV3IHRhYlxyXG4gICAgICovXHJcbiAgICBvcGVuV2luZG93KGNoZWNrb3V0OiBDaGVja291dCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiT3BlbiB3aW5kb3duOiBcIiwgdGhpcy5jYWNoZSk7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSA0NzA7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gNTUwO1xyXG4gICAgICAgIC8vIHZhciBsZWZ0ID0gTWF0aC5tYXgoMCwgKHNjcmVlbi53aWR0aCAtIHdpZHRoKSAvIDIpICsgKHNjcmVlbi5hdmFpbExlZnQgfCAwKSxcclxuICAgICAgICAvLyB0b3AgPSBNYXRoLm1heCgwLCAoc2NyZWVuLmhlaWdodCAtIGhlaWdodCkgLyAyKSArIChzY3JlZW4uYXZhaWxUb3AgfCAwKTtcclxuICAgICAgICAvLyB2YXIgcG9wdXAgPSB3aW5kb3cub3Blbih1cmwsIFwiVk9kZHNcIiwgJ3dpZHRoPScgKyB3aWR0aCArICcsaGVpZ2h0PScgKyBoZWlnaHQgKyAnLGxlZnQ9JyArIGxlZnQgKyAnLHRvcD0nICsgdG9wICsgJyxzdGF0dXM9MCxsb2NhdGlvbj0wLG1lbnViYXI9MCx0b29sYmFyPTAnKTtcclxuICAgICAgICBjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKGNoZWNrb3V0LnVybCwgJ1ZPZGRzJywgJ3dpZHRoPScgKyB3aWR0aCArICcsaGVpZ2h0PScgKyBoZWlnaHQgKyAnLHN0YXR1cz0wLGxvY2F0aW9uPTAsbWVudWJhcj0wLHRvb2xiYXI9MCcpO1xyXG4gICAgICAgIGlmICghcG9wdXApIHtcclxuICAgICAgICAgICAgY2hlY2tvdXQuZXJyb3JNZXNzYWdlID0gJ1lvdXIgc2V0dGluZyBwcmV2ZW50cyBwb3B1cHMuIFBsZWFzZSBjaGFuZ2UgeW91ciBzZXR0aW5nIHRvIGFsbG93IGl0Lic7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2VUb0lmcmFtZShjaGVja291dCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hlY2tvdXQucG9wdXAgPSBwb3B1cDtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuZXI/LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiBcInZvZGRzLXBvcHVwLWNsb3NpbmcxMlwiIH0sXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcG9wdXAucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgICAgIHsgdHlwZTogXCJ2b2Rkcy1wb3B1cC1jbG9zaW5nXCIgfSxcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLm9yaWdpblxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5jYWNoZS5zZXQoY2hlY2tvdXQucmVxdWVzdElkLCBjaGVja291dCk7XHJcbiAgICAgICAgcG9wdXAuZm9jdXMoKTtcclxuICAgICAgICB0aGlzLm9uVGhpcmRQYXJ0eVBvcHVwQ2xvc2UoY2hlY2tvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGVuIG1lc3NhZ2Ugb3IgYWN0aW9uIGZyb20gM3RoIHBhcnR5IG9uIHRoZSBwb3B1cFxyXG4gICAgICovXHJcbiAgICBvblRoaXJkUGFydHlQb3B1cENsb3NlKGNoZWNrb3V0OiBDaGVja291dCkge1xyXG4gICAgICAgIHRoaXMuaWZyYW1lTWVzc2FnZVNlcnZpY2UudGhpcmRQYXJ0eU1lc3NhZ2VzKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaWZyYW1lTWVzc2FnZVNlcnZpY2UuaXNWYWxpZERvbWFpbihjaGVja291dC5wYXltZW50VHlwZSwgZXZlbnQub3JpZ2luKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIGZyb20gM3RoIHBhcnR5OicsIGV2ZW50LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgY2hlY2tvdXQuc2V0Q2FsbGJhY2soZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVyLnN0b3BXYXRjaGVyKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy50aW1lci5vYmVyc2VyYWJsZVRpbWVyKGNoZWNrb3V0LCAoKSA9PiAgdGhpcy5zZW5kTWVzc2FnZVRvSWZyYW1lKGNoZWNrb3V0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZW5kIHRoZSBtZXNzYWdlIGZyb20gdGhlIHBhcmVudCB0byB0aGUgaWZyYW1lXHJcbiAgICAgKi9cclxuICAgIHNlbmRNZXNzYWdlVG9JZnJhbWUoY2hlY2tvdXQ6IENoZWNrb3V0KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJzZW5kIG1lc3NhZ2UgdG8gaWZyYW1lXCIpO1xyXG4gICAgICAgIGlmICh0aGlzLmlmcmFtZSA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBsZXQgbWVzc2FnZTogSWZyYW1lTWVzc2FnZSA9IHtcclxuICAgICAgICAgICAgdHlwZTogSWZyYW1lTWVzc2FnZVR5cGUuUEFZTUVOVF9DQUxMQkFDSyxcclxuICAgICAgICAgICAgcGF5bG9hZDogY2hlY2tvdXRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pZnJhbWVNZXNzYWdlU2VydmljZS5zZW5kTWVzc2FnZVRvSWZyYW1lKHRoaXMuaWZyYW1lLCBtZXNzYWdlKTtcclxuICAgIH1cclxuICAgIC8vIHJlbW92ZVBheW1lbnRJZnJhbWUoKSB7XHJcbiAgICAvLyAgICAgLy9UT0RPXHJcbiAgICAvLyAgICAgdGhpcy5pZnJhbWUgPSB1bmRlZmluZWQ7XHJcbiAgICAvLyB9XHJcbiAgICBhc3luYyBvcGVuVmlzYUNoZWNrb3V0KGNoZWNrb3V0OiBDaGVja291dCkge1xyXG5cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -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==
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/common/http';
2
2
  import { HttpParams, HttpHeaders } from '@angular/common/http';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable } from '@angular/core';
4
+ import { Injectable, inject } from '@angular/core';
5
5
  import { Observable, Subject } from 'rxjs';
6
6
 
7
7
  class IParam {
@@ -74,21 +74,34 @@ var PaymentType;
74
74
  (function (PaymentType) {
75
75
  PaymentType[PaymentType["NA"] = 0] = "NA";
76
76
  PaymentType[PaymentType["JETON"] = 1] = "JETON";
77
+ PaymentType[PaymentType["ECOPAYZ"] = 2] = "ECOPAYZ";
78
+ PaymentType[PaymentType["RAPYD"] = 3] = "RAPYD";
77
79
  })(PaymentType || (PaymentType = {}));
78
80
 
79
81
  class Checkout {
80
82
  constructor() {
81
- this.requestId = '';
83
+ this.requestId = 0;
82
84
  this.paymentType = PaymentType.NA;
83
85
  this.url = '';
86
+ this.expiration = 300;
84
87
  this.errorMessage = '';
88
+ this.successMessage = '';
89
+ }
90
+ setErrorMessage(errorMessage) {
91
+ this.errorMessage = errorMessage;
92
+ this.popup = undefined;
93
+ }
94
+ setCallback(callback) {
95
+ this.successMessage = 'success';
96
+ this.callback = callback;
97
+ this.popup = undefined;
85
98
  }
86
99
  }
87
100
 
88
101
  class Domain {
89
102
  constructor() {
90
103
  this.defaultDomain = '';
91
- this.allowedOrigins = [];
104
+ this.allowedOrigins = ['http://localhost:9000'];
92
105
  this.specialDomain = [];
93
106
  this.jetonDomain = '';
94
107
  }
@@ -163,7 +176,9 @@ class IframeMessageService {
163
176
  this.messages$ = new Subject();
164
177
  this.thirdPartyMessages$ = new Subject();
165
178
  this.listener = (event) => {
179
+ // console.log("message: ", event);
166
180
  if (!this.domain.allowedOrigins.includes(event.origin)) {
181
+ console.log("listener not allow: ", event);
167
182
  if (this.domain.jetonDomain == event.origin) {
168
183
  this.ngZone.run(() => {
169
184
  this.thirdPartyMessages$.next(event);
@@ -172,9 +187,11 @@ class IframeMessageService {
172
187
  }
173
188
  return;
174
189
  }
175
- this.ngZone.run(() => {
176
- this.messages$.next(event.data);
177
- });
190
+ if (event.data && IframeMessageType[event.data.type]) {
191
+ this.ngZone.run(() => {
192
+ this.messages$.next(event.data);
193
+ });
194
+ }
178
195
  };
179
196
  this.domain = new Domain();
180
197
  this.http.get(ApiRoute.GET_DOMAIN.url).subscribe({
@@ -211,7 +228,7 @@ class IframeMessageService {
211
228
  sendMessageToIframe(iframe, message) {
212
229
  if (iframe == undefined)
213
230
  return;
214
- iframe.nativeElement.contentWindow?.postMessage(message, window.location.hostname);
231
+ iframe.nativeElement.contentWindow?.postMessage(message, window.location.origin);
215
232
  }
216
233
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, deps: [{ token: i0.NgZone }, { token: VoddsHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
217
234
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IframeMessageService, providedIn: 'root' }); }
@@ -223,6 +240,140 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
223
240
  }]
224
241
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: VoddsHttpService }] });
225
242
 
243
+ class Timer {
244
+ constructor(interval, maxTime) {
245
+ this.interval = 0;
246
+ this.maxTime = 120000; // 2 minute
247
+ this.currentTime = 0;
248
+ this.popupTimer = null;
249
+ this.popup = null;
250
+ this.interval = interval;
251
+ if (maxTime)
252
+ this.maxTime = maxTime;
253
+ }
254
+ oberserableTimer(data, callback) {
255
+ this.popup = data.popup;
256
+ console.log("investigate popup status begin: ", this.popup?.name, this.popup);
257
+ this.popupTimer = setInterval(() => {
258
+ console.log("investigate popup status: ", data);
259
+ if ((this.maxTime > 0 && this.currentTime >= this.maxTime) || !data) {
260
+ this.stopWatcher();
261
+ // TODO Hit expire time
262
+ return;
263
+ }
264
+ this.currentTime += this.interval;
265
+ if (data instanceof Checkout && (!data.popup || (data.popup && data.popup.closed))) { // Handle detect close popup by the user
266
+ console.log("Close popup");
267
+ this.stopWatcher();
268
+ if (callback) {
269
+ data.setErrorMessage("Payment popup is closed");
270
+ callback(data);
271
+ }
272
+ }
273
+ }, this.interval);
274
+ }
275
+ stopWatcher() {
276
+ if (this.popupTimer) {
277
+ clearInterval(this.popupTimer);
278
+ this.popupTimer = null;
279
+ }
280
+ }
281
+ }
282
+
283
+ class PaymentService {
284
+ constructor() {
285
+ this.cache = new Map();
286
+ this.timer = new Timer(500); // 0.5s
287
+ this.iframeMessageService = inject(IframeMessageService);
288
+ /**
289
+ * Listen OPEN_PAYMENT_FORM message to open 3th party page
290
+ */
291
+ this.iframeMessageService.messages().subscribe(message => {
292
+ console.log('Received from iframe:', message);
293
+ if (IframeMessageType.OPEN_PAYMENT_FORM == message.type) {
294
+ const checkout = Object.assign(new Checkout(), message.payload);
295
+ if (!checkout || this.cache.get(checkout.requestId))
296
+ return;
297
+ if (this.cache.size > 0) {
298
+ this.cache.clear();
299
+ //TODO clear the current popup
300
+ }
301
+ switch (checkout.paymentType) {
302
+ case PaymentType.JETON:
303
+ case PaymentType.ECOPAYZ:
304
+ this.openWindow(checkout);
305
+ break;
306
+ case PaymentType.RAPYD:
307
+ this.openVisaCheckout(checkout);
308
+ break;
309
+ default:
310
+ }
311
+ }
312
+ if (IframeMessageType.PAYMENT_CALLBACK == message.type) {
313
+ this.result = Object.assign(new Checkout(), message.payload);
314
+ }
315
+ });
316
+ }
317
+ /**
318
+ * Open 3th party page on the popup windown or new tab
319
+ */
320
+ openWindow(checkout) {
321
+ console.log("Open windown: ", this.cache);
322
+ const width = 470;
323
+ const height = 550;
324
+ // var left = Math.max(0, (screen.width - width) / 2) + (screen.availLeft | 0),
325
+ // top = Math.max(0, (screen.height - height) / 2) + (screen.availTop | 0);
326
+ // var popup = window.open(url, "VOdds", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');
327
+ const popup = window.open(checkout.url, 'VOdds', 'width=' + width + ',height=' + height + ',status=0,location=0,menubar=0,toolbar=0');
328
+ if (!popup) {
329
+ checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';
330
+ this.sendMessageToIframe(checkout);
331
+ return;
332
+ }
333
+ checkout.popup = popup;
334
+ window.addEventListener("beforeunload", () => {
335
+ window.opener?.postMessage({ type: "vodds-popup-closing12" }, window.location.origin);
336
+ });
337
+ popup.postMessage({ type: "vodds-popup-closing" }, window.location.origin);
338
+ this.cache.set(checkout.requestId, checkout);
339
+ popup.focus();
340
+ this.onThirdPartyPopupClose(checkout);
341
+ }
342
+ /**
343
+ * Listen message or action from 3th party on the popup
344
+ */
345
+ onThirdPartyPopupClose(checkout) {
346
+ this.iframeMessageService.thirdPartyMessages().subscribe(event => {
347
+ if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {
348
+ console.log('Received from 3th party:', event.data);
349
+ checkout.setCallback(event.data);
350
+ this.timer.stopWatcher();
351
+ this.sendMessageToIframe(checkout);
352
+ }
353
+ });
354
+ this.timer.oberserableTimer(checkout, () => this.sendMessageToIframe(checkout));
355
+ }
356
+ /**
357
+ * send the message from the parent to the iframe
358
+ */
359
+ sendMessageToIframe(checkout) {
360
+ console.log("send message to iframe");
361
+ if (this.iframe == undefined)
362
+ return;
363
+ let message = {
364
+ type: IframeMessageType.PAYMENT_CALLBACK,
365
+ payload: checkout
366
+ };
367
+ this.iframeMessageService.sendMessageToIframe(this.iframe, message);
368
+ }
369
+ // removePaymentIframe() {
370
+ // //TODO
371
+ // this.iframe = undefined;
372
+ // }
373
+ async openVisaCheckout(checkout) {
374
+ }
375
+ }
376
+
226
377
  /*
227
378
  * Public API Surface of epp-lib
228
379
  */
@@ -232,5 +383,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
232
383
  * Generated bundle index. Do not edit.
233
384
  */
234
385
 
235
- export { ApiRoute, BaseForm, CallbackMessage, Checkout, Domain, IParam, IframeMessageService, IframeMessageType, PaymentType };
386
+ export { ApiRoute, BaseForm, CallbackMessage, Checkout, Domain, IParam, IframeMessageService, IframeMessageType, PaymentService, PaymentType, VoddsHttpService };
236
387
  //# 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":";;;;;;MAAa,MAAM,CAAA;IACf,aAAa,GAAA;QACT,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAClE;IAEA,MAAM,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC/B;IAEA,gBAAgB,GAAA;AACZ,QAAA,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3G;AACH;;ACTK,MAAO,QAAS,SAAQ,MAAM,CAAA;AAGnC,IAAA,WAAA,GAAA;AACO,QAAA,KAAK,EAAE;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;IACxB;AAEA;;;AAGG;IACH,iBAAiB,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;QACpC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,OAAO,MAAM;IACd;AAEA;;AAEG;IACH,aAAa,GAAA;AACZ,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjD,QAAA,OAAO,MAAM;IACd;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,MAAW,EAAA;AACtB,QAAA,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ;IACnC;AAEA;;AAEG;IACH,4BAA4B,GAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW;AAC7B,aAAA,GAAG,CAAC,cAAc,EAAE,kDAAkD,CAAC;AACzE,QAAA,OAAO,OAAO;IACf;AAEA;;AAEG;IACH,4BAA4B,GAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW;AAC7B,aAAA,GAAG,CAAC,cAAc,EAAE,iCAAiC,CAAC;AACxD,QAAA,OAAO,OAAO;IACf;AACA;;MCvDY,eAAe,CAAA;AAGxB,IAAA,WAAA,CAAY,YAAoB,EAAA;QAFhC,IAAA,CAAA,YAAY,GAAW,EAAE;AAGrB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;IACpC;AACH;;ICNW;AAAZ,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,WAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE;AACF,IAAA,WAAA,CAAA,WAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACT,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;MCEV,QAAQ,CAAA;AAArB,IAAA,WAAA,GAAA;QACI,IAAA,CAAA,SAAS,GAAW,EAAE;AACtB,QAAA,IAAA,CAAA,WAAW,GAAgB,WAAW,CAAC,EAAE;QACzC,IAAA,CAAA,GAAG,GAAY,EAAE;QACjB,IAAA,CAAA,YAAY,GAAW,EAAE;IAG7B;AAAC;;MCTY,MAAM,CAAA;AAKf,IAAA,WAAA,GAAA;QAJA,IAAA,CAAA,aAAa,GAAW,EAAE;QAC1B,IAAA,CAAA,cAAc,GAAa,EAAE;QAC7B,IAAA,CAAA,aAAa,GAAa,EAAE;QAC5B,IAAA,CAAA,WAAW,GAAW,EAAE;IACT;AAClB;;ICNW;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAiB;AACjB,IAAA,iBAAA,CAAA,iBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB;AACpB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;ACAtB,MAAM,QAAQ,GAAG;IACpB,UAAU,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK;;;MCOrC,gBAAgB,CAAA;AAEzB,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAgB;IAE7C,QAAQ,CAAC,GAAW,EAAE,OAAe,EAAA;QACjC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;AACvE,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACnE;IAEA,GAAG,CAAI,GAAW,EAAE,KAAc,EAAA;QAC9B,IAAG,KAAK,EAAE;YACN,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,gBAAgB,EAAE;QAC9C;QACA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,CAAC;IACtC;IACA,IAAI,CAAI,GAAW,EAAE,MAAY,EAAA;AAC7B,QAAA,MAAM,UAAU,GAAoB,IAAI,UAAU,CAAC,QAAQ,IAAG;AAC1D,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAM,GAAG,EAAE,MAAM,CAAC,CAAC,SAAS,CAC3C,GAAG,IAAG;AACF,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,CAAC,EACD,GAAG,IAAG;AACF,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,YAAA,CAAC,CACJ;AACL,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,UAAU;IACrB;IAEA,kBAAkB,CAAC,GAAW,EAAE,OAAe,EAAA;AAC3C,QAAA,IAAI,OAAO,GAAG;YACV,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC;SACrF;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC;IACzE;AAEA,IAAA,aAAa,CAAC,GAAW,EAAA;QACrB,IAAI,UAAU,GAAG,GAAG;AACpB,QAAA,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;AACnC,QAAA,IAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAC;YACzB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrC,YAAA,UAAU,GAAG,MAAM,GAAG,GAAG;QAC7B;AAEA,QAAA,OAAO,UAAU;IACrB;IAEA,UAAU,CAAC,GAAW,EAAE,KAAa,EAAA;QACjC,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE;IAC/C;+GAjDS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCIY,oBAAoB,CAAA;IAoB7B,WAAA,CAA6B,MAAc,EAAU,IAAsB,EAAA;QAA9C,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,IAAI,GAAJ,IAAI;AAnBxC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAiB;AACxC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAgB;AAGjD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAmB,KAAI;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACpD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,EAAE;AACzC,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACjB,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,oBAAA,CAAC,CAAC;oBACF;gBACJ;gBACA;YACJ;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;AAGG,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC7C,YAAA,IAAI,EAAE,CAAC,IAAS,KAAI;AAChB,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI;gBAC3B;YACJ,CAAC;AACD,YAAA,KAAK,EAAE,GAAG,MAAK;AAClB,SAAA,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;IACrD;IAEA,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;IACxC;IACA,kBAAkB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;IAClD;IAEA,WAAW,GAAA;QACP,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;IACvC;IAEA,aAAa,CAAC,WAAwB,EAAE,MAAc,EAAA;QAClD,IAAI,WAAW,IAAI,IAAI;AAAE,YAAA,OAAO,KAAK;QACrC,QAAO,WAAW;YACd,KAAK,WAAW,CAAC,KAAK;AAClB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM;AAC5C,YAAA;AACI,gBAAA,OAAO,KAAK;;IAGxB;IACA,mBAAmB,CAAC,MAAqC,EAAE,OAAsB,EAAA;QAC7E,IAAI,MAAM,IAAI,SAAS;YAAE;AACzB,QAAA,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,CAC3C,OAAO,EACP,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAC3B;IACL;+GA9DS,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACVD;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
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/model/timer.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 ECOPAYZ,\r\n RAPYD\r\n}\r\n","import { PaymentType } from \"./payment-type\";\r\n\r\nexport class Checkout {\r\n requestId: number = 0;\r\n paymentType: PaymentType = PaymentType.NA;\r\n url: string = '';\r\n expiration: number = 300;\r\n errorMessage: string = '';\r\n successMessage: string = '';\r\n callback: any;\r\n popup: any;\r\n\r\n setErrorMessage(errorMessage: string) {\r\n this.errorMessage = errorMessage;\r\n this.popup = undefined;\r\n }\r\n\r\n setCallback(callback: any) {\r\n this.successMessage = 'success';\r\n this.callback = callback;\r\n this.popup = undefined;\r\n }\r\n}\r\n","export class Domain {\r\n defaultDomain: string = '';\r\n allowedOrigins: string[] = ['http://localhost:9000'];\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\nimport { IframeMessageType } from '../model/iframe-message-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 // console.log(\"message: \", event);\r\n if (!this.domain.allowedOrigins.includes(event.origin)) {\r\n console.log(\"listener not allow: \", event);\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 if (event.data && IframeMessageType[event.data.type]) {\r\n this.ngZone.run(() => {\r\n this.messages$.next(event.data);\r\n });\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.origin\r\n );\r\n }\r\n}\r\n","import { Checkout } from \"./checkout\";\r\n\r\nexport class Timer {\r\n interval: number = 0;\r\n maxTime: number = 120000; // 2 minute\r\n currentTime: number = 0;\r\n private popupTimer: ReturnType<typeof setInterval> | null = null;\r\n private popup: Window | null = null;\r\n\r\n constructor(interval: number, maxTime?: number) {\r\n this.interval = interval;\r\n if (maxTime) this.maxTime = maxTime;\r\n\t}\r\n oberserableTimer(data: any, callback?: Function) {\r\n this.popup = data.popup;\r\n console.log(\"investigate popup status begin: \", this.popup?.name, this.popup);\r\n this.popupTimer = setInterval(() => {\r\n console.log(\"investigate popup status: \", data);\r\n if ((this.maxTime > 0 && this.currentTime >= this.maxTime) || !data) {\r\n this.stopWatcher();\r\n // TODO Hit expire time\r\n return;\r\n }\r\n this.currentTime += this.interval;\r\n if (data instanceof Checkout && (!data.popup || (data.popup && data.popup.closed))) { // Handle detect close popup by the user\r\n console.log(\"Close popup\");\r\n this.stopWatcher();\r\n if (callback) {\r\n data.setErrorMessage(\"Payment popup is closed\");\r\n callback(data);\r\n }\r\n }\r\n }, this.interval);\r\n }\r\n stopWatcher() {\r\n if (this.popupTimer) {\r\n clearInterval(this.popupTimer);\r\n this.popupTimer = null;\r\n }\r\n }\r\n}","import { ElementRef, inject, Injectable, ViewChild } 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\nimport { Timer } from '../model/timer';\r\nimport { PaymentType } from '../model/payment-type';\r\n\r\nexport class PaymentService {\r\n cache: Map<number, Checkout> = new Map();\r\n iframe: ElementRef<HTMLIFrameElement> | undefined;//Set from the component\r\n timer: Timer = new Timer(500); // 0.5s\r\n result: Checkout | undefined;\r\n private iframeMessageService = inject(IframeMessageService);\r\n\r\n constructor() {\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) {\r\n const checkout: Checkout = Object.assign(new Checkout(), message.payload);\r\n if (!checkout || this.cache.get(checkout.requestId)) return;\r\n if (this.cache.size > 0) {\r\n this.cache.clear();\r\n //TODO clear the current popup\r\n }\r\n switch (checkout.paymentType) {\r\n case PaymentType.JETON:\r\n case PaymentType.ECOPAYZ:\r\n this.openWindow(checkout);\r\n break;\r\n case PaymentType.RAPYD:\r\n this.openVisaCheckout(checkout);\r\n break;\r\n default:\r\n }\r\n }\r\n if (IframeMessageType.PAYMENT_CALLBACK == message.type) {\r\n this.result = Object.assign(new Checkout(), message.payload);\r\n }\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 console.log(\"Open windown: \", this.cache);\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 window.addEventListener(\"beforeunload\", () => {\r\n window.opener?.postMessage(\r\n { type: \"vodds-popup-closing12\" },\r\n window.location.origin\r\n );\r\n });\r\n popup.postMessage(\r\n { type: \"vodds-popup-closing\" },\r\n window.location.origin\r\n );\r\n this.cache.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 checkout.setCallback(event.data);\r\n this.timer.stopWatcher();\r\n this.sendMessageToIframe(checkout);\r\n }\r\n });\r\n this.timer.oberserableTimer(checkout, () => this.sendMessageToIframe(checkout));\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 console.log(\"send message to iframe\");\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 async openVisaCheckout(checkout: Checkout) {\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\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"],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  import { PaymentType } from "./payment-type";
2
2
  export declare class Checkout {
3
- requestId: string;
3
+ requestId: number;
4
4
  paymentType: PaymentType;
5
5
  url: string;
6
+ expiration: number;
6
7
  errorMessage: string;
8
+ successMessage: string;
7
9
  callback: any;
8
10
  popup: any;
11
+ setErrorMessage(errorMessage: string): void;
12
+ setCallback(callback: any): void;
9
13
  }
@@ -1,4 +1,6 @@
1
1
  export declare enum PaymentType {
2
2
  NA = 0,
3
- JETON = 1
3
+ JETON = 1,
4
+ ECOPAYZ = 2,
5
+ RAPYD = 3
4
6
  }
@@ -0,0 +1,10 @@
1
+ export declare class Timer {
2
+ interval: number;
3
+ maxTime: number;
4
+ currentTime: number;
5
+ private popupTimer;
6
+ private popup;
7
+ constructor(interval: number, maxTime?: number);
8
+ oberserableTimer(data: any, callback?: Function): void;
9
+ stopWatcher(): void;
10
+ }
@@ -0,0 +1,24 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { Checkout } from '../model/checkout';
3
+ import { Timer } from '../model/timer';
4
+ export declare class PaymentService {
5
+ cache: Map<number, Checkout>;
6
+ iframe: ElementRef<HTMLIFrameElement> | undefined;
7
+ timer: Timer;
8
+ result: Checkout | undefined;
9
+ private iframeMessageService;
10
+ constructor();
11
+ /**
12
+ * Open 3th party page on the popup windown or new tab
13
+ */
14
+ openWindow(checkout: Checkout): void;
15
+ /**
16
+ * Listen message or action from 3th party on the popup
17
+ */
18
+ onThirdPartyPopupClose(checkout: Checkout): void;
19
+ /**
20
+ * send the message from the parent to the iframe
21
+ */
22
+ sendMessageToIframe(checkout: Checkout): void;
23
+ openVisaCheckout(checkout: Checkout): Promise<void>;
24
+ }
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "epp-lib",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
- "@angular/core": "^17.3.0"
6
+ "@angular/core": "^17.3.0",
7
+ "@angular/material": "^17.3.0"
7
8
  },
8
9
  "dependencies": {
9
10
  "tslib": "^2.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';