Если Вы приобрели, либо собираетесь приобрести, "Онлайн Кассу Атол", то можете интегрировать её с нашим сервисом по средством API:
PDF |
---|
name | ATOL-online Description.pdf |
---|
|
Скачайте данный PDF файл и передайте его вашим техническим специалистам.
Ниже простой пример кода, который вы сможете оптимизировать под свою cms, даже если она самописная. Ниже приведённый код можно использовать и отдельно от cms. Когда модуль системы IntellectMoney изменил статус заказа на "оплачено", необходимо передать параметры этого заказа на онлайн кассу Атол:
Сначала создайте XML файл
Code Block |
---|
language | xml |
---|
linenumbers | true |
---|
|
<?xml version="1.0" encoding="UTF-8"?>
<cms_params Company="ИП Пример" INN="инн" KPP="">
<shop hostname="https://ваш_сайт/">
<access login="логин" password="пароль" group_code="группа"/>
</shop>
</cms_params> |
Затем три файла:
- Atoll.class.php (Инициализируем класс)
- pay_test.php (Реализуем класс на примере чека прихода)
- atol_callback.php (Получаем ответ)
Параметры строки запроса:
api_version: версия API сервиса (на данный момент, версия API – "v3")
group_code: идентификатор группы ККТ.
operation: тип операции, которая должна быть выполнена. Возможные типы операция:
sell: чек «Приход»;
sell_refund: чек «Возврат прихода»;
sell_correction: чек «Коррекция прихода»;
buy: чек «Расход»;
buy_refund: чек «Возврат расхода»;
buy_correction: чек «Коррекция расхода».
Code Block |
---|
language | php |
---|
title | Atoll.class.php |
---|
linenumbers | true |
---|
|
<?php
class Atol {
public $api_version = 'v3';
public $login = 'логин';
public $pass = 'пароль';
public $group_code = 'группа';
public $inn = 'инн';
public $token = '';
function Send($url, $params=Array()) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if ($params) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params, JSON_UNESCAPED_UNICODE));
}
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$res = curl_exec($ch);
curl_close($ch);
return json_decode($res, true);
}
public function getToken() {
$rez = $this->Send('api_version.'/getToken'>https://online.atol.ru/possystem/'.$this->api_version.'/getToken', Array('login'=>$this->login, 'pass'=>$this->pass));
$this->token = $rez['token'];
return $rez;
}
/*
$operation - Тип документа
o sell: чек «Приход»;
o sell_refund: чек «Возврат прихода»;
o sell_correction: чек «Коррекция прихода»;
o buy: чек «Расход»;
o buy_refund: чек «Возврат расхода»;
o buy_correction: чек «Коррекция расхода».
$params - параметры документа
*/
public function sendDoc($operation, $params) {
$rez = $this->Send('api_version.'/'.$this->group_code.'/'.$operation.'?tokenid='.$this->token'>https://online.atol.ru/possystem/'.$this->api_version.'/'.$this->group_code.'/'.$operation.'?tokenid='.$this->token, $params);
return $rez;
}
public function checkDoc($uuid) {
$rez = $this->Send('api_version.'/'.$this->group_code.'/report/'.$uuid.'?tokenid='.$this->token'>https://online.atol.ru/possystem/'.$this->api_version.'/'.$this->group_code.'/report/'.$uuid.'?tokenid='.$this->token);
return $rez;
}
} |
В Atoll.class.php мы инициализировали параметры для формирования чека, авторизацию в системе Атол и получили токена, отправку и проверку документа, далее реализуем:
Code Block |
---|
language | php |
---|
title | pay_test.php |
---|
linenumbers | true |
---|
|
<?php
include 'Atol.class.php';
if ($_GET['act']=='check') {
$atol = new Atol();
if ($atol->getToken()['code'] != 2) {
$rez = $atol->checkDoc($_GET['uuid']);
?>
<p><a href="&fp=">Посмотреть'>https://lk.platformaofd.ru/web/noauth/cheque?fn=<?=$rez['payload']['fn_number']?>&fp=<?=$rez['payload']['fiscal_document_attribute']?>">Посмотреть чек</a></p>
<p><a href="-.pdf">Скачать'>https://lk.platformaofd.ru/web/noauth/cheque/pdf-<?=$rez['payload']['fn_number']?>-<?=$rez['payload']['fiscal_document_attribute']?>.pdf">Скачать чек</a></p>
<?php
print_r($rez);
}
} else {
*/ Когда статус заказа был изменён модулем IntellectMoney, берём параметры заказа и
передаём их в переменные ниже.*/
$atol = new Atol();
if ($atol->getToken()['code'] != 2) {
$p = Array(
'timestamp' => date('d.m.Y H:i:s'),
'external_id' => 'test6',
'service' => Array(
'inn' => $atol->inn,
'payment_address' => 'intellectmoney.ru',
'callback_url ' => 'http://ваш_сайтт/atol_callback.php',
),
'receipt' => Array(
'attributes' => Array(
'sno' => 'usn_income',
'email' => 'max-la@yandex.ru',
'phone' => '9127372410'
Система налогообложения. Перечисление со значениями:
«osn» - общая СН;
«usn_income» - упрощенная СН (доходы);
«usn_income_outcome» - упрощенная СН (доходы минус расходы);
«envd» - единый налог на вмененный доход;
«esn» - единый сельскохозяйственный налог;
«patent» - патентная СН.
),
'items' => Array(
Array (
'name' => 'Оплата брони 1-5446',
'price' => 1,
'quantity' => 1,
'sum' => 1,
'tax' => 'none',
'tax_sum' => 0
)
),
// Количество оплат клиентом и их сумма
'total' => 1,
'payments' => Array(
Array(
'type' => 1,
'sum' => 1
)
)
)
);
$rez=$atol->sendDoc('sell', $p);
sell: чек «Приход»;
sell_refund: чек «Возврат прихода»;
sell_correction: чек «Коррекция прихода»;
buy: чек «Расход»;
buy_refund: чек «Возврат расхода»;
buy_correction: чек «Коррекция расхода».
?>
<p><a href="?act=check&uuid=<?=$rez['uuid']?>">Проверить чек</a></p>
<?php
print_r($rez);
}
} |
Ниже получаем ответ от сервера Атол, раскодируем, преобразуем в строку и записываем в файл.
Code Block |
---|
language | php |
---|
title | atol_callback.php |
---|
linenumbers | true |
---|
|
<?php
include 'Atol.class.php';
file_put_contents('atol.txt', '!' . file_get_contents('php://input'). json_encode($_POST, JSON_UNESCAPED_UNICODE)); |
Content by Label |
---|
cql | label in ("start","online-kassa") |
---|
|