PHP code example of avangard / api

1. Go to this page and download the library: Download avangard/api library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

avangard / api example snippets


composer install


use Avangard\ApiClient;

$apiClient = new ApiClient($shopId, $shopPassword, $shopSign, $serverSign, $boxAuth, $proxy);

try {
    // All methods here...
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
        // Your custom logging here...
    }
}

    $order = [
        'AMOUNT' => 'number, обязательный',                     // сумма к оплате в копейках
        'ORDER_NUMBER' =>  'string, обязательный',              // номер заказа в интернет-магазине
        'ORDER_DESCRIPTION' => 'string, обязательный',          // описание заказа в интернет-магазине
        'LANGUAGE' => 'string, обязательный, по умолчанию RU',  // язык описания заказа в интернет-магазине
        'BACK_URL' => 'string, обязательный',                   // ссылка безусловного редиректа
        'BACK_URL_OK' => 'string',                              // ссылка успешного редиректа
        'BACK_URL_FAIL' => 'string',                            // ссылка НЕуспешного редиректа
        'CLIENT_NAME' => 'string',                              // имя плательщика
        'CLIENT_ADDRESS' => 'string',                           // физический адрес плательщика
        'CLIENT_EMAIL' => 'string',                             // email плательщика
        'CLIENT_PHONE' => 'string',                             // телефон плательщика
        'CLIENT_IP' => 'string'                                 // ip-адрес плательщика  
    ];
    

    $type =
        ApiClient::HOST2HOST    // Регистрирует оплату в интернет-эквайринге и возвращает TICKET-параметр для последующей оплаты заказа
        ApiClient::POSTFORM     // Подготавливает параметры для HTML формы оплаты, показываемой на стороне клиента (часто требуется для CMS)
        ApiClient::GETURL       // Регистрирует оплату в интернет-эквайринге и возвращает ссылку для последующей оплаты заказа
    

[
    "URL" => "https://pay.avangard.ru/iacq/pay",
    "METHOD" => "get",
    "INPUTS" => [
        "TICKET" => "JGceLCtt000012682687LskJXuIpbfmpgeeKgkcj"
    ]
]

[
  "URL" => "https://pay.avangard.ru/iacq/post",
  "METHOD" => "post",
  "INPUTS" => [
    "SHOP_ID" => "1",
    "SHOP_PASSWD" => "pass",
    "AMOUNT" => 1000,
    "ORDER_NUMBER" => "sa12",
    "ORDER_DESCRIPTION" => "My desc",
    "BACK_URL" => "http://example.ru/payments/avangard/?result=success",
    "LANGUAGE" => "RU",
    "SIGNATURE" => "1EBE4761D9B165D8FF784803686AF511",
  ]
]

"https://pay.avangard.ru/iacq/pay?ticket=JGceLCtt000012682687LskJXuIpbfmpgeeKgkcj"


vangard\ApiClient;

$debug = true;

try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );
    
    $order = [
        'AMOUNT' => 1000,
        'ORDER_NUMBER' => 'sa12',
        'ORDER_DESCRIPTION' => 'My desc',
        'BACK_URL' => 'http://example.ru/payments/avangard/?result=success'
    ];
    
    $result = $apiClient->request->prepareForms($order, ApiClient::HOST2HOST);
    
    print_r($result);
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
    }
}


Avangard\ApiClient;

function getFormData($orderNumber, $orderDescription, $amount)
{
    $debug = true;
    
    try {
        $apiClient = new ApiClient(
            1,
            'shop password',
            'shop sign',
            'server sign',
            null
        );
        
        $order = [
            'AMOUNT' => $amount,
            'ORDER_NUMBER' => $orderNumber,
            'ORDER_DESCRIPTION' => $orderDescription,
            'BACK_URL' => 'http://example.ru/payments/avangard/?result=success'
        ];
        
        $result = $apiClient->request->prepareForms($order, ApiClient::POSTFORM);
        
        return $result;
    } catch (\Exception $e) {
        if ($debug) {
            \Avangard\Lib\Logger::log($e);
        }
    }
}

$orderNumber = 'sa12';
$orderDescription = 'My desc';
$amount = 1000;

$formData = getFormData($orderNumber, $orderDescription, $amount);

