1.2.8 • Published 4 months ago

node-orangedata v1.2.8

Weekly downloads
71
License
MIT
Repository
github
Last release
4 months ago

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

Возможности

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

Установка

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

Используя yarn:

$ yarn add node-orangedata

Используя npm:

$ npm install --save node-orangedata

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

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

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

    const { OrangeData, Order } = require('node-orangedata');
  2. Передайте параметры для установления защищенного соединения в конструктор класса 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 });
  3. Создайте экземпляр класса 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: 'В здоровом теле здоровый дух, этот лозунг еще не потух!',
      });
  4. Используйте агента, чтобы отправить сформированный документ:

    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
    }
  5. Используйте агента для получения статусов по ранее отправленным документам:

    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 АО "Оранж Дата".

1.2.8

4 months ago

1.2.8-rc.0

4 months ago

1.2.7

6 months ago

1.2.7-rc.1

7 months ago

1.2.7-rc.0

2 years ago

1.2.6

2 years ago

1.2.6-rc.1

2 years ago

1.2.6-rc.0

2 years ago

1.2.5-pure

2 years ago

1.2.5

2 years ago

1.2.4

2 years ago

1.2.4-rc.0

2 years ago

1.2.3

2 years ago

1.2.2

3 years ago

1.2.1

3 years ago

1.1.17

3 years ago

1.1.16

3 years ago

1.1.15

3 years ago

1.1.14

3 years ago

1.1.13

3 years ago

1.1.12

4 years ago

1.1.11

4 years ago

1.1.10

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

5 years ago

1.1.4

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago