UNPKG

angular-paystack

Version:

This is an angular library for implementing paystack payment gateway

1 lines 2.95 kB
(function(window,angular,undefined){"use strict";(function(){angular.module("paystack.providers",[]);angular.module("paystack",["paystack.providers"])}).call(this);(function(){var options={transport:"https",preventLoad:false,key:""};angular.module("paystack.providers").factory("paystackScriptLoader",["$q",function($q){console.log("Paystack library initialized");var getScriptUrl,includeScript,isPaystackLoaded,scriptId;scriptId=void 0;getScriptUrl=function(options){if(options.transport==="auto"){return"//js.paystack.co/v1/inline.js"}else{return options.transport+"://js.paystack.co/v1/inline.js"}};includeScript=function(options){var omitOptions,script,scriptElem;if(scriptId){scriptElem=document.getElementById(scriptId);scriptElem.parentNode.removeChild(scriptElem)}script=document.createElement("script");script.type="text/javascript";script.src=getScriptUrl(options);return document.body.appendChild(script)};isPaystackLoaded=function(){return angular.isDefined(window.PaystackPop)&&angular.isDefined(window.PaystackPop.setup)};return{load:function(options){var deferred;deferred=$q.defer();if(isPaystackLoaded()){deferred.resolve(window.PaystackPop);return deferred.promise}if(window.navigator.connection&&window.Connection&&window.navigator.connection.type===window.Connection.NONE&&!options.preventLoad){document.addEventListener("online",function(){if(!isPaystackLoaded()){return includeScript(options)}})}else if(!options.preventLoad){includeScript(options)}return deferred.promise}}}]).provider("$paystack",function(){this.configure=function(_options){angular.extend(options,_options)};this.$get=["paystackScriptLoader",function(_this){return function(loader){return loader.load(options)}}(this)];return this});angular.module("paystack").directive("paystackPayButton",["$paystack",function(paystackApi){return{restrict:"EMA",template:function(elem,attrs){if(attrs.text){return'<button class="paystack-pay-button {{class}}">'+attrs.text+"</button>"}return'<button class="paystack-pay-button {{class}}">Make Payment</button>'},replace:true,scope:{class:"@",email:"=",amount:"=",reference:"=",callback:"=?",metadata:"=?",close:"=?",currency:"=?",plan:"=?",quantity:"=?",subaccount:"=?",transaction_charge:"=?",bearer:"=?"},link:function(scope,element,attrs){scope.text=attrs.text||"Make Payment";return paystackApi.then(function(_this){console.log("Paystack library is loaded");angular.element(element).click(function(){var handler=PaystackPop.setup({key:options.key,email:scope.email,amount:scope.amount,ref:scope.reference,metadata:scope.metadata,callback:function(response){console.log("Payment callback received");scope.callback(response)},onClose:function(){console.log("Payment dialog closed");scope.close()},currency:scope.currency,plan:scope.plan,quantity:scope.quantity,subaccount:scope.subaccount,transaction_charge:scope.transaction_charge,bearer:scope.bearer});handler.openIframe()})}(this))}}}])}).call(this)})(window,angular);