@easycode
не боюсь задавать глупые вопросы ))

Использовать WooCommerce для оплаты в своём плагине?

Для WooCommercа написано куча разных платежных модулей - это удобно: установил, настроил и юзаешь...

Имеется сайт отеля с предоплатой бронирования и собственным функционалом оформления бронирования.
Нужно прилепить онлайн-оплату с возможностью потом поменять платежный модуль.

Так не хочется писать интеграцию с одной платежной системой, потом писать другую для другой платежной системы.
Можно ли взять и заюзать для оплаты WooCommerce? Но чтобы сам WooCommerce не фигурировал на сайте - никаких форм оформления заказа, корзины, писем от WooCommercа - только оплата со стороны WooCommerc'а и всё на этом.

Получается после перехода к оплате с нашей собственной формы бронирования на сайте, нужно будет:
* программно создать товар в WooCommerce (бронирование)
* затем программно добавить его в корзину
* затем программно из формы бронирования добавить данные покупателя (ФИО, телефон, Email)
* оформить заказ и перевести клиента уже в форму оплаты
* после оплаты перекинуть пользователя на нужную мне страницу сайта и заменить письма об оплате/заказе от WooCommercа на моё письмо об успешной оплате бронирования

Кто-нибудь подобный функционал встречал где-нибудь?
Не хочу изобретать велосипед и разбираться в терниях (особенностях) WooCommercе слишком глубоко)
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 2
@easycode Автор вопроса
не боюсь задавать глупые вопросы ))
Кажется я уже нашёл вариант, осталось только применить и затестить:

if (isset($_POST['isOrder']) && $_POST['isOrder'] == 1) {
    $address = array(
        'first_name' => $_POST['notes']['domain'],
        'last_name'  => '',
        'company'    => $_POST['customer']['company'],
        'email'      => $_POST['customer']['email'],
        'phone'      => $_POST['customer']['phone'],
        'address_1'  => $_POST['customer']['address'],
        'address_2'  => '', 
        'city'       => $_POST['customer']['city'],
        'state'      => '',
        'postcode'   => $_POST['customer']['postalcode'],
        'country'    => 'NL'
    );
 
    $order = wc_create_order();
    foreach ($_POST['product_order'] as $productId => $productOrdered) :
        $order->add_product( get_product( $productId ), 1 );
    endforeach;
 
    $order->set_address( $address, 'billing' );
    $order->set_address( $address, 'shipping' );
 
    $order->calculate_totals();
 
    update_post_meta( $order->id, '_payment_method', 'ideal' );
    update_post_meta( $order->id, '_payment_method_title', 'iDeal' );
 
    // Store Order ID in session so it can be re-used after payment failure
    WC()->session->order_awaiting_payment = $order->id;
 
    // Process Payment
    $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
    $result = $available_gateways[ 'ideal' ]->process_payment( $order->id );
 
    // Redirect to success/confirmation/payment page
    if ( $result['result'] == 'success' ) {
 
        $result = apply_filters( 'woocommerce_payment_successful_result', $result, $order->id );
 
        wp_redirect( $result['redirect'] );
        exit;
    }
}
Ответ написан
Комментировать
azerphoenix
@azerphoenix
Java Software Engineer
Будь я на вашем месте, то не стал бы только из-за системы оплаты подвязывать такой огромный функционал Woocommerce. Как по мне легче прочитать документацию и на рнр написать свой платежный шлюз .
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы