UNPKG

ynkap-payment

Version:

Module de paiement Y-Nkap pour Angular - Intégration simple des paiements mobiles (Orange Money, MTN Mobile Money)

117 lines 12.9 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; export class ConfigurationService { /** * Get the current API configuration */ get config$() { return this.configSubject.asObservable(); } /** * Get the current API configuration synchronously */ get currentConfig() { return this.configSubject.getValue(); } get apiUrl() { return this._apiUrl; } set apiUrl(url) { this._apiUrl = url; } constructor() { this.defaultApiBaseUrl = 'https://api.ynkap.com/v1'; this.sandboxApiBaseUrl = 'https://sandbox.api.ynkap.com/v1'; this.configSubject = new BehaviorSubject(null); this.initialized = false; this._apiUrl = 'https://api.ynkap.com/v1'; } /** * Initialize the module with API configuration * @param config The API configuration * @returns True if initialization was successful, false otherwise */ initialize(config) { if (!this.validateConfig(config)) { console.error('Y-Nkap: Invalid configuration provided'); return false; } // Set defaults if not provided const completeConfig = { ...config, environment: config.environment || 'production', apiBaseUrl: config.apiBaseUrl || (config.environment === 'sandbox' ? this.sandboxApiBaseUrl : this.defaultApiBaseUrl) }; this.configSubject.next(completeConfig); this.initialized = true; return true; } /** * Check if the module has been initialized */ isInitialized() { return this.initialized; } /** * Reset the configuration */ reset() { this.configSubject.next(null); this.initialized = false; } /** * Update part of the configuration * @param partialConfig Partial configuration to update * @returns True if update was successful, false otherwise */ updateConfig(partialConfig) { const currentConfig = this.currentConfig; if (!currentConfig) { console.error('Y-Nkap: Cannot update config before initialization'); return false; } const updatedConfig = { ...currentConfig, ...partialConfig }; if (!this.validateConfig(updatedConfig)) { console.error('Y-Nkap: Invalid configuration update'); return false; } this.configSubject.next(updatedConfig); return true; } /** * Validate API configuration * @param config The API configuration to validate * @returns True if configuration is valid, false otherwise */ validateConfig(config) { // Check if required fields are present and not empty if (!config.apiKey || config.apiKey.trim() === '') { console.error('Y-Nkap: API Key is required'); return false; } if (!config.apiSecret || config.apiSecret.trim() === '') { console.error('Y-Nkap: API Secret is required'); return false; } if (!config.merchantId || config.merchantId.trim() === '') { console.error('Y-Nkap: Merchant ID is required'); return false; } // Validate environment if provided if (config.environment && !['production', 'sandbox'].includes(config.environment)) { console.error('Y-Nkap: Environment must be either "production" or "sandbox"'); return false; } return true; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW5rYXAvc3JjL2xpYi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxvQkFBb0I7SUFRL0I7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEdBQVc7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUVEO1FBN0JpQixzQkFBaUIsR0FBRywwQkFBMEIsQ0FBQztRQUMvQyxzQkFBaUIsR0FBRyxrQ0FBa0MsQ0FBQztRQUVoRSxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFtQixJQUFJLENBQUMsQ0FBQztRQUM1RCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsMEJBQTBCLENBQUM7SUF3QjdCLENBQUM7SUFFakI7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxNQUFpQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDeEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtCQUErQjtRQUMvQixNQUFNLGNBQWMsR0FBYztZQUNoQyxHQUFHLE1BQU07WUFDVCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxZQUFZO1lBQy9DLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ3RILENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLGFBQWlDO1FBQzVDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDcEUsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sYUFBYSxHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDdEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxjQUFjLENBQUMsTUFBaUI7UUFDdEMscURBQXFEO1FBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2pELE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUM3QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN6RCxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDakQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELG1DQUFtQztRQUNuQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2pGLE9BQU8sQ0FBQyxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztZQUM5RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQXpIVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlDb25maWcgfSBmcm9tICcuL21vZGVscy9hcGktY29uZmlnLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcGlCYXNlVXJsID0gJ2h0dHBzOi8vYXBpLnlua2FwLmNvbS92MSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuZGJveEFwaUJhc2VVcmwgPSAnaHR0cHM6Ly9zYW5kYm94LmFwaS55bmthcC5jb20vdjEnO1xuICBcbiAgcHJpdmF0ZSBjb25maWdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcGlDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF9hcGlVcmwgPSAnaHR0cHM6Ly9hcGkueW5rYXAuY29tL3YxJztcblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IEFQSSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBnZXQgY29uZmlnJCgpOiBPYnNlcnZhYmxlPEFwaUNvbmZpZyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBBUEkgY29uZmlndXJhdGlvbiBzeW5jaHJvbm91c2x5XG4gICAqL1xuICBnZXQgY3VycmVudENvbmZpZygpOiBBcGlDb25maWcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXQgYXBpVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwaVVybDtcbiAgfVxuXG4gIHNldCBhcGlVcmwodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcGlVcmwgPSB1cmw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBtb2R1bGUgd2l0aCBBUEkgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBBUEkgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGluaXRpYWxpemUoY29uZmlnOiBBcGlDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb25maWcoY29uZmlnKSkge1xuICAgICAgY29uc29sZS5lcnJvcignWS1Oa2FwOiBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgZGVmYXVsdHMgaWYgbm90IHByb3ZpZGVkXG4gICAgY29uc3QgY29tcGxldGVDb25maWc6IEFwaUNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGVudmlyb25tZW50OiBjb25maWcuZW52aXJvbm1lbnQgfHwgJ3Byb2R1Y3Rpb24nLFxuICAgICAgYXBpQmFzZVVybDogY29uZmlnLmFwaUJhc2VVcmwgfHwgKGNvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ3NhbmRib3gnID8gdGhpcy5zYW5kYm94QXBpQmFzZVVybCA6IHRoaXMuZGVmYXVsdEFwaUJhc2VVcmwpXG4gICAgfTtcblxuICAgIHRoaXMuY29uZmlnU3ViamVjdC5uZXh0KGNvbXBsZXRlQ29uZmlnKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgbW9kdWxlIGhhcyBiZWVuIGluaXRpYWxpemVkXG4gICAqL1xuICBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHBhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHBhcnRpYWxDb25maWcgUGFydGlhbCBjb25maWd1cmF0aW9uIHRvIHVwZGF0ZVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHVwZGF0ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICB1cGRhdGVDb25maWcocGFydGlhbENvbmZpZzogUGFydGlhbDxBcGlDb25maWc+KTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuY3VycmVudENvbmZpZztcbiAgICBpZiAoIWN1cnJlbnRDb25maWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1ktTmthcDogQ2Fubm90IHVwZGF0ZSBjb25maWcgYmVmb3JlIGluaXRpYWxpemF0aW9uJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlZENvbmZpZyA9IHsgLi4uY3VycmVudENvbmZpZywgLi4ucGFydGlhbENvbmZpZyB9O1xuICAgIGlmICghdGhpcy52YWxpZGF0ZUNvbmZpZyh1cGRhdGVkQ29uZmlnKSkge1xuICAgICAgY29uc29sZS5lcnJvcignWS1Oa2FwOiBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdXBkYXRlJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWdTdWJqZWN0Lm5leHQodXBkYXRlZENvbmZpZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgQVBJIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgQVBJIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBjb25maWd1cmF0aW9uIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVDb25maWcoY29uZmlnOiBBcGlDb25maWcpOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBpZiByZXF1aXJlZCBmaWVsZHMgYXJlIHByZXNlbnQgYW5kIG5vdCBlbXB0eVxuICAgIGlmICghY29uZmlnLmFwaUtleSB8fCBjb25maWcuYXBpS2V5LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1ktTmthcDogQVBJIEtleSBpcyByZXF1aXJlZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnLmFwaVNlY3JldCB8fCBjb25maWcuYXBpU2VjcmV0LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1ktTmthcDogQVBJIFNlY3JldCBpcyByZXF1aXJlZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnLm1lcmNoYW50SWQgfHwgY29uZmlnLm1lcmNoYW50SWQudHJpbSgpID09PSAnJykge1xuICAgICAgY29uc29sZS5lcnJvcignWS1Oa2FwOiBNZXJjaGFudCBJRCBpcyByZXF1aXJlZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGVudmlyb25tZW50IGlmIHByb3ZpZGVkXG4gICAgaWYgKGNvbmZpZy5lbnZpcm9ubWVudCAmJiAhWydwcm9kdWN0aW9uJywgJ3NhbmRib3gnXS5pbmNsdWRlcyhjb25maWcuZW52aXJvbm1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdZLU5rYXA6IEVudmlyb25tZW50IG11c3QgYmUgZWl0aGVyIFwicHJvZHVjdGlvblwiIG9yIFwic2FuZGJveFwiJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==