atol-online
v0.0.9
Published
Atol.Online for Node JS
Downloads
15
Maintainers
Readme
atol-online
Node-клиент для Атол.Онлайн
Установка
Используя npm
:
npm install atol-online
Используя yarn
:
yarn add atol-online
Примеры
Инициализация клиента:
const Atol = require('atol-online')
const atol = new Atol({
email: '[email protected]',
url: 'https://domain.ru',
callback_url: 'https://domain.ru/callback',
vat: 10,
})
Отправляем запрос для чека «Прихода»:
atol.sell
.create({
id: 'order_id',
customer: {
email: '[email protected]',
phone: '+79627772211',
},
items: [
{
type: 'service',
name: 'Название товара 1',
price: 100.0,
quantity: 2,
unit_label: 'шт.',
},
{
type: 'service',
name: 'Название товара 2',
price: 50.0,
unit_label: 'шт.',
},
],
})
.then(data => {
console.log(data)
})
.catch(data => {
console.log(data)
})
Передаем данные об агенте:
const atol = new Atol({
...,
agent: {
type: 'paying_agent',
operation: 'Комиссия за использование сервиса',
phones: ['+79627772299']
},
supplier: {
name: 'ООО «Ромашка»',
phones: ['+79627772233', '+79627772200'],
inn: '424242424242',
}
})
atol.sell.create({
id: 'order_id',
customer: {
email: '[email protected]',
phone: '+79627772211',
},
items: [
{
type: 'service',
name: 'Название товара 1',
price: 100.0,
quantity: 2,
unit_label: 'шт.',
agent: false // не передаем данные агента для этого товара
},
{
type: 'service',
name: 'Название товара 2',
price: 50.0,
unit_label: 'шт.',
agent: {
// передаем другие данные агента
// для этого товара
...
},
supplier: {
// передаем другие данные поставщика
// для этого товара
...
}
},
]
}).
Отправляем запрос для чека «Возврат прихода»:
atol.sell
.refund({
id: 'order_id',
customer: {
email: '[email protected]',
phone: '+79627772211',
},
items: [
{
type: 'service',
name: 'Название товара 1',
price: 100.0,
quantity: 2,
unit_label: 'шт.',
},
{
type: 'service',
name: 'Название товара 2',
price: 50.0,
unit_label: 'шт.',
},
],
})
.then(data => {
console.log(data)
})
.catch(data => {
console.log(data)
})
Отправляем запрос для чека «Коррекция прихода»:
atol.sell
.correction({
id: 'correction_id', // уникальный ID
amount: 100.0,
number: '123456', // номер коррекции
description: 'Описание коррекции',
instruction: true, // по-умолчанию false
payment_type: 'advance',
})
.then(data => {
console.log(data)
})
.catch(data => {
console.log(data)
})
Получаем данные о статусе:
atol.report
.get('4475d6d8d-844d-4d05-aa8b-e3dbdf3defd5')
.then(data => {
console.log(data)
})
.catch(data => {
console.log(data)
})
Можно использовать async/await
(для всех методов):
async function purchase(payload) {
try {
const data = await atol.sell.create(payload)
console.log(data)
} catch (error) {
console.error(error)
}
}
Конфигурация
Доступы к тестовой среде можно найти ниже в описании.
const atol = new Atol({
// Логин для авторизации
login: 'user',
// Пароль для авторизации
password: 'pass',
// Идентификатор группы ККТ
group: 'group-code',
// ИНН организации.
// Используется для предотвращения ошибочных регистраций чеков на ККТ
inn: '12341234',
// Возможные варианты:
// `osn`
// `usn_income`
// `usn_income_outcome`
// `envd`
// `esn`
// `patent`
sno: null,
// Возможные варианты:
// 10
// 18 (временно присутствует)
// 20
// `10/110`
// `18/118`
// по-молчанию `none`
vat: 'none',
// Электронная почта отправителя чека
email: '[email protected]',
// Адрес сайта на котором была сделана покупка
url: 'https://domain.ru',
// адрес на который будут отправляться уведомления
// об изменении статуса
callback_url: 'https://domain.ru/callback',
// Передаем данные агента
agent: {
// Тип агента. Возможные варианты:
// bank_paying_agent
// bank_paying_subagent
// paying_agent
// paying_subagent
// attorney
// comission_agent
// another
type: null,
// Массив или строка с `,` в качестве разделителя, например:
// [ '+79627772211', '+79627772233' ]
// `+79627772211,+79627772233`
phones: [],
//...
// другие параметры из документации Атола
},
// Передаем данные поставщика
supplier: {
// Название компании поставшика
name: 'ООО «Ромашка»',
// Телефоны поставщика
phones: '+79627772211, +79627772200',
// ИНН поставщика
inn: '454545454545',
},
// Если указать true, то данные будут
// отправляться в тестовую среду Атол.Онлайн.
// Используется лишь для написания тестов
livemode: false,
})
process.env
Все конфигурации так же могут (и должны) быть указаны в файле .env
или передаваться динамически. Ниже приведены названия переменных и данные тестовой среды Атола (ребята из тех. поддержки любезно поделились ими)
ATOL_VAT=
ATOL_AGENT_TYPE=
ATOL_AGENT_PHONES=
ATOL_COMPANY_SNO=
ATOL_LOGIN=v4-online-atol-ru
ATOL_PASSWORD=iGFFuihss
ATOL_GROUP=v4-online-atol-ru_4179
ATOL_COMPANY_URL=https://v4.online.atol.ru
[email protected]
ATOL_COMPANY_INN=5544332219