angular-rave
Version:
Angular wrapper for integrating rave transactions
92 lines • 11.3 kB
JavaScript
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