Angular Stripe Checkout v5.1.0 (#71)
This commit is contained in:
parent
2553eb8536
commit
02e4563957
|
@ -42,6 +42,9 @@ var files = {
|
||||||
// Angular Payments
|
// Angular Payments
|
||||||
'resources/angular-payments/1.0.7/angular-payments.jsm': true,
|
'resources/angular-payments/1.0.7/angular-payments.jsm': true,
|
||||||
|
|
||||||
|
// Angular Stripe Checkout
|
||||||
|
'resources/angular-stripe-checkout/5.1.0/angular-stripe-checkout.jsm': true,
|
||||||
|
|
||||||
// AngularJS
|
// AngularJS
|
||||||
'resources/angularjs/1.7.9/angular-animate.min.jsm': true,
|
'resources/angularjs/1.7.9/angular-animate.min.jsm': true,
|
||||||
'resources/angularjs/1.7.9/angular-aria.min.jsm': true,
|
'resources/angularjs/1.7.9/angular-aria.min.jsm': true,
|
||||||
|
|
|
@ -193,6 +193,7 @@ var mappings = {
|
||||||
'angular@{version}/angular.': resources.angular,
|
'angular@{version}/angular.': resources.angular,
|
||||||
'angular@{version}/angular.min.': resources.angular,
|
'angular@{version}/angular.min.': resources.angular,
|
||||||
'angular-payments@{version}/lib/angular-payments.js': resources.angularPayments,
|
'angular-payments@{version}/lib/angular-payments.js': resources.angularPayments,
|
||||||
|
'angular-stripe-checkout@{version}/angular-stripe-checkout.js': resources.angularStripeCheckout,
|
||||||
'animate.css@{version}/animate.min.css': resources.animateCSS,
|
'animate.css@{version}/animate.min.css': resources.animateCSS,
|
||||||
'backbone@{version}/backbone.': resources.backbone,
|
'backbone@{version}/backbone.': resources.backbone,
|
||||||
'backbone@{version}/backbone-min.': resources.backbone,
|
'backbone@{version}/backbone-min.': resources.backbone,
|
||||||
|
|
|
@ -126,6 +126,11 @@ var resources = {
|
||||||
'path': 'resources/angular-payments/{version}/angular-payments.jsm',
|
'path': 'resources/angular-payments/{version}/angular-payments.jsm',
|
||||||
'type': 'application/javascript'
|
'type': 'application/javascript'
|
||||||
},
|
},
|
||||||
|
// Angular Stripe Checkout
|
||||||
|
'angularStripeCheckout': {
|
||||||
|
'path': 'resources/angular-stripe-checkout/{version}/angular-stripe-checkout.jsm',
|
||||||
|
'type': 'application/javascript'
|
||||||
|
},
|
||||||
// Animate CSS
|
// Animate CSS
|
||||||
'animateCSS': {
|
'animateCSS': {
|
||||||
'path': 'resources/animate.css/{version}/animate.min.css',
|
'path': 'resources/animate.css/{version}/animate.min.css',
|
||||||
|
|
|
@ -250,6 +250,8 @@ helpers.determineResourceName = function (filename) {
|
||||||
return 'Angular UI Router';
|
return 'Angular UI Router';
|
||||||
case 'angular-payments.jsm':
|
case 'angular-payments.jsm':
|
||||||
return 'Angular Payments';
|
return 'Angular Payments';
|
||||||
|
case 'angular-stripe-checkout.jsm':
|
||||||
|
return 'Angular Stripe Checkout';
|
||||||
case 'animate.min.css':
|
case 'animate.min.css':
|
||||||
return 'Animate CSS'
|
return 'Animate CSS'
|
||||||
case 'backbone-min.jsm':
|
case 'backbone-min.jsm':
|
||||||
|
@ -461,6 +463,8 @@ helpers.setLastVersion = function (type, version) {
|
||||||
version = '0.4.18';
|
version = '0.4.18';
|
||||||
} else if (type.includes('/angular-payments@1.')) {
|
} else if (type.includes('/angular-payments@1.')) {
|
||||||
version = '1.0.7';
|
version = '1.0.7';
|
||||||
|
} else if (type.includes('/angular-stripe-checkout@5.')) {
|
||||||
|
version = '5.1.0';
|
||||||
} else if (type.includes('/angular-ui-bootstrap/0.')) {
|
} else if (type.includes('/angular-ui-bootstrap/0.')) {
|
||||||
version = '0.14.3';
|
version = '0.14.3';
|
||||||
} else if (type.includes('/angular-ui-bootstrap/1.')) {
|
} else if (type.includes('/angular-ui-bootstrap/1.')) {
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
<li>Added AngularJS v1.4.14 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
<li>Added AngularJS v1.4.14 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||||
<li>Fixed typo in AngularUI Bootstrap (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
<li>Fixed typo in AngularUI Bootstrap (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||||
<li>Added Angular Payments v1.0.7 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
<li>Added Angular Payments v1.0.7 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||||
|
<li>Added Angular Stripe Checkout v5.1.0 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="topic-label">
|
<div class="topic-label">
|
||||||
Please update your uBlock/uMatrix rules
|
Please update your uBlock/uMatrix rules
|
||||||
|
|
|
@ -0,0 +1,216 @@
|
||||||
|
(function() {
|
||||||
|
/* global StripeCheckout */
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var MODULE_NAME = 'stripe.checkout';
|
||||||
|
var STRIPE_CHECKOUT_URL = 'https://checkout.stripe.com/checkout.js';
|
||||||
|
|
||||||
|
var OPTIONS = {
|
||||||
|
address: ['data-address', 'boolean'],
|
||||||
|
alipay: ['data-alipay', 'boolean-or-auto'],
|
||||||
|
alipayReusable: ['data-alipay-reusable', 'boolean'],
|
||||||
|
allowRememberMe: ['data-allow-remember-me', 'boolean'],
|
||||||
|
amount: ['data-amount', 'number'],
|
||||||
|
billingAddress: ['data-billing-address', 'boolean'],
|
||||||
|
bitcoin: ['data-bitcoin', 'boolean'],
|
||||||
|
currency: ['data-currency', 'string'],
|
||||||
|
description: ['data-description', 'string'],
|
||||||
|
email: ['data-email', 'string'],
|
||||||
|
image: ['data-image', 'string'],
|
||||||
|
key: ['data-key', 'string'],
|
||||||
|
label: ['data-label', 'string'],
|
||||||
|
locale: ['data-locale', 'string'],
|
||||||
|
name: ['data-name', 'string'],
|
||||||
|
color: ['data-color', 'string'],
|
||||||
|
panelLabel: ['data-panel-label', 'string'],
|
||||||
|
shippingAddress: ['data-shipping-address', 'boolean'],
|
||||||
|
zipCode: ['data-zip-code', 'boolean']
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var angular;
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined' && typeof module.exports === 'object') {
|
||||||
|
angular = require('angular');
|
||||||
|
module.exports = MODULE_NAME;
|
||||||
|
} else {
|
||||||
|
angular = window.angular;
|
||||||
|
}
|
||||||
|
|
||||||
|
var extend = angular.extend;
|
||||||
|
|
||||||
|
angular.module(MODULE_NAME,[])
|
||||||
|
.directive('stripeCheckout',StripeCheckoutDirective)
|
||||||
|
.provider('StripeCheckout',StripeCheckoutProvider);
|
||||||
|
|
||||||
|
|
||||||
|
StripeCheckoutDirective.$inject = ['$parse', 'StripeCheckout'];
|
||||||
|
|
||||||
|
function StripeCheckoutDirective($parse, StripeCheckout) {
|
||||||
|
return { link: link };
|
||||||
|
|
||||||
|
function link(scope, el, attrs) {
|
||||||
|
var handler;
|
||||||
|
|
||||||
|
StripeCheckout.load()
|
||||||
|
.then(function() {
|
||||||
|
handler = StripeCheckout.configure(getOptions(el));
|
||||||
|
});
|
||||||
|
|
||||||
|
el.on('click',function() {
|
||||||
|
if (handler)
|
||||||
|
handler.open(getOptions(el)).then(function(result) {
|
||||||
|
var callback = $parse(attrs.stripeCheckout)(scope);
|
||||||
|
if (typeof callback === 'function')
|
||||||
|
callback.apply(null,result);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function StripeCheckoutProvider() {
|
||||||
|
var defaults = {};
|
||||||
|
|
||||||
|
this.defaults = function(options) {
|
||||||
|
extend(defaults,options);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
this.load = function(StripeCheckout) {
|
||||||
|
return StripeCheckout.load();
|
||||||
|
};
|
||||||
|
|
||||||
|
this.load.$inject = ['StripeCheckout'];
|
||||||
|
|
||||||
|
|
||||||
|
this.$get = function($document, $q) {
|
||||||
|
return new StripeCheckoutService($document,$q,defaults);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$get.$inject = ['$document', '$q'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function StripeCheckoutService($document, $q, providerDefaults) {
|
||||||
|
var defaults = {};
|
||||||
|
var promise;
|
||||||
|
|
||||||
|
this.configure = function(options) {
|
||||||
|
return new StripeHandlerWrapper($q,extend({},
|
||||||
|
providerDefaults,
|
||||||
|
defaults,
|
||||||
|
options
|
||||||
|
));
|
||||||
|
};
|
||||||
|
|
||||||
|
this.load = function() {
|
||||||
|
if (!promise)
|
||||||
|
promise = loadLibrary($document,$q);
|
||||||
|
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.defaults = function(options) {
|
||||||
|
extend(defaults,options);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function StripeHandlerWrapper($q, options) {
|
||||||
|
var deferred, success;
|
||||||
|
|
||||||
|
var handler = StripeCheckout.configure(extend({},options,{
|
||||||
|
token: function(token, args) {
|
||||||
|
if (options.token) options.token(token,args);
|
||||||
|
|
||||||
|
success = true;
|
||||||
|
deferred.resolve([token, args]);
|
||||||
|
},
|
||||||
|
|
||||||
|
closed: function() {
|
||||||
|
if (options.closed) options.closed();
|
||||||
|
if (!success) deferred.reject();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
this.open = function(openOptions) {
|
||||||
|
deferred = $q.defer();
|
||||||
|
success = false;
|
||||||
|
|
||||||
|
handler.open(openOptions);
|
||||||
|
|
||||||
|
return deferred.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.close = function() {
|
||||||
|
success = false;
|
||||||
|
|
||||||
|
handler.close();
|
||||||
|
|
||||||
|
if (options.closed) options.closed();
|
||||||
|
if (deferred) deferred.reject();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getOptions(el) {
|
||||||
|
var opt, def, val, options = {};
|
||||||
|
|
||||||
|
for (opt in OPTIONS) {
|
||||||
|
if (!OPTIONS.hasOwnProperty(opt))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
def = OPTIONS[opt];
|
||||||
|
val = parseValue(el.attr(def[0]),def[1]);
|
||||||
|
|
||||||
|
if (val != null)
|
||||||
|
options[opt] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadLibrary($document, $q) {
|
||||||
|
var deferred = $q.defer();
|
||||||
|
|
||||||
|
var doc = $document[0];
|
||||||
|
var script = doc.createElement('script');
|
||||||
|
script.src = STRIPE_CHECKOUT_URL;
|
||||||
|
|
||||||
|
script.onload = function () {
|
||||||
|
deferred.resolve();
|
||||||
|
};
|
||||||
|
|
||||||
|
script.onreadystatechange = function () {
|
||||||
|
var rs = this.readyState;
|
||||||
|
if (rs === 'loaded' || rs === 'complete')
|
||||||
|
deferred.resolve();
|
||||||
|
};
|
||||||
|
|
||||||
|
script.onerror = function () {
|
||||||
|
deferred.reject(new Error('Unable to load checkout.js'));
|
||||||
|
};
|
||||||
|
|
||||||
|
var container = doc.getElementsByTagName('head')[0];
|
||||||
|
container.appendChild(script);
|
||||||
|
|
||||||
|
return deferred.promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseValue(value, type) {
|
||||||
|
if (type === 'boolean') {
|
||||||
|
return value && value !== 'false';
|
||||||
|
} else if (type === 'number') {
|
||||||
|
return value && Number(value);
|
||||||
|
} else if (type === 'boolean-or-auto') {
|
||||||
|
if (value === 'auto')
|
||||||
|
return value;
|
||||||
|
else
|
||||||
|
return parseValue(value,'boolean');
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
Loading…
Reference in New Issue