said-ngx-paypal
Version:
Paypal integration for Angular
101 lines • 7.62 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { ScriptService } from './script.service';
export class PayPalScriptService {
/**
* @param {?} scriptService
*/
constructor(scriptService) {
this.scriptService = scriptService;
this.paypalWindowName = 'paypal';
}
/**
* @param {?} config
* @param {?} onReady
* @param {?} onError
* @return {?}
*/
registerPayPalScript(config, onReady, onError) {
this.scriptService.registerScript(this.getUrlForConfig(config), this.paypalWindowName, onReady, onError);
}
/**
* @return {?}
*/
destroyPayPalScript() {
this.scriptService.cleanup(this.paypalWindowName);
}
/**
* @private
* @param {?} config
* @return {?}
*/
getUrlForConfig(config) {
/** @type {?} */
const params = [
{
name: 'client-id',
value: config.clientId
}
];
if (config.currency) {
params.push({
name: 'currency',
value: config.currency
});
}
if (config.commit) {
params.push({
name: 'commit',
value: config.commit
});
}
if (config.extraParams) {
params.push(...config.extraParams);
}
return `https://www.paypal.com/sdk/js${this.getQueryString(params)}`;
}
/**
* @private
* @param {?} queryParams
* @return {?}
*/
getQueryString(queryParams) {
/** @type {?} */
let queryString = '';
for (let i = 0; i < queryParams.length; i++) {
/** @type {?} */
const queryParam = queryParams[i];
if (i === 0) {
queryString += '?';
}
else {
queryString += '&';
}
queryString += `${queryParam.name}=${queryParam.value}`;
}
return queryString;
}
}
PayPalScriptService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
PayPalScriptService.ctorParameters = () => [
{ type: ScriptService }
];
if (false) {
/**
* @type {?}
* @private
*/
PayPalScriptService.prototype.paypalWindowName;
/**
* @type {?}
* @protected
*/
PayPalScriptService.prototype.scriptService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cGFsLXNjcmlwdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vc2FpZC1uZ3gtcGF5cGFsLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3BheXBhbC1zY3JpcHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHakQsTUFBTSxPQUFPLG1CQUFtQjs7OztJQUs1QixZQUNjLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBSnpCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQztJQU03QyxDQUFDOzs7Ozs7O0lBRUQsb0JBQW9CLENBQUMsTUFBd0IsRUFBRSxPQUFpQyxFQUFFLE9BQW9DO1FBQ2xILElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RyxDQUFDOzs7O0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Ozs7O0lBRU8sZUFBZSxDQUFDLE1BQXdCOztjQUN0QyxNQUFNLEdBQWtCO1lBQzFCO2dCQUNJLElBQUksRUFBRSxXQUFXO2dCQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDekI7U0FDSjtRQUVELElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxVQUFVO2dCQUNoQixLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDekIsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDZixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTTthQUN2QixDQUFDLENBQUM7U0FDTjtRQUVELElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxnQ0FBZ0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7Ozs7OztJQUVPLGNBQWMsQ0FBQyxXQUEwQjs7WUFDekMsV0FBVyxHQUFHLEVBQUU7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2tCQUNuQyxVQUFVLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsV0FBVyxJQUFJLEdBQUcsQ0FBQzthQUN0QjtpQkFBTTtnQkFDSCxXQUFXLElBQUksR0FBRyxDQUFDO2FBQ3RCO1lBRUQsV0FBVyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0Q7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOzs7WUEvREosVUFBVTs7OztZQUZGLGFBQWE7Ozs7Ozs7SUFLbEIsK0NBQTZDOzs7OztJQUl6Qyw0Q0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBJUGF5UGFsVXJsQ29uZmlnLCBJUXVlcnlQYXJhbSB9IGZyb20gJy4uL21vZGVscy9wYXlwYWwtbW9kZWxzJztcclxuaW1wb3J0IHsgU2NyaXB0U2VydmljZSB9IGZyb20gJy4vc2NyaXB0LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGF5UGFsU2NyaXB0U2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXlwYWxXaW5kb3dOYW1lID0gJ3BheXBhbCc7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBzY3JpcHRTZXJ2aWNlOiBTY3JpcHRTZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJQYXlQYWxTY3JpcHQoY29uZmlnOiBJUGF5UGFsVXJsQ29uZmlnLCBvblJlYWR5OiAocGF5UGFsQXBpOiBhbnkpID0+IHZvaWQsIG9uRXJyb3I6IChzY3JpcHRTcmM6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2NyaXB0U2VydmljZS5yZWdpc3RlclNjcmlwdCh0aGlzLmdldFVybEZvckNvbmZpZyhjb25maWcpLCB0aGlzLnBheXBhbFdpbmRvd05hbWUsIG9uUmVhZHksIG9uRXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlc3Ryb3lQYXlQYWxTY3JpcHQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zY3JpcHRTZXJ2aWNlLmNsZWFudXAodGhpcy5wYXlwYWxXaW5kb3dOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFVybEZvckNvbmZpZyhjb25maWc6IElQYXlQYWxVcmxDb25maWcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogSVF1ZXJ5UGFyYW1bXSA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWVudC1pZCcsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY29uZmlnLmNsaWVudElkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBpZiAoY29uZmlnLmN1cnJlbmN5KSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdjdXJyZW5jeScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY29uZmlnLmN1cnJlbmN5XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvbmZpZy5jb21taXQpIHtcclxuICAgICAgICAgICAgcGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NvbW1pdCcsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY29uZmlnLmNvbW1pdFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb25maWcuZXh0cmFQYXJhbXMpIHtcclxuICAgICAgICAgICAgcGFyYW1zLnB1c2goLi4uY29uZmlnLmV4dHJhUGFyYW1zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9zZGsvanMke3RoaXMuZ2V0UXVlcnlTdHJpbmcocGFyYW1zKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UXVlcnlTdHJpbmcocXVlcnlQYXJhbXM6IElRdWVyeVBhcmFtW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW0gPSBxdWVyeVBhcmFtc1tpXTtcclxuICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9ICc/JztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9ICcmJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcXVlcnlTdHJpbmcgKz0gYCR7cXVlcnlQYXJhbS5uYW1lfT0ke3F1ZXJ5UGFyYW0udmFsdWV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBxdWVyeVN0cmluZztcclxuICAgIH1cclxufVxyXG4iXX0=