В современном мире электронной коммерции удобство и кастомизация платежных форм играют ключевую роль. Если стандартных возможностей вашего платежного плагина не хватает, можно создать собственный платежный шорткод, который будет внедряться в ваши страницы и записи WordPress. В этой статье мы подробно разберем, как это сделать, используя PHP и популярные плагины, а также приведем практические примеры кода.
Почему стоит создавать собственный платежный шорткод?
Стандартные плагины для приема платежей часто ограничены готовыми шаблонами и функционалом, который не всегда идеально подходит под конкретные задачи сайта. Создание собственного шорткода позволяет:
- Гибко настраивать внешний вид и логику платежной формы.
- Интегрировать дополнительные поля, например, для сбора данных о покупателе.
- Добавлять кастомную валидацию и обработку платежей.
- Легко вставлять платежную форму в любую часть сайта без правки кода шаблона.
Таким образом, вы получаете полный контроль над процессом приема платежей, улучшая пользовательский опыт и повышая конверсию.
Предварительная подготовка: выбор плагина для платежей
Для реализации собственного платежного шорткода нам понадобится плагин, который предоставляет API или хотя бы возможность программного взаимодействия с платежным шлюзом. Рассмотрим два популярных варианта:
WooCommerce + WooCommerce Payments
Если ваш сайт использует WooCommerce, то плагин WooCommerce Payments идеально подходит для расширения функционала. Он поддерживает множество платежных систем и имеет удобный API.
Easy Digital Downloads (EDD)
Для сайтов, продающих цифровые товары, EDD — отличный выбор. Он также поддерживает расширения для платежных шлюзов и позволяет создать кастомные формы оплаты.
Создаем собственный платежный шорткод: пример кода
Рассмотрим минимальный пример создания шорткода, который выводит форму с суммой и кнопкой оплаты, а после нажатия вызывает обработчик платежа. Для примера возьмем WooCommerce.
function wppay_create_payment_shortcode($atts) {
$atts = shortcode_atts(array(
'amount' => '100',
'currency' => 'RUB'
), $atts, 'wppay_payment');
ob_start();
?>
<form id="wppay-payment-form" method="post">
<label>Сумма: <input type="text" name="wppay_amount" value="<?php echo esc_attr($atts['amount']); ?>" readonly></label><br>
<input type="hidden" name="wppay_currency" value="<?php echo esc_attr($atts['currency']); ?>">
<input type="submit" name="wppay_submit" value="Оплатить">
</form>
<?php
return ob_get_clean();
}
add_shortcode('wppay_payment', 'wppay_create_payment_shortcode');Этот шорткод [wppay_payment amount="500" currency="RUB"] выведет форму с кнопкой оплаты указанной суммы. Следующий шаг — обработка данных формы.
Обработка платежа на сервере
Для обработки платежа создадим функцию, которая отследит отправку формы, проверит данные и вызовет API WooCommerce для создания заказа и оплаты.
function wppay_handle_payment() {
if (isset($_POST['wppay_submit'])) {
$amount = floatval($_POST['wppay_amount']);
$currency = sanitize_text_field($_POST['wppay_currency']);
// Создаем заказ WooCommerce
$order = wc_create_order();
$order->add_product(wc_get_product(123), 1); // Добавьте товар с ID 123 или создайте виртуальный продукт
$order->set_currency($currency);
$order->set_total($amount);
$order->calculate_totals();
$order->save();
// Здесь должна быть логика вызова платежного шлюза
// Для примера просто редиректим на страницу оплаты заказа
wp_redirect($order->get_checkout_payment_url());
exit;
}
}
add_action('init', 'wppay_handle_payment');В этом коде мы обрабатываем POST-запрос, создаем заказ и перенаправляем пользователя на стандартную страницу оплаты WooCommerce. В реальном проекте нужно добавить дополнительные проверки, обработку ошибок и интеграцию с выбранным платежным шлюзом.
Расширение функционала: добавляем дополнительные поля
Для более сложных задач можно добавить поля ввода, например, email или комментарий, и передать эти данные в заказ.
function wppay_create_payment_shortcode($atts) {
$atts = shortcode_atts(array(
'amount' => '100',
'currency' => 'RUB'
), $atts, 'wppay_payment');
ob_start();
?>
<form id="wppay-payment-form" method="post">
<label>Email: <input type="email" name="wppay_email" required></label><br>
<label>Комментарий: <input type="text" name="wppay_comment"></label><br>
<label>Сумма: <input type="text" name="wppay_amount" value="<?php echo esc_attr($atts['amount']); ?>" readonly></label><br>
<input type="hidden" name="wppay_currency" value="<?php echo esc_attr($atts['currency']); ?>">
<input type="submit" name="wppay_submit" value="Оплатить">
</form>
<?php
return ob_get_clean();
}
function wppay_handle_payment() {
if (isset($_POST['wppay_submit'])) {
$amount = floatval($_POST['wppay_amount']);
$currency = sanitize_text_field($_POST['wppay_currency']);
$email = sanitize_email($_POST['wppay_email']);
$comment = sanitize_text_field($_POST['wppay_comment']);
$order = wc_create_order();
$order->add_product(wc_get_product(123), 1);
$order->set_currency($currency);
$order->set_total($amount);
$order->set_customer_note($comment);
$order->set_billing_email($email);
$order->calculate_totals();
$order->save();
wp_redirect($order->get_checkout_payment_url());
exit;
}
}
add_action('init', 'wppay_handle_payment');Такой подход позволяет собрать нужные данные перед оплатой и хранить их в заказе, что полезно для последующей работы с клиентом.
Популярные плагины для расширенной интеграции платежей
Если вы не хотите писать весь код самостоятельно, рекомендуем обратить внимание на эти плагины, которые легко интегрируются с кастомными шорткодами или могут быть расширены:
- WP Simple Pay — удобный плагин для приема платежей через Stripe с поддержкой шорткодов и кастомных полей.
- Gravity Forms + Stripe Add-On — мощное решение для создания форм с оплатой, можно создавать любые поля и логику.
- GiveWP — популярный плагин для сбора пожертвований с множеством платежных шлюзов и возможностью создания кастомных платежных форм.
Подводим итоги
Создание собственного платежного шорткода в WordPress — это отличный способ получить гибкую и удобную форму оплаты, полностью соответствующую бизнес-процессам вашего сайта. Используя примеры из статьи, вы сможете быстро начать разработку и интеграцию собственных решений, опираясь на проверенные плагины и API WooCommerce или других систем.
Не забывайте тщательно тестировать платежные формы в разных условиях и обеспечивать безопасность обработки данных, чтобы избежать ошибок и защитить клиентов.