Интеграции
Приём криптоплатежей в WooCommerce
WooCommerce позволяет любой теме или плагину зарегистрировать платёжный шлюз, поэтому CryBit подключается как обычный кастомный шлюз: на оформлении создаётся счёт и клиент уходит на страницу оплаты CryBit, а вебхук отмечает заказ оплаченным.
Регистрация шлюза
PHP (mu-plugin or theme functions.php)
add_filter('woocommerce_payment_gateways', function ($gateways) {
$gateways[] = 'WC_CryBit_Gateway';
return $gateways;
});
add_action('plugins_loaded', function () {
class WC_CryBit_Gateway extends WC_Payment_Gateway {
public function __construct() {
$this->id = 'crybit';
$this->title = 'USDT / Crypto (CryBit)';
$this->has_fields = false;
$this->init_settings();
}
public function process_payment($order_id) {
$order = wc_get_order($order_id);
$resp = wp_remote_post('https://api.crybit.net/api/v1/payments', ['headers' => [
'X-Public-Key' => getenv('CRYBIT_PUBLIC_KEY'),
'X-Private-Key' => getenv('CRYBIT_PRIVATE_KEY'),
'Content-Type' => 'application/json',
], 'body' => json_encode([
'amount' => (float) $order->get_total(),
'currency' => $order->get_currency(),
'order_id' => (string) $order_id,
'return_url' => $order->get_checkout_order_received_url(),
])]);
$inv = json_decode(wp_remote_retrieve_body($resp), true);
$order->update_status('pending', 'Ожидает оплату в CryBit');
return ['result' => 'success', 'redirect' => $inv['callback_url']];
}
}
});Отметка заказа оплаченным
Добавьте REST-эндпоинт (или плагин вроде WP Webhooks), который принимает payment.paid, проверяет X-CryBit-Signature (см. вебхуки) и вызывает $order->payment_complete() с txid CryBit.
Встроенная форма вместо редиректа
Передайте {"type":"embedded"} в confirmation и подключите widget.js на странице оплаты заказа, чтобы не уводить клиента с вашего домена — см. руководство по виджету.
Вопросы и ответы
Есть ли готовый плагин в каталоге WordPress.org?
Пока нет — сейчас путь интеграции такой: класс шлюза выше в небольшом mu-plugin.
Работает ли это с блочным чекаутом WooCommerce Blocks?
Да, WC_Payment_Gateway поддерживается блочным чекаутом через стандартный слой совместимости; отдельный класс интеграции для Blocks не обязателен и в основном влияет только на иконку способа оплаты.
