1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Contains class for PayPal payment gateway. 19 * 20 * @package paygw_paypal 21 * @copyright 2019 Shamim Rezaie <shamim@moodle.com> 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 namespace paygw_paypal; 26 27 /** 28 * The gateway class for PayPal payment gateway. 29 * 30 * @copyright 2019 Shamim Rezaie <shamim@moodle.com> 31 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 32 */ 33 class gateway extends \core_payment\gateway { 34 public static function get_supported_currencies(): array { 35 // See https://developer.paypal.com/docs/api/reference/currency-codes/, 36 // 3-character ISO-4217: https://en.wikipedia.org/wiki/ISO_4217#Active_codes. 37 return [ 38 'AUD', 'BRL', 'CAD', 'CHF', 'CZK', 'DKK', 'EUR', 'GBP', 'HKD', 'HUF', 'ILS', 'INR', 'JPY', 39 'MXN', 'MYR', 'NOK', 'NZD', 'PHP', 'PLN', 'RUB', 'SEK', 'SGD', 'THB', 'TRY', 'TWD', 'USD' 40 ]; 41 } 42 43 /** 44 * Configuration form for the gateway instance 45 * 46 * Use $form->get_mform() to access the \MoodleQuickForm instance 47 * 48 * @param \core_payment\form\account_gateway $form 49 */ 50 public static function add_configuration_to_gateway_form(\core_payment\form\account_gateway $form): void { 51 $mform = $form->get_mform(); 52 53 $mform->addElement('text', 'brandname', get_string('brandname', 'paygw_paypal')); 54 $mform->setType('brandname', PARAM_TEXT); 55 $mform->addHelpButton('brandname', 'brandname', 'paygw_paypal'); 56 57 $mform->addElement('text', 'clientid', get_string('clientid', 'paygw_paypal')); 58 $mform->setType('clientid', PARAM_TEXT); 59 $mform->addHelpButton('clientid', 'clientid', 'paygw_paypal'); 60 61 $mform->addElement('text', 'secret', get_string('secret', 'paygw_paypal')); 62 $mform->setType('secret', PARAM_TEXT); 63 $mform->addHelpButton('secret', 'secret', 'paygw_paypal'); 64 65 $options = [ 66 'live' => get_string('live', 'paygw_paypal'), 67 'sandbox' => get_string('sandbox', 'paygw_paypal'), 68 ]; 69 70 $mform->addElement('select', 'environment', get_string('environment', 'paygw_paypal'), $options); 71 $mform->addHelpButton('environment', 'environment', 'paygw_paypal'); 72 } 73 74 /** 75 * Validates the gateway configuration form. 76 * 77 * @param \core_payment\form\account_gateway $form 78 * @param \stdClass $data 79 * @param array $files 80 * @param array $errors form errors (passed by reference) 81 */ 82 public static function validate_gateway_form(\core_payment\form\account_gateway $form, 83 \stdClass $data, array $files, array &$errors): void { 84 if ($data->enabled && 85 (empty($data->brandname) || empty($data->clientid) || empty($data->secret))) { 86 $errors['enabled'] = get_string('gatewaycannotbeenabled', 'payment'); 87 } 88 } 89 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body