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.
Возможности
Установка
Для работы с данной библиотекой требуется 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) {
console.log(error.message, error.errors);
}
}
-
Используйте агента для получения статусов по ранее отправленным документам:
try {
const status = agent.getOrderStatus(inn, id);
if (status) {
} else {
}
} catch (error) {
if (error instanceof OrangeDataError) {
console.log(error.message, error.errors);
}
}
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 АО "Оранж Дата".