Розробникам (до плагіна morkva NovaPay)

Filters and hooks
Написано Ihor Kit
Оновлено 3 дні тому

mrkv_novapay_client_phone

Дозволяє переписати або скоригувати номер телефону, який передається в NovaPay як client_phone. Спрацьовує після дефолтної нормалізації українських форматів (+380…, 380…, 80…, 0…, 9-цифровий локальний).

Параметри

# Тип Опис
1 string Нормалізований телефон (E.164-формат, наприклад +380675776888), або порожній рядок, якщо вхідний номер не розпізнано
2 string Сирий номер з білінг-форми, як його ввів покупець
3 WC_Order Об'єкт замовлення, що оплачується

Повертає: рядок. Порожній рядок призведе до показу стандартного повідомлення «Введіть валідний український мобільний номер».

Приклад

add_filter( 'mrkv_novapay_client_phone', function ( $phone, $raw, $order ) {
    // Дозволяємо польські номери +48xxxxxxxxx
    if ( preg_match( '/^\+?48\d{9}$/', preg_replace( '/\D+/', '', $raw ) ) ) {
        return '+' . preg_replace( '/\D+/', '', $raw );
    }
    return $phone;
}, 10, 3 );

mrkv_novapay_api_base_url

Перевизначає базову URL-адресу NovaPay API. За замовчуванням плагін бере одну з двох констант залежно від чекбокса Test mode у налаштуваннях:

  • Test mode увімкнено → https://api-qecom.novapay.ua
  • Test mode вимкнено → https://api-ecom.novapay.ua

Параметри

# Тип Опис
1 string Дефолтна URL-адреса (без /-наприкінці)
2 bool true, якщо в налаштуваннях увімкнено Test mode
3 array Повний масив налаштувань гейтвея (merchant_id, private_key тощо)

Повертає: рядок з валідною URL без слешу в кінці.

Приклад

add_filter( 'mrkv_novapay_api_base_url', function ( $url, $sandbox, $settings ) {
    if ( ! $sandbox ) {
        return 'https://api-ecom-custom.novapay.ua';
    }
    return $url;
}, 10, 3 );

Мета-поля замовлення

Усі дані з API NovaPay та постбеків зберігаються як стандартні мета-поля замовлення WooCommerce — їх можна читати через $order->get_meta( '_mrkv_np_…' ).

Ключ Тип Опис
_mrkv_np_session_id string (UUID) Ідентифікатор сесії NovaPay
_mrkv_np_last_status string Останній отриманий статус: created, processing, holded, hold_confirmed, processing_hold_completion, paid, failed, processing_void, voided, expired
_mrkv_np_paytype string Метод оплати: card, wallet, apple_pay, google_pay
_mrkv_np_terminal_name string Назва термінала, через який пройшов платіж
_mrkv_np_processing_result string Текстовий результат від процесінгу (Successful, Expired card, Client verification unsuccess тощо)
_mrkv_np_rrn string RRN банківської транзакції (унікальний ID для звернень у банк)
_mrkv_np_approval string Код авторизації
_mrkv_np_card_pan string Маскований номер картки (526961xxxx7956)
_mrkv_np_card_type string Тип картки (VISA, MC тощо)
_mrkv_np_card_bank string Банк-емітент картки
_mrkv_np_card_country string Числовий код країни картки

Приклад: знайти замовлення за RRN

$orders = wc_get_orders( [
    'meta_key'   => '_mrkv_np_rrn',
    'meta_value' => '9350927',
    'limit'      => 1,
] );

REST-endpoint постбеків

Для прийому постбеків від NovaPay плагін реєструє WooCommerce API-endpoint:

{site_url}/wc-api/mrkv_novapay/

Цей URL автоматично передається в NovaPay як параметр callback_url при створенні кожної платіжної сесії. На рівні WordPress це зачіплення стандартного хука woocommerce_api_mrkv_novapay — за потреби ви можете додати власний обробник із вищим пріоритетом для логування або форвардингу подій у зовнішні системи.

Чи була наша стаття корисною?