payment/gateway/paypal/amd/src/repository.js

  1. // This file is part of Moodle - http://moodle.org/
  2. //
  3. // Moodle is free software: you can redistribute it and/or modify
  4. // it under the terms of the GNU General Public License as published by
  5. // the Free Software Foundation, either version 3 of the License, or
  6. // (at your option) any later version.
  7. //
  8. // Moodle is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. // GNU General Public License for more details.
  12. //
  13. // You should have received a copy of the GNU General Public License
  14. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
  15. /**
  16. * PayPal repository module to encapsulate all of the AJAX requests that can be sent for PayPal.
  17. *
  18. * @module paygw_paypal/repository
  19. * @copyright 2020 Shamim Rezaie <shamim@moodle.com>
  20. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  21. */
  22. import Ajax from 'core/ajax';
  23. /**
  24. * Return the PayPal JavaScript SDK URL.
  25. *
  26. * @param {string} component Name of the component that the itemId belongs to
  27. * @param {string} paymentArea The area of the component that the itemId belongs to
  28. * @param {number} itemId An internal identifier that is used by the component
  29. * @returns {Promise<{clientid: string, brandname: string, cost: number, currency: string}>}
  30. */
  31. export const getConfigForJs = (component, paymentArea, itemId) => {
  32. const request = {
  33. methodname: 'paygw_paypal_get_config_for_js',
  34. args: {
  35. component,
  36. paymentarea: paymentArea,
  37. itemid: itemId,
  38. },
  39. };
  40. return Ajax.call([request])[0];
  41. };
  42. /**
  43. * Call server to validate and capture payment for order.
  44. *
  45. * @param {string} component Name of the component that the itemId belongs to
  46. * @param {string} paymentArea The area of the component that the itemId belongs to
  47. * @param {number} itemId An internal identifier that is used by the component
  48. * @param {string} orderId The order id coming back from PayPal
  49. * @returns {*}
  50. */
  51. export const markTransactionComplete = (component, paymentArea, itemId, orderId) => {
  52. const request = {
  53. methodname: 'paygw_paypal_create_transaction_complete',
  54. args: {
  55. component,
  56. paymentarea: paymentArea,
  57. itemid: itemId,
  58. orderid: orderId,
  59. },
  60. };
  61. return Ajax.call([request])[0];
  62. };