New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

node-orangedata

Package Overview
Dependencies
Maintainers
4
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-orangedata

Node.js integration for OrangeData service

latest
Source
npmnpm
Version
1.5.0
Version published
Weekly downloads
112
-21.68%
Maintainers
4
Weekly downloads
 
Created
Source
Node.js integration for OrangeData service

Note: this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

- made with ❤︎ by OrangeData and contributors.

Возможности

  • Взаимодействие с онлайн-кассой по защищенному каналу связи (SSL)
  • SHA256-RSA подпись сообщений приватным ключом отправителя
  • Создание чека, соответствующего протоколу ОранжДата
  • Получение статуса ранее отправленного чека
  • Создание чека коррекции
  • Проверка контрольной марки

Установка

Для работы с данной библиотекой требуется Node.js версии 8.9.2 (LTS) или выше.

Используя yarn:

$ yarn add node-orangedata

Используя npm:

$ npm install --save node-orangedata

Использование

Используйте команду npm test, чтобы запустить выполнение примера в вашей консоли.

  • Подключите библиотеку в вашем коде:

    const { OrangeData, Order } = require('node-orangedata');
    
  • Передайте параметры для установления защищенного соединения в конструктор класса OrangeData:

    
    const cert = fs.readFileSync('./keys/client.crt');
    const key = fs.readFileSync('./keys/client.key');
    const passphrase = '1234';
    const ca = fs.readFileSync('./keys/cacert.pem');
    const privateKey = fs.readFileSync('./keys/private_key.pem');
    const apiUrl = 'https://apip.orangedata.ru:2443/api/v2';
    
    const agent = new OrangeData({ apiUrl, cert, key, passphrase, ca, privateKey });
    
  • Создайте экземпляр класса Order и заполните документ данными соответствующими протоколу:

    const order = new Order({
      id: '123',
      inn: '7725713770',
      group: 'Main',
      type: 1, // Приход
      customerContact: '+79991234567',
      customer: 'покупатель',
      customerINN: '7725713770',
      taxationSystem: 1, // Общая
    });
    
    order
      .addPosition({
        text: 'Тестовый товар',
        quantity: 5,
        price: 10,
        tax: 1,
        paymentMethodType: 1,
        paymentSubjectType: 1,
        nomenclatureCode: 'igQVAAADMTIzNDU2Nzg5MDEyMwAAAQ==',
        supplierINN: '3123011520',
        supplierInfo: { phoneNumbers: ['+79998887766'], name: 'Наименование поставщика' },
      })
      .addPayment({ type: 1, amount: 10 })
      .addPayment({ type: 2, amount: 40 })
      .addAgent({
        agentType: 127,
        paymentTransferOperatorPhoneNumbers: ['+79998887766'],
        paymentAgentOperation: 'Операция агента',
        paymentAgentPhoneNumbers: ['+79998887766'],
        paymentOperatorPhoneNumbers: ['+79998887766'],
        paymentOperatorName: 'Наименование оператора перевода',
        paymentOperatorAddress: 'Адрес оператора перевода',
        paymentOperatorINN: '3123011520',
        supplierPhoneNumbers: ['+79998887766'],
      })
      .addUserAttribute({
        name: 'citation',
        value: 'В здоровом теле здоровый дух, этот лозунг еще не потух!',
      });
    
    
  • Используйте агента, чтобы отправить сформированный документ:

    const { OrangeDataError } = require('node-orangedata/lib/errors');
    
    try {
      agent.sendOrder(order);
    } catch (error) {
      if (error instanceof OrangeDataError) {
        // OrangeData errors contains additional info in `errors` property of type Array
        console.log(error.message, error.errors);
      }
      // general errors handling
    }
    
    
  • Используйте агента для получения статусов по ранее отправленным документам:

    try {
      const status = agent.getOrderStatus(inn, id);
      if (status) {
        // Документ успешно обработан, status содержит данные документа
      } else {
        // Документ создан и добавлен в очередь на обработку, но еще не обработан
      }
    } catch (error) {
      if (error instanceof OrangeDataError) {
        // OrangeData errors contains additional info in `errors` property of type Array
        console.log(error.message, error.errors);
      }
      // general errors handling
    }
    
    

Troubleshooting

  • Ошибка error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag означает неправильный pem формат приватного ключа.

    Если вы воспользовались советом из протокола и сконвертировали xml в pem с помощью онлайн-конвертора, то попробуйте изменить заголовок и окончание ключа. Укажите -----BEGIN PRIVATE KEY----- вместо -----BEGIN RSA PRIVATE KEY-----.

License

This project is licensed under the MIT license, copyright (c) 2017 АО "Оранж Дата".

FAQs

Package last updated on 18 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts