npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

atol-online

v0.0.9

Published

Atol.Online for Node JS

Downloads

15

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