UNPKG

angular-rave

Version:

Angular wrapper for integrating rave transactions

92 lines 11.3 kB
import { Injectable, Inject } from '@angular/core'; import { PUBKEY_TOKEN } from './angular-rave-token'; import * as i0 from "@angular/core"; import * as i1 from "./angular-rave-token"; const CHECKOUT_SCRIPT_URL = 'https://checkout.flutterwave.com/v3.js'; export class AngularRaveService { constructor(publicKey) { this.publicKey = publicKey; } createRaveOptionsObject(obj, callback, onclose) { const raveOptions = {}; raveOptions.amount = obj.amount; raveOptions.public_key = obj.public_key || this.publicKey; raveOptions.currency = obj.currency || 'NGN'; if (obj.customer) { raveOptions.customer = obj.customer; } if (obj.customizations) { raveOptions.customizations = obj.customizations; } if (obj.integrity_hash) { raveOptions.integrity_hash = obj.integrity_hash; } if (obj.meta) { raveOptions.meta = obj.meta; } if (obj.paymentOptions && obj.paymentOptions.length) { raveOptions.payment_options = obj.paymentOptions.join(', '); } if (obj.payment_plan) { raveOptions.payment_plan = obj.payment_plan; } if (obj.redirect_url) { raveOptions.redirect_url = obj.redirect_url; } if (obj.subaccounts) { raveOptions.subaccounts = obj.subaccounts; } if (obj.tx_ref) { raveOptions.tx_ref = obj.tx_ref; } raveOptions.callback = callback; raveOptions.onclose = onclose; return raveOptions; } loadScript() { return new Promise(resolve => { if (typeof window.FlutterwaveCheckout === 'function') { resolve(); return; } const script = window.document.createElement('script'); window.document.head.appendChild(script); const onLoadFunc = () => { script.removeEventListener('load', onLoadFunc); resolve(); }; script.addEventListener('load', onLoadFunc); const url = CHECKOUT_SCRIPT_URL; script.setAttribute('src', url); }); } isInvalidOptions(obj) { console.log('Transaction Reference', obj.tx_ref); if (!obj.public_key && !this.publicKey) { return 'ANGULAR-RAVE: Merchant public key is required'; } if (!obj.tx_ref) { return 'ANGULAR-RAVE: A unique transaction reference is required'; } if (!obj.amount) { return 'ANGULAR-RAVE: Amount to charge is required'; } if (!obj.customer.email || !obj.customer.phonenumber) { return 'ANGULAR-RAVE: Customer email or phone number is required'; } return ''; } checkout(options) { return window.FlutterwaveCheckout(options); } } AngularRaveService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AngularRaveService_Factory() { return new AngularRaveService(i0.ɵɵinject(i1.PUBKEY_TOKEN)); }, token: AngularRaveService, providedIn: "root" }); AngularRaveService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; AngularRaveService.ctorParameters = () => [ { type: String, decorators: [{ type: Inject, args: [PUBKEY_TOKEN,] }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1yYXZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXJhdmUvc3JjL2xpYi9hbmd1bGFyLXJhdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQVFwRCxNQUFNLG1CQUFtQixHQUFHLHdDQUF3QyxDQUFDO0FBS3JFLE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsWUFDK0IsU0FBaUI7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtJQUM1QyxDQUFDO0lBRUwsdUJBQXVCLENBQUMsR0FBeUIsRUFBRSxRQUFzQixFQUFFLE9BQW1CO1FBQzVGLE1BQU0sV0FBVyxHQUFnQyxFQUFFLENBQUM7UUFDcEQsV0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2hDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzFELFdBQVcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDN0MsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQUUsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQUU7UUFDMUQsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFO1lBQUUsV0FBVyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO1NBQUU7UUFDNUUsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFO1lBQUUsV0FBVyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO1NBQUU7UUFDNUUsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQUUsV0FB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b20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSYXZlT3B0aW9ucyB9IGZyb20gJy4vcmF2ZS1vcHRpb25zJztcclxuaW1wb3J0IHsgUFVCS0VZX1RPS0VOIH0gZnJvbSAnLi9hbmd1bGFyLXJhdmUtdG9rZW4nO1xyXG5pbXBvcnQgeyBQcml2YXRlUmF2ZU9wdGlvbnMsIFJhdmVDYWxsYmFjayB9IGZyb20gJy4vcHJpdmF0ZS1yYXZlLW9wdGlvbnMnO1xyXG5cclxuaW50ZXJmYWNlIE15V2luZG93IGV4dGVuZHMgV2luZG93IHtcclxuICBGbHV0dGVyd2F2ZUNoZWNrb3V0OiAocmF2ZU9wdGlvbnM6IFBhcnRpYWw8UHJpdmF0ZVJhdmVPcHRpb25zPikgPT4gdm9pZDtcclxufVxyXG5kZWNsYXJlIHZhciB3aW5kb3c6IE15V2luZG93O1xyXG5cclxuY29uc3QgQ0hFQ0tPVVRfU0NSSVBUX1VSTCA9ICdodHRwczovL2NoZWNrb3V0LmZsdXR0ZXJ3YXZlLmNvbS92My5qcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclJhdmVTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBVQktFWV9UT0tFTikgcHVibGljIHB1YmxpY0tleTogc3RyaW5nLFxyXG4gICkgeyB9XHJcblxyXG4gIGNyZWF0ZVJhdmVPcHRpb25zT2JqZWN0KG9iajogUGFydGlhbDxSYXZlT3B0aW9ucz4sIGNhbGxiYWNrOiBSYXZlQ2FsbGJhY2ssIG9uY2xvc2U6ICgpID0+IHZvaWQpOiBQcml2YXRlUmF2ZU9wdGlvbnMge1xyXG4gICAgY29uc3QgcmF2ZU9wdGlvbnM6IFBhcnRpYWw8UHJpdmF0ZVJhdmVPcHRpb25zPiA9IHt9O1xyXG4gICAgcmF2ZU9wdGlvbnMuYW1vdW50ID0gb2JqLmFtb3VudDtcclxuICAgIHJhdmVPcHRpb25zLnB1YmxpY19rZXkgPSBvYmoucHVibGljX2tleSB8fCB0aGlzLnB1YmxpY0tleTtcclxuICAgIHJhdmVPcHRpb25zLmN1cnJlbmN5ID0gb2JqLmN1cnJlbmN5IHx8ICdOR04nO1xyXG4gICAgaWYgKG9iai5jdXN0b21lcikgeyByYXZlT3B0aW9ucy5jdXN0b21lciA9IG9iai5jdXN0b21lcjsgfVxyXG4gICAgaWYgKG9iai5jdXN0b21pemF0aW9ucykgeyByYXZlT3B0aW9ucy5jdXN0b21pemF0aW9ucyA9IG9iai5jdXN0b21pemF0aW9uczsgfVxyXG4gICAgaWYgKG9iai5pbnRlZ3JpdHlfaGFzaCkgeyByYXZlT3B0aW9ucy5pbnRlZ3JpdHlfaGFzaCA9IG9iai5pbnRlZ3JpdHlfaGFzaDsgfVxyXG4gICAgaWYgKG9iai5tZXRhKSB7IHJhdmVPcHRpb25zLm1ldGEgPSBvYmoubWV0YTsgfVxyXG4gICAgaWYgKG9iai5wYXltZW50T3B0aW9ucyAmJiBvYmoucGF5bWVudE9wdGlvbnMubGVuZ3RoKSB7IHJhdmVPcHRpb25zLnBheW1lbnRfb3B0aW9ucyA9IG9iai5wYXltZW50T3B0aW9ucy5qb2luKCcsICcpOyB9XHJcbiAgICBpZiAob2JqLnBheW1lbnRfcGxhbikgeyByYXZlT3B0aW9ucy5wYXltZW50X3BsYW4gPSBvYmoucGF5bWVudF9wbGFuOyB9XHJcbiAgICBpZiAob2JqLnJlZGlyZWN0X3VybCkgeyByYXZlT3B0aW9ucy5yZWRpcmVjdF91cmwgPSBvYmoucmVkaXJlY3RfdXJsOyB9XHJcbiAgICBpZiAob2JqLnN1YmFjY291bnRzKSB7IHJhdmVPcHRpb25zLnN1YmFjY291bnRzID0gb2JqLnN1YmFjY291bnRzOyB9XHJcbiAgICBpZiAob2JqLnR4X3JlZikgeyByYXZlT3B0aW9ucy50eF9yZWYgPSBvYmoudHhfcmVmOyB9XHJcbiAgICByYXZlT3B0aW9ucy5jYWxsYmFjayA9IGNhbGxiYWNrO1xyXG4gICAgcmF2ZU9wdGlvbnMub25jbG9zZSA9IG9uY2xvc2U7XHJcbiAgICByZXR1cm4gcmF2ZU9wdGlvbnMgYXMgUHJpdmF0ZVJhdmVPcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNjcmlwdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuRmx1dHRlcndhdmVDaGVja291dCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc2NyaXB0ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAgICB3aW5kb3cuZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgICBjb25zdCBvbkxvYWRGdW5jID0gKCkgPT4ge1xyXG4gICAgICAgIHNjcmlwdC5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkRnVuYyk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9O1xyXG4gICAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uTG9hZEZ1bmMpO1xyXG4gICAgICBjb25zdCB1cmwgPSBDSEVDS09VVF9TQ1JJUFRfVVJMO1xyXG4gICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdzcmMnLCB1cmwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc0ludmFsaWRPcHRpb25zKG9iajogUGFydGlhbDxSYXZlT3B0aW9ucz4pOiBzdHJpbmcge1xyXG4gICAgY29uc29sZS5sb2coJ1RyYW5zYWN0aW9uIFJlZmVyZW5jZScsIG9iai50eF9yZWYpO1xyXG4gICAgaWYgKCFvYmoucHVibGljX2tleSAmJiAhdGhpcy5wdWJsaWNLZXkpIHtcclxuICAgICAgcmV0dXJuICdBTkdVTEFSLVJBVkU6IE1lcmNoYW50IHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvYmoudHhfcmVmKSB7XHJcbiAgICAgIHJldHVybiAnQU5HVUxBUi1SQVZFOiBBIHVuaXF1ZSB0cmFuc2FjdGlvbiByZWZlcmVuY2UgaXMgcmVxdWlyZWQnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvYmouYW1vdW50KSB7XHJcbiAgICAgIHJldHVybiAnQU5HVUxBUi1SQVZFOiBBbW91bnQgdG8gY2hhcmdlIGlzIHJlcXVpcmVkJztcclxuICAgIH1cclxuICAgIGlmICghb2JqLmN1c3RvbWVyLmVtYWlsIHx8ICFvYmouY3VzdG9tZXIucGhvbmVudW1iZXIpIHtcclxuICAgICAgcmV0dXJuICdBTkdVTEFSLVJBVkU6IEN1c3RvbWVyIGVtYWlsIG9yIHBob25lIG51bWJlciBpcyByZXF1aXJlZCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBjaGVja291dChvcHRpb25zOiBQcml2YXRlUmF2ZU9wdGlvbnMpIHtcclxuICAgIHJldHVybiB3aW5kb3cuRmx1dHRlcndhdmVDaGVja291dChvcHRpb25zKTtcclxuICB9XHJcbn1cclxuIl19