Быстрый старт
Приведённый ниже пример демонстрирует минимальный сценарий: выполнение операции оплаты с получением промежуточных статусов и финального результата.
| Метод | Назначение |
|---|---|
lpdrive_register_callback(cb) | Регистрирует функцию обратного вызова для получения промежуточных статусов операции. Вызывается один раз при инициализации. |
lpdrive_get_status(buffer, size) | Возвращает текущий статус транзакции. Используется в polling-модели. При завершении возвращает LPDRIVE_STATUS_FINAL. |
lpdrive_send_choice(params) | Передаёт выбор кассира при интерактивном запросе (action_request). Индекс выбранного пункта — с 0. |
lpdrive_cancel(transaction_id) | Отправляет запрос на отмену активной операции. Терминал может не принять отмену, если операция уже авторизована. |
#include "lpdrive.h"
#include <stdio.h>
#include <string.h>
/* callback */
void my_callback(const char* status) {
printf("Status update: %s\n", status);
}
int main(void) {
/* 1. Регистрация callback() */
lpdrive_register_callback(my_callback);
/* 2. Оплата: 100.00 RUB (10000 копеек) */
lpdrive_transaction_t* transaction = lpdrive_sale("10000", "643", NULL);
/* 3. Ожидание завершения - polling */
while (1) {
lpdrive_status_t status = lpdrive_get_status(transaction);
if (status == LPDRIVE_STATUS_FINAL) break; /* Завершено */
// lp_cancel(transaction); /* Отмена */
}
/* 4. Обработка результата */
bool succeed = lp_is_succeed(transaction);
if (succeed) {
printf("Responce code: %s\n", lp_get_response_code(transaction));
printf("Responce description: %s\n", lp_get_response_description(transaction));
printf("Rrn: %s\n", lp_get_rrn(transaction));
} else {
printf("Responce code: %s\n", lp_get_response_code(transaction));
}
lpdrive_destroy(transaction); /* Освобождение памяти */
return 0;
}