$order = [
    'AMOUNT' => 'number, обязательный',                     // сумма к оплате в копейках
    'ORDER_NUMBER' =>  'string, обязательный',              // номер заказа в интернет-магазине
    'ORDER_DESCRIPTION' => 'string, обязательный',          // описание заказа в интернет-магазине
    'LANGUAGE' => 'string, обязательный, по умолчанию RU',  // язык описания заказа в интернет-магазине
    'BACK_URL' => 'string, обязательный',                   // ссылка безусловного редиректа
    'BACK_URL_OK' => 'string',                              // ссылка успешного редиректа
    'BACK_URL_FAIL' => 'string',                            // ссылка НЕуспешного редиректа
    'CLIENT_NAME' => 'string',                              // имя плательщика
    'CLIENT_ADDRESS' => 'string',                           // физический адрес плательщика
    'CLIENT_EMAIL' => 'string',                             // email плательщика
    'CLIENT_PHONE' => 'string',                             // телефон плательщика
    'CLIENT_IP' => 'string'                                 // ip-адрес плательщика  
];

[
  "TICKET" => "xQElJQhi000012682701rKuBUpngKsIsUBKPBmfM"
]


vangard\ApiClient;

$debug = true;
    
try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );
    
    $order = [
        'AMOUNT' => 1000,
        'ORDER_NUMBER' => 'sa12',
        'ORDER_DESCRIPTION' => 'My desc',
        'BACK_URL' => 'http://example.ru/payments/avangard/?result=success'
    ];
    
    $result = $apiClient->request->orderRegister($order);
    
    print_r($result);
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
    }
}

[
    'id' => 1234567890,
    'method_name' => 'SCR',
    'auth_code' => 'ABC123',
    'status_code' => 5,
    'status_desc' => 'Авторизация успешно завершена',
    'status_date' => '2012-04-23T12:47:00+04:00',
]


vangard\ApiClient;

$debug = true;
    
try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );
    
    $result = $apiClient->request->getOrderByTicket("UWyNLGVh000012669958czZpckkboKNDpUysDhlL");
    
    print_r($result);
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
    }
}


vangard\ApiClient;

$debug = true;

$_REQUEST = [
    'id' => '12663423',
    'signature' => '07EB5673A9ECD4506C112B3EE3E3AF80',
    'method_name' => 'D3S',
    'shop_id' => '1',
    'ticket' => 'OWXZAkWg000012663423irlhpRKbAevpPsymgoDu',
    'status_code' => '3',
    'auth_code' => '',
    'amount' => '2000',
    'card_num' => '546938******1152',
    'order_number' => 'sa12',
    'status_desc' => 'Исполнен',
    'status_date' => '2019-11-05 10:17:17.0',
    'refund_amount' => '0',
    'exp_mm' => '09',
    'exp_yy' => '22'
];

try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );
    
    $result = $apiClient->request->isCorrectHash($_REQUEST);
    
    var_dump($result); // true или false
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
    }
}


vangard\ApiClient;

$debug = true;

$_REQUEST = array (
    'id' => '12663423',
    'signature' => '07EB5673A9ECD4506C112B3EE3E3AF80',
    'method_name' => 'D3S',
    'shop_id' => '1',
    'ticket' => 'OWXZAkWg000012663423irlhpRKbAevpPsymgoDu',
    'status_code' => '3',
    'auth_code' => '',
    'amount' => '200',
    'card_num' => '546938******1152',
    'order_number' => 'sa12',
    'status_desc' => 'Исполнен',
    'status_date' => '2019-11-05 10:17:17.0',
    'refund_amount' => '0',
    'exp_mm' => '09',
    'exp_yy' => '22'
);

try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );
    
    if ($apiClient->request->isCorrectHash($_REQUEST)) {
    
        // Действия при получении callback запроса из банка...
    
        // Отправляем ответ, что callback запрос был успешно обработан
        $apiClient->request->sendResponse();
    }
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
    }
}

[
    "transaction_id" => 124665
]


vangard\ApiClient;

$debug = true;

try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );

    $result = $apiClient->request->orderRefund("UWyNLGVh000012669958czZpckkboKNDpUysDhlL", 10000);
    
    print_r($result);
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
    }
}


vangard\ApiClient;

$debug = true;

try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );
    
    $order = [
        'AMOUNT' => 1000,
        'ORDER_NUMBER' => 'sa12',
        'ORDER_DESCRIPTION' => 'My desc',
        'BACK_URL' => 'http://example.ru/payments/avangard/?result=success'
    ];
    
    $registerResult = $apiClient->request->orderRegister($order);

    $cancelResult = $apiClient->request->orderCancel($registerResult['TICKET']);
    
    var_dump($cancelResult);
} catch (\Exception $e) {
    if ($debug) {
        \Avangard\Lib\Logger::log($e);
    }
}

