MDL-69166 pg_paypal: handle paypal checkout callbacks

This commit is contained in:
Shamim Rezaie
2020-10-27 15:44:59 +11:00
parent bbb887f6ae
commit e1151bf6f5
3 changed files with 29 additions and 3 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("pg_paypal/gateways_modal",["exports","./repository","core/templates","./selectors","core/truncate"],function(a,b,c,d,e){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.process=void 0;b=h(b);c=f(c);d=f(d);e=f(e);function f(a){return a&&a.__esModule?a:{default:a}}function g(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;g=function(){return a};return a}function h(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=g();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function i(a,b){return n(a)||m(a,b)||k(a,b)||j()}function j(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function k(a,b){if(!a)return;if("string"==typeof a)return l(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return l(a,b)}function l(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}function m(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function n(a){if(Array.isArray(a))return a}function o(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){c(a);return}if(h.done){b(i)}else{Promise.resolve(i).then(d,e)}}function p(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){var h=a.apply(b,c);function f(a){o(h,d,e,f,g,"next",a)}function g(a){o(h,d,e,f,g,"throw",a)}f(void 0)})}}var q=function(){var a=p(regeneratorRuntime.mark(function a(b){var e,f,g;return regeneratorRuntime.wrap(function(a){while(1){switch(a.prev=a.next){case 0:a.next=2;return c.default.renderForPromise("pg_paypal/paypal_button_placeholder",{});case 2:e=a.sent;f=e.html;g=e.js;c.default.replaceNodeContents(b.querySelector(d.default.regions.gatewaysContainer),f,g);case 6:case"end":return a.stop();}}},a)}));return function(){return a.apply(this,arguments)}}(),r=function(){var a=p(regeneratorRuntime.mark(function a(c,f,g,h,j,k){var l,m,n,o;return regeneratorRuntime.wrap(function(a){while(1){switch(a.prev=a.next){case 0:a.next=2;return Promise.all([q(c),b.getConfigForJs()]);case 2:l=a.sent;m=i(l,2);n=m[1];o="https://www.paypal.com/sdk/js?client-id=".concat(n.clientid,"&currency=").concat(g);s(o,function(){c.querySelector(d.default.buttons.save).style.display="none";c.querySelector(d.default.regions.gatewaysContainer).innerHTML="";paypal.Buttons({createOrder:function createOrder(a,b){return b.order.create({purchase_units:[{amount:{currency_code:g,value:f},description:e.default.truncate(k,{length:127,stripTags:!0})}],application_context:{shipping_preference:"NO_SHIPPING",brand_name:e.default.truncate(n.brandname,{length:127,stripTags:!0})}})}}).render(d.default.regions.gatewaysContainer)});case 7:case"end":return a.stop();}}},a)}));return function(){return a.apply(this,arguments)}}();a.process=r;var s=function(a,b){if(s.currentlyloaded.includes(a)){b();return}var c=document.createElement("script");if(c.readyState){c.onreadystatechange=function(){if("complete"==this.readyState||"loaded"==this.readyState){this.onreadystatechange=null;b()}}}else{c.onload=function(){b()}}c.setAttribute("src",a);document.head.appendChild(c);s.currentlyloaded.push(a)};s.currentlyloaded=[]});
function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}define ("pg_paypal/gateways_modal",["exports","./repository","core/templates","./selectors","core/truncate","core/ajax","core/notification"],function(a,b,c,d,e,f,g){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.process=void 0;b=j(b);c=h(c);d=h(d);e=h(e);f=h(f);g=h(g);function h(a){return a&&a.__esModule?a:{default:a}}function i(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;i=function(){return a};return a}function j(a){if(a&&a.__esModule){return a}if(null===a||"object"!==_typeof(a)&&"function"!=typeof a){return{default:a}}var b=i();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a){if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;if(f&&(f.get||f.set)){Object.defineProperty(c,e,f)}else{c[e]=a[e]}}}c.default=a;if(b){b.set(a,c)}return c}function k(a,b){return r(a)||q(a,b)||m(a,b)||l()}function l(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function m(a,b){if(!a)return;if("string"==typeof a)return p(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return p(a,b)}function p(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}function q(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function r(a){if(Array.isArray(a))return a}function s(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){c(a);return}if(h.done){b(i)}else{Promise.resolve(i).then(d,e)}}function t(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){var h=a.apply(b,c);function f(a){s(h,d,e,f,g,"next",a)}function g(a){s(h,d,e,f,g,"throw",a)}f(void 0)})}}var u=function(){var a=t(regeneratorRuntime.mark(function a(b){var e,f,g;return regeneratorRuntime.wrap(function(a){while(1){switch(a.prev=a.next){case 0:a.next=2;return c.default.renderForPromise("pg_paypal/paypal_button_placeholder",{});case 2:e=a.sent;f=e.html;g=e.js;c.default.replaceNodeContents(b.querySelector(d.default.regions.gatewaysContainer),f,g);case 6:case"end":return a.stop();}}},a)}));return function(){return a.apply(this,arguments)}}(),v=function(){var a=t(regeneratorRuntime.mark(function a(c,h,i,j,l,m){var n,o,p,q;return regeneratorRuntime.wrap(function(a){while(1){switch(a.prev=a.next){case 0:a.next=2;return Promise.all([u(c),b.getConfigForJs()]);case 2:n=a.sent;o=k(n,2);p=o[1];q="https://www.paypal.com/sdk/js?client-id=".concat(p.clientid,"&currency=").concat(i,"&intent=authorize");w(q,function(){c.querySelector(d.default.buttons.save).style.display="none";c.querySelector(d.default.regions.gatewaysContainer).innerHTML="";paypal.Buttons({createOrder:function createOrder(a,b){return b.order.create({purchase_units:[{amount:{currency_code:i,value:h},description:e.default.truncate(m,{length:127,stripTags:!0})}],application_context:{shipping_preference:"NO_SHIPPING",brand_name:e.default.truncate(p.brandname,{length:127,stripTags:!0})}})},onApprove:function onApprove(a,b){b.order.authorize().then(function(b){var c=b.purchase_units[0].payments.authorizations[0].id;return f.default.call([{methodname:"pg_paypal_transaction_complete",args:{component:j,componentid:l,orderid:a.orderID,authorizationid:c}}])[0].then(function(a){g.default.addNotification({message:a.message,type:a.success?"success":"error"})})})}}).render(d.default.regions.gatewaysContainer)});case 7:case"end":return a.stop();}}},a)}));return function(){return a.apply(this,arguments)}}();a.process=v;var w=function(a,b){if(w.currentlyloaded.includes(a)){b();return}var c=document.createElement("script");if(c.readyState){c.onreadystatechange=function(){if("complete"==this.readyState||"loaded"==this.readyState){this.onreadystatechange=null;b()}}}else{c.onload=function(){b()}}c.setAttribute("src",a);document.head.appendChild(c);w.currentlyloaded.push(a)};w.currentlyloaded=[]});
//# sourceMappingURL=gateways_modal.min.js.map
File diff suppressed because one or more lines are too long
@@ -25,6 +25,8 @@ import * as Repository from './repository';
import Templates from 'core/templates';
import Selectors from './selectors';
import Truncate from 'core/truncate';
import Ajax from 'core/ajax';
import Notification from 'core/notification';
/**
* Renders a placeholder in the modal.
@@ -47,7 +49,7 @@ export const process = async(rootElement, amount, currency, component, component
Repository.getConfigForJs(),
]);
const paypalScript = `https://www.paypal.com/sdk/js?client-id=${paypalConfig.clientid}&currency=${currency}`;
const paypalScript = `https://www.paypal.com/sdk/js?client-id=${paypalConfig.clientid}&currency=${currency}&intent=authorize`;
callExternalFunction(paypalScript, () => {
rootElement.querySelector(Selectors.buttons.save).style.display = 'none';
@@ -69,6 +71,30 @@ export const process = async(rootElement, amount, currency, component, component
},
});
},
onApprove: function(data, actions) {
// Authorize the transaction.
actions.order.authorize().then(function(authorization) {
// Get the authorization id.
const authorizationID = authorization.purchase_units[0].payments.authorizations[0].id;
// Call your server to validate and capture the transaction.
return Ajax.call([{
methodname: 'pg_paypal_transaction_complete',
args: {
component,
componentid,
orderid: data.orderID,
authorizationid: authorizationID,
},
}])[0]
.then(function(res) {
Notification.addNotification({
message: res.message,
type: res.success ? 'success' : 'error'
});
});
});
}
}).render(Selectors.regions.gatewaysContainer);
});
};