Юкасса (yookassa) – самостоятельная интеграция на WordPress сайт
16 мая 2023Задача – получить платеж. Например, пожертвование на благоустройство храма.
В минимальном варианте исходящая платежная форма – просто поле “Сумма” и кнопка “Оплатить”.
Интернет магазина нет, соответственно WooCommerce не нужен.
Для начала нужно зарегистрироваться в ЮKassa – https://yookassa.ru/joinups
Если уже зарегистрированы, входим в личный кабинет – https://yookassa.ru/my/payments (понадобится Сбер Id)
В ЛК выбираем тестовый магазин – понадобится shopId – 316ХХХ
И в меню Интеграция->Ключи API->Секретный ключ test_crVRccOteeDUP8TyuХХХХХХХХХХVQwzUn0QbovI_m_c
В документации Юкасса описание самостоятельной интеграции выглядит так:
Шаг 1. Когда пользователь перейдет к оплате, отобразите ему вашу платежную форму. Дождитесь, когда пользователь выберет в вашем интерфейсе способ оплаты, при необходимости введет свои платежные данные (например, логин в интернет-банке) и подтвердит готовность продолжить оплатить (например, нажмет кнопку Заплатить).
В обычном случае платежная форма – это немножко html
<form method='post' action='yookassa.php'>
<label for="vh-pf-sum">Сумма, руб</label>
<input type="text" id="vh-pf-sum" name="vh-pf-sum" value=100>
<input type="submit" id="vh-pf-submit" value="Оплатить">
</form>
В WordPress так просто не получится
Для того чтобы отправить данные из формы со страницы WordPress нужно в свою очередь сделать несколько шагов
Переписываем форму таким образом
<form method='post' action='<?php echo esc_url( admin_url('admin-post.php') ); ?>'>
<input type="hidden" name="action" value="yookassa">
<label for="vh-pf-sum">Сумма, руб</label>
<input type="text" id="vh-pf-sum" name="vh-pf-sum" value=100>
<input type="submit" id="vh-pf-submit" value="Оплатить">
</form>
И еще много чего нужно делать. Пришлось написать отдельную статью – WordPress – получаем данные из формы
Шаг 2. Создайте платеж , передайте в запросе объект payment_method_data с выбранным способом оплаты и платежными данными и при необходимости объект confirmation с информацией о сценарии подтверждения. В запросе можно передать дополнительные параметры, кроме payment_token, payment_method_id.
Данные из платежной формы попадают в обработчик handler_yookassa()
function handler_yookassa() {
// Получаем данные из формы в виде массива $_POST
$agrs = $_POST;
if($agrs) {
// Что-то делаем с данными
// Например, запишем в лог файл
foreach( $agrs as $key => $item ) {
error_log( '"' . $key . '" => ' . $item );
}
}
}
Шаг 3. Реализуйте нужный сценарий подтверждения, например перенаправьте пользователя на confirmation_url, который придет в объекте платежа .
Шаг 4. Дождитесь успешного завершения платежа: подождите, когда придет уведомление от ЮKassa, или периодически отправляйте запросы, чтобы получить информацию о платеже
Шаг 5. Сообщите пользователю результат оплаты.
Шаг 6. Если вы проводите платеж в две стадии, подтвердите списание оплаты или отмените платеж. И сообщите пользователю финальный результат платежа.
Готово!
Описание самостоятельной интеграции в документации Юкасса –
https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/basics
Если нет времени и желания разбираться самостоятельно – обращайтесь