[
    [
        'id' => 1054751,
        'ticket' => '1234567890ABCDEABCDE12345678901234567890',
        'order_number' => '1',
        'status_code' => 1,
        'status_desc' => 'Обрабатывается',
        'status_date' => '2013-08-14T10:23:49+04:00',
        'amount' => 10000.0,
    ],
    [
        'id' => 1054752,
        'ticket' => '1234567890ABCDEABCDE12345678901234567811',
        'order_number' => '1',
        'status_code' => 1,
        'status_desc' => 'Обрабатывается',
        'status_date' => '2013-08-14T10:24:00+04:00',
        'amount' => 10000.0,
    ],
    [
        'id' => 1054753,
        'ticket' => '1234567890ABCDEABCDE12345678901234567822',
        'order_number' => '1',
        'method_name' => 'CVV',
        'status_code' => 2,
        'status_desc' => 'Отбракован',
        'status_date' => '2013-08-14T10:27:17+04:00',
        'amount' => 10000.0,
        'refund_amount' => 10000.0,
        'card_num' => '411111******1111',
        'exp_mm' => 12,
        'exp_yy' => 15,
    ]
]



vangard\ApiClient;

$debug = true;

try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );

    $result = $new->request->getOpersByOrderNumber("sa12");
    
    print_r($result);
} catch (\Exception $e) {
    if ($debug) {
         \Avangard\Lib\Logger::log($e);
     }
}


vangard\ApiClient;

$debug = true;

try {
    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        null
    );

    $result = $apiClient->request->getOpersByDate("2019-11-06");
    
    print_r($result);
} catch (\Exception $e) {
    if ($debug) {
         \Avangard\Lib\Logger::log($e);
     }
}


vangard\ApiClient;
use Avangard\Lib\Box\BoxAuthFactory;

$debug = true;

try {
    $boxJson = $db->getBoxJson(); // Ваш метод получения JSON строки с авторизационными данными для кассы
    $boxAuth = BoxAuthFactory::createBoxAuth($boxJson);

    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        $boxAuth
    );
    
    var_dump($apiClient->request->isBox()); // true, в случае успешного подключения к кассе
} catch (\Exception $e) {
    if ($debug) {
         \Avangard\Lib\Logger::log($e);
     }
}

$receipt = new ReceiptEntity($id, $time);

$client = new ClientEntity($name);

$receiptItem = new ReceiptItemEntity($name, $price, $quantity, $sum);

$deliveryReceiptItem = ReceiptItemEntity::delivery($name, $price, $quantity, $sum);

$receiptItem = new ReceiptItemEntity($name, $price, $quantity, $sum);

$receiptItem->setPaymentObject('commodity')


vangard\ApiClient;
use Avangard\Lib\Box\BoxAuthFactory;
use Box\DataObjects\ClientEntity;
use Box\DataObjects\ReceiptEntity;
use Box\DataObjects\ReceiptItemEntity;

$debug = true;

try {
    $boxJson = $db->getBoxJson(); // Ваш метод получения JSON строки с авторизационными данными для кассы
    $boxAuth = BoxAuthFactory::createBoxAuth($boxJson);

    $apiClient = new ApiClient(
        1,
        'shop password',
        'shop sign',
        'server sign',
        $boxAuth
    );
    
    // Перед отправкой чека необходимо проверять, есть ли подключение к кассе 
    if ($apiClient->request->isBox()) {
        $orderData = $_REQUEST['order'];
        
        // Создаём чек с номером заказа и текущим временем
        $receipt = new ReceiptEntity((string)$orderData['id'], time());
        
        // Создаём и заполняем объект данных о покупателе
        $client = new ClientEntity($orderData['client_firstname'] . ' ' . $orderData['client_lastname']);
        
        // Одно из двух полей phone или email должно быть обязательно заполнено
        $client->setPhone($order['phone']);
        $client->setEmail($order['email']);
        
        // Добавляем данные о покупателе в чек 
        $receipt->addClient($client);

        // Добавляем общую сумму заказа в чек
        $receipt->addTotal($order['total']);

        // Заполняем позиции в чеке
        foreach ($orderData['items'] as $product) {
            $receipt->addReceiptItem(
                new ReceiptItemEntity(
                    $product['name'],
                    $product['price'],
                    $product['quantity'],
                    $product['total']
                )
            );
        }

        // Если есть платная доставка, добавляем её в чек
        if (!empty($orderData['delivery'])) {
            $receipt->addReceiptItem(
                ReceiptItemEntity::delivery(
                    $orderData['delivery']['name'],
                    round($orderData['delivery']['price']),
                    1,
                    round($orderData['delivery']['price'])
                )
            );
        }

        // Отправляем чек в кассу
        $this->client->request->sendBill($receipt);
    }
} catch (\Exception $e) {
    if ($debug) {
         \Avangard\Lib\Logger::log($e);
     }
}