Плагин для WordPress (woocommerce) — кастомный способ оплаты, кто-то делал?

Ссылка скопирована
1 ответ

Нужно сделать плагин, для Woocommerce добавление собственного способа оплаты (редирект).
То есть покупателя с корзины должно отправлять по сгенерированной ссылке, данные о сумме и о покупатели туда также должны быть отправлены, далее после оплаты должно вернуть.
Сам по себе вопрос вроде как простой, но я полный ноль в PHP.
Кто-то возможно делал подобное?

Дополнительно

Сам по себе вопрос вроде как простой, но я полный ноль в PHP.

Вы забыли добавить - "там работы на 5 минут".

  • Платежные системы предоставляют API
    И уже с апи работаешь, как угодно. Если знания не позволяют, то платный вариант решу
  • Михаил Р., говорю со слов ПС, что там несложная интеграция.
    Не хочу обесценивать ёмкость работы, поэтому написал "вроде как"
  • Михаил Р., И второй вопрос. Почему дорого.
    Потому, что бюджета на 5 минут от среднего рейта ))
  • Олег, Михаил подкинул статей, если не разберусь - вернусь к Вам.
  • Плагин для WordPress (woocommerce) — кастомный способ оплаты, кто-то делал?

    Михаил Р. @Mike_Ro Python, JS, WordPress, SEO, Bots, Adversting Как добавить собственные способы оплаты в Woocommerce?
    Создание платёжного шлюза WooCommerce
    Custom Payment Gateways for WooCommerce

    • Спасибо большое за ответ!
    • Михаил Р.
      Проблема с плагином кастомной оплаты?
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Роман IT Ответ

    Кастомный способ оплаты WooCommerce с редиректом делается не правкой шаблонов, а отдельным платёжным шлюзом на базе WC_Payment_Gateway. Минимальная схема такая: зарегистрировать gateway, показать его в checkout, в process_payment() создать платёжную ссылку у платёжной системы и вернуть WooCommerce редирект. После оплаты статус заказа должен менять не return URL пользователя, а webhook или серверная проверка платежа.

    Скелет регистрации:

    add_filter('woocommerce_payment_gateways', function ($gateways) {
        $gateways[] = 'WC_Custom_Redirect_Gateway';
        return $gateways;
    });
     
    class WC_Custom_Redirect_Gateway extends WC_Payment_Gateway {
        public function __construct() {
            $this->id = 'custom_redirect';
            $this->method_title = 'Custom Redirect';
            $this->method_description = 'Оплата через внешний редирект';
            $this->has_fields = false;
            $this->init_form_fields();
            $this->init_settings();
        }
     
        public function process_payment($order_id) {
            $order = wc_get_order($order_id);
            $payment_url = 'https://payment.example/pay?order=' . $order->get_id();
     
            return [
                'result'   => 'success',
                'redirect' => $payment_url,
            ];
        }
    }

    add_filter('woocommerce_payment_gateways', function ($gateways) { $gateways[] = 'WC_Custom_Redirect_Gateway'; return $gateways; }); class WC_Custom_Redirect_Gateway extends WC_Payment_Gateway { public function __construct() { $this->id = 'custom_redirect'; $this->method_title = 'Custom Redirect'; $this->method_description = 'Оплата через внешний редирект'; $this->has_fields = false; $this->init_form_fields(); $this->init_settings(); } public function process_payment($order_id) { $order = wc_get_order($order_id); $payment_url = 'https://payment.example/pay?order=' . $order->get_id(); return [ 'result' => 'success', 'redirect' => $payment_url, ]; } }

    Для реального проекта этого мало. В запрос к платёжной системе обычно отправляют номер заказа, сумму, валюту, email/телефон, return URL, webhook URL и подпись. Подпись нужна, чтобы нельзя было подменить сумму или заказ.

    • Не подтверждайте оплату только потому, что пользователь вернулся на страницу «спасибо».
    • Подтверждение делайте через webhook/API и только после проверки подписи платежной системы.
    • После подтверждения вызывайте $order->payment_complete($transaction_id) или ставьте корректный статус.
    • Ключи API храните в настройках gateway или в защищённой конфигурации.
    • Пишите это как отдельный плагин, а не в functions.php темы.
    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно