-
Notifications
You must be signed in to change notification settings - Fork 1
/
angular-lexacode-mercadopago.js
53 lines (51 loc) · 1.9 KB
/
angular-lexacode-mercadopago.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
angular.module('lexacode.mercadopago', []).factory('mercadopago', ['$window', '$document', '$q', function ($window, $document, $q) {
'use strict';
var mp;
function loadRender() {
if ($window.$MPC_executed) {
return $q.resolve($window.$MPC);
}
if (!$window.$MPC_loading) {
$window.$MPC_loading = true;
var deferred = $q.defer();
// Loading the Mercadopago Render script.
(function () {
var e = $document[0].createElement('script');
e.async = true;
e.src = 'https://secure.mlstatic.com/mptools/render.js';
// Handler when the Mercadopago is ready.
e.onload = function () {
deferred.resolve($window.$MPC);
mp = $window.$MPC;
};
var s = $document[0].getElementsByTagName('script')[0];
s.parentNode.insertBefore(e, s);
}());
return mp = deferred.promise;
}
return $q.when(mp);
}
return {
loadRender: loadRender,
openCheckout: function (opts) {
return loadRender().then(function (mpc) {
return $q(function (resolve, reject) {
mpc.openCheckout({
url: opts.url,
onreturn: function (data) {
switch (data.collection_status) {
case 'approved':
case 'pending':
case 'in_process':
resolve(data);
break;
default:
reject(data);
}
}
});
});
});
}
};
}]);