В учебных онлайн-платформах, построенных на LearnPress, иногда возникает потребность предоставить пользователям возможность отсрочить оплату за курс. Это удобно для организаций, которые хотят сначала предоставить доступ к материалам, а оплату принять позже, или для студентов, которым нужен небольшой период для оплаты. В этой статье мы подробно разберём, как реализовать механизм отсрочки оплаты в LearnPress с примерами кода и рекомендациями по использованию плагинов.
Почему отсрочка оплаты полезна в LearnPress
Отсрочка оплаты увеличивает гибкость и лояльность студентов. Вместо того чтобы терять клиентов из-за немедленной необходимости оплаты, вы создаёте комфортные условия, позволяющие начать обучение, а оплатить позже. Такая практика часто используется в корпоративном обучении и образовательных учреждениях.
Однако стандартный функционал LearnPress не предусматривает такую возможность. Поэтому потребуется доработать процесс оформления заказа и оплаты.
Варианты реализации отсрочки оплаты в LearnPress
Как правило, отсрочку оплаты можно реализовать двумя способами:
- Через модификацию процесса оформления заказа — добавляем новый статус заказа и меняем логику обработки.
- С помощью сторонних плагинов, расширяющих платежные возможности LearnPress.
Рассмотрим первый способ с примером кода, а в конце статьи кратко познакомимся с плагинами, которые могут помочь.
Как добавить статус «Отсроченная оплата» в LearnPress
Для начала нужно зарегистрировать новый статус заказа, который будет обозначать, что оплата ещё не произведена, но доступ к курсу открыт.
add_filter('learn-press/order_statuses', 'learnpress_add_delayed_payment_status');
function learnpress_add_delayed_payment_status($statuses) {
$statuses['delayed'] = __('Отсроченная оплата', 'learnpress');
return $statuses;
}
После добавления статуса необходимо убедиться, что он корректно отображается в админке и в списке заказов пользователя. Для этого можно расширить фильтры, отвечающие за вывод статусов.
Изменяем логику оформления заказа для отсрочки оплаты
Следующий шаг — добавить опцию выбора способа оплаты «Отсрочка» на странице оформления заказа. Для этого используем хук, добавляющий наш способ оплаты.
add_filter('learn-press/payment-methods', 'learnpress_add_delayed_payment_method');
function learnpress_add_delayed_payment_method($methods) {
$methods['delayed'] = array(
'title' => __('Оплата позже', 'learnpress'),
'description' => __('Начать курс сейчас, оплатить позже', 'learnpress'),
'handler' => 'LP_Gateway_Delayed',
);
return $methods;
}
class LP_Gateway_Delayed {
public function __construct() {
// Здесь можно инициализировать необходимые параметры
}
public function process_payment($order_id) {
$order = learn_press_get_order($order_id);
// Устанавливаем статус заказа как delayed
$order->update_status('delayed');
// Предоставляем доступ к курсу
$order->set_payment_method('delayed');
$order->save();
// Перенаправляем на страницу благодарности
return array(
'result' => 'success',
'redirect' => $order->get_thankyou_page()
);
}
}
Этот класс и фильтр добавляют новый способ оплаты, который сразу переводит заказ в статус «Отсроченная оплата» и даёт доступ к курсу.
Ограничения и безопасность при отсрочке оплаты
Важно понимать, что предоставление доступа до оплаты несёт риски. Необходимо:
- Отслеживать просроченные платежи и при необходимости блокировать доступ.
- Отправлять напоминания о необходимости оплаты.
- Обеспечить возможность администратору вручную изменять статус и отменять доступ.
Для реализации автоматического контроля можно использовать WP Cron и дополнительные функции, которые будут проверять статус заказов с отсрочкой.
Пример функции проверки просроченных заказов
function learnpress_check_delayed_payments() {
$args = array(
'post_type' => 'lp_order',
'post_status' => 'lp-delayed',
'date_query' => array(
'before' => date('Y-m-d', strtotime('-7 days')),
),
'fields' => 'ids',
);
$orders = get_posts($args);
foreach ($orders as $order_id) {
$order = learn_press_get_order($order_id);
// Блокируем доступ или уведомляем администратора
$order->update_status('cancelled');
// Отправляем уведомление пользователю
wp_mail($order->get_user()->user_email, 'Оплата просрочена', 'Срок оплаты вашего курса истёк. Доступ заблокирован.');
}
}
add_action('learnpress_daily_event', 'learnpress_check_delayed_payments');
Данный код можно запускать раз в сутки через Cron и контролировать просроченные оплаты.
Использование плагинов для отсрочки оплаты в LearnPress
Если вы не хотите писать код самостоятельно, обратите внимание на следующие плагины:
- My Popup — можно использовать для показа уведомлений и напоминаний об оплате.
- Плагины для расширения платежных шлюзов, например, поддерживающие частичные платежи или отложенные платежи.
- Clearfy Pro — для оптимизации процессов и управления статусами заказов.
Подключение таких расширений значительно упростит работу и позволит избежать ошибок при доработке.
Заключение
Отсрочка оплаты в LearnPress — полезный функционал, который можно реализовать как собственными силами через добавление статусов и новых методов оплаты, так и с помощью готовых решений. Главное — не забывать о безопасности и контроле доступа, чтобы избежать потерь и недоразумений.