angro-kft / nav-connector

Node.js module which provides an interface for communicating with NAV online invoice service.
GNU General Public License v3.0
35 stars 11 forks source link

'ERROR', errorCode: 'INVALID_REQUEST_SIGNATURE', message: 'Érvénytelen kérés aláírás!' #95

Open ferencfarkas09 opened 2 months ago

ferencfarkas09 commented 2 months ago
const navConnector = new NavConnector({
    technicalUser,
    softwareData,
    baseURL
});

const invoiceData = {
    invoiceNumber: '123456',
    invoiceIssueDate: '2024-07-24',
    supplierName: 'Szállító Kft.',
    supplierCountryCode: 'HU',
    supplierPostalCode: '1234',
    supplierCity: 'Budapest',
    supplierStreetName: 'Fő utca 1.',
    customerName: 'Vevő Kft.',
    customerCountryCode: 'HU',
    customerPostalCode: '5678',
    customerCity: 'Debrecen',
    customerStreetName: 'Kossuth utca 2.',
    productName: 'Termék',
    quantity: '10',
    unitPrice: '1000',
    lineAmount: '10000'
};

const invoice = create({ version: '1.0', encoding: 'UTF-8' })
    .ele('Invoice', { xmlns: 'http://schemas.nav.gov.hu/OSA/3.0/data' })
    .ele('invoiceNumber').txt(invoiceData.invoiceNumber).up()
    .ele('invoiceIssueDate').txt(invoiceData.invoiceIssueDate).up()
    .ele('supplierInfo')
    .ele('supplierName').txt(invoiceData.supplierName).up()
    .ele('supplierAddress')
    .ele('countryCode').txt(invoiceData.supplierCountryCode).up()
    .ele('postalCode').txt(invoiceData.supplierPostalCode).up()
    .ele('city').txt(invoiceData.supplierCity).up()
    .ele('streetName').txt(invoiceData.supplierStreetName).up()
    .up()
    .up()
    .ele('customerInfo')
    .ele('customerName').txt(invoiceData.customerName).up()
    .ele('customerAddress')
    .ele('countryCode').txt(invoiceData.customerCountryCode).up()
    .ele('postalCode').txt(invoiceData.customerPostalCode).up()
    .ele('city').txt(invoiceData.customerCity).up()
    .ele('streetName').txt(invoiceData.customerStreetName).up()
    .up()
    .up()
    .ele('invoiceLines')
    .ele('line')
    .ele('lineNumber').txt('1').up()
    .ele('productName').txt(invoiceData.productName).up()
    .ele('quantity').txt(invoiceData.quantity).up()
    .ele('unitPrice').txt(invoiceData.unitPrice).up()
    .ele('lineAmount').txt(invoiceData.lineAmount).up()
    .up()
    .up()
    .end({ prettyPrint: true });

const base64 = Buffer.from(invoice).toString('base64');

console.log(base64);

try {
    await navConnector.testConnection();
} catch (error) {
    console.error("Failed to connect to NAV Online", error);
}

try {
    return navConnector.manageInvoice({
        compressedContent: false,
        invoiceOperation: [
            {
                index: 1,
                invoiceOperation: 'CREATE',
                invoice: base64,
            },
        ],
    })
MichaelFBA commented 1 week ago

@ferencfarkas09 Did you get this working?

Im also seeing a slightly different issue. Do you have different credentials for the testing vs prod?

{"success":false,"response":{"result":{"funcCode":"ERROR","errorCode":"INVALID_SECURITY_USER","message":"Helytelen authentikációs adatok!"},"technicalValidationMessages":[]}}