Интеграция PayPal с MODX в 2021 году
Содержание статьи:
- Регистрация аккаунта
- Получение ключей
- Интеграция сайта
Регистрация аккаунта
В целом, в регистрации нет ничего сложного, поэтому рассмотрим очень поверхностно.
- Идём по адресу: https://www.paypal.com/ru/home выбираем тип «Корпоративный»;
- Вводим наш почтовый адрес;
- Вводим желаемый пароль;
- Далее сведения о юр.лице:
- Имя;
- Фамилия;
- Наименование юридического лица (полное, без сокращений);
- Юридический адрес (у ИП нет юр.адреса, но можно указать по прописке).
- Ещё сведения о компании:
- Правовая форма;
- Категория товаров и услуг;
- Веб-сайт (необаятельно);
- Ещё больше сведений о компании:
- Дата рождения;
- Гражданство;
- Домашний адрес.
Далее, для снятия ограничений необходимо:
- Подтвердить электронный адрес;
- Добавить и подтвердить мою дебетовую или кредитную карту;
Ну и дождать окончания проверки данных со стороны PayPal. Далее уже опирать на их требования.
Получение ключей
- Переходим по адресу: https://www.paypal.com/businessmanage/credentials/apiAccess;
- Авторизовываемся;
- Выбираем пункт «Интеграция API-интерфейсов NVP/SOAP (Classic) - Управление учетными данными API»;
- На странице настройки выберите пункт «Запросить подпись API»;
- После этого открывается страница с тремя параметрами, которые вам понадобятся на следующем шаге:
- Логин продавца;
- Пароль продавца;
- Подпись продавца;
Интеграция сайта
Для интеграции модно использовать стандартный метод оплаты PayPal в minishop2. После небольших правок он до сих пор работает и актуален.
В системных переменных указываем (полученные на предыдущем шаге данные):
- Логин продавца;
- Пароль продавца;
- Подпись продавца;
- Валюту.
Пример заполнения:
Возможные проблемы при интеграции
Тестирование оплаты в России и СНГ: To comply with international regulations, this transaction has been declined
Если вы попробуете протестировать оплату через PayPal в СНГ, то он вас просто выбросит с ошибкой: «To comply with international regulations, this transaction has been declined». Если пробовать заходить через Tor или иные способы обхода этого ограничения, то вас просто не пустит бесконечная капча.
Единственный простой способ – либо попросить протестировать весь сценарий оплаты знакомого, который реально находится в стране, где данного ограничения нет, либо заказать подобное тестирование на любой бирже фриланса.
Проблема с SSL: Peer's Certificate issuer is not recognized
Суть проблемы в том, что SSL нет доверия.
- Идём по пути: /core/components/minishop2/custom/payment/lib/paypal/cacert.pem
- Меняем содержимое на вот это: https://github.com/paypal/TLS-update/blob/master/php/cacert.pem
Проблемы работы с языковыми версиями
Суть проблемы сводиться к тому, что если вы используете языковые версии, которые меняют ваш URL, добавляя к нему /en, /es, /it и т.д., то оплата PayPal ломается, т.к. неверно генерирует ссылку.
Решение для языковых версий через разные контексты (прим. Babel):
Отсюда: https://modx.pro/help/7214
- Ищем переменную $paymentUrl в paypal.class.php по пути: /core/components/minishop2/custom/payment
- В /assets/components/minishop2/payment/paypal.php добавить перед переменной $success жёстко прописанные id страниц отмены:
if ($context == 'web') {
$makeId = '277';
} elseif ($context == 'ru') {
$makeId = '278';
}
- Заменить на
if ($id = $modx->getOption('ms2_payment_paypal_cancel_id', null, 0)) {
$cancel = $modx->makeUrl($makeId, $context, $params, 'full');
}
Решение для языковых версий без разных контекстов (прим. Localizator):
- Идём по пути: /core/components/minishop2/custom/payment/paypal.class.php
- Комментируем 21 строку кода:
$paymentUrl = $siteUrl . substr($assetsUrl, 1) . 'payment/paypal.php'; - Пишем жёсткий вариант:
$paymentUrl = 'https://vashsite.ru/assets/components/minishop2/payment/paypal.php';
Проблема с конвертацией валют
Данная проблема может всплыть, если у вас есть возможность смены языка и соответственно пересчёта валют по языке.
Пример сценария:
- Пользователь прыгает в любой язык «еврозоны», берёт товары по цене в валюте – евро, и условно, набирает товара на 100 евро.
- После чего, в момент перехода в корзину, он меняет контекст на рубли;
- Если по какой-то либо причине у вас на сайте поломана конвертация валют, то интеграция PayPal передаёт только значение – 100, а валюту берёт из системных настроек.
- Таким образом, в случае ошибки конвертации валют, пользователь может пропихнуть системе покупку не за 100 евро, а за 100 рублей, т.к. со стороны PayPal дополнительной проверки пары «валюта – контекст» - нет.
Последние статьи
Написать сообщение