Суть в чем, я получаю POST запрос с данными из формы, после этого происходит создание **** invoce на ту сумму, которая была получена из формы. После идет переадресация на invoce. Проблема в том, что переадресация происходит быстрее, чем создается сам invoce и происходит переадресация на undifined. server.post('/' + element, urlencodedParser, function(req, res){ if(!req.body){ return res.sendStatus(400) } else{ let name = req.body.name let phone = req.body.tel let address = req.body.adress let payment = req.body.payment let summa = req.body.summaAll const fields = { amount: summa, currency: 'RUB', comment: 'Оплата товара', expirationDateTime: lifetime, email: 'example@mail.org', account : 'client4563', customFields : {themeCode: 'кодСтиля'}, successUrl: '****.com', paySource: 'card' }; const billId = qiwiApi.generateId(); const invoce = CreateInvoice(billId, fields) console.log(invoce) const IdUrl = path.join(__dirname + '/users/' + users + '/Url/' + element + '.json') const UrlInfo = JSON.parse(fs.readFileSync(IdUrl)) UrlInfo.NewForm = true fs.writeFileSync(path.join(__dirname + '/users/' + users + '/Url/' + element + '.json'), JSON.stringify(UrlInfo)) NewForm(bot, users, name, phone, payment, address, summa) if(payment === "Карта"){ res.redirect(invoce) } JavaScript server.post('/' + element, urlencodedParser, function(req, res){ if(!req.body){ return res.sendStatus(400) } else{ let name = req.body.name let phone = req.body.tel let address = req.body.adress let payment = req.body.payment let summa = req.body.summaAll const fields = { amount: summa, currency: 'RUB', comment: 'Оплата товара', expirationDateTime: lifetime, email: 'example@mail.org', account : 'client4563', customFields : {themeCode: 'кодСтиля'}, successUrl: '****.com', paySource: 'card' }; const billId = qiwiApi.generateId(); const invoce = CreateInvoice(billId, fields) console.log(invoce) const IdUrl = path.join(__dirname + '/users/' + users + '/Url/' + element + '.json') const UrlInfo = JSON.parse(fs.readFileSync(IdUrl)) UrlInfo.NewForm = true fs.writeFileSync(path.join(__dirname + '/users/' + users + '/Url/' + element + '.json'), JSON.stringify(UrlInfo)) NewForm(bot, users, name, phone, payment, address, summa) if(payment === "Карта"){ res.redirect(invoce) }
Тебе нужно подождать пока получишь ответ от ****, для этого функцию отвечающую за обработку ulr сделать асинхронной А на элементе где ты получаешь ответ от **** поставить await(подождать) Или же используй Promise, куча в инфы в инете как он работает Чтобы не происходило этих проблем, желательно во всех функция которые работают с запросами к url или бд, использовать await server.post('/' + element, urlencodedParser, async function(req, res){ if(!req.body){ return res.sendStatus(400) } else{ let name = req.body.name let phone = req.body.tel let address = req.body.adress let payment = req.body.payment let summa = req.body.summaAll const fields = { amount: summa, currency: 'RUB', comment: 'Оплата товара', expirationDateTime: lifetime, email: 'example@mail.org', account : 'client4563', customFields : {themeCode: 'кодСтиля'}, successUrl: '****.com', paySource: 'card' }; const billId = qiwiApi.generateId(); const invoce = await CreateInvoice(billId, fields) console.log(invoce) const IdUrl = path.join(__dirname + '/users/' + users + '/Url/' + element + '.json') const UrlInfo = JSON.parse(fs.readFileSync(IdUrl)) UrlInfo.NewForm = true fs.writeFileSync(path.join(__dirname + '/users/' + users + '/Url/' + element + '.json'), JSON.stringify(UrlInfo)) NewForm(bot, users, name, phone, payment, address, summa) if(payment === "Карта"){ res.redirect(invoce) } JavaScript server.post('/' + element, urlencodedParser, async function(req, res){ if(!req.body){ return res.sendStatus(400) } else{ let name = req.body.name let phone = req.body.tel let address = req.body.adress let payment = req.body.payment let summa = req.body.summaAll const fields = { amount: summa, currency: 'RUB', comment: 'Оплата товара', expirationDateTime: lifetime, email: 'example@mail.org', account : 'client4563', customFields : {themeCode: 'кодСтиля'}, successUrl: '****.com', paySource: 'card' }; const billId = qiwiApi.generateId(); const invoce = await CreateInvoice(billId, fields) console.log(invoce) const IdUrl = path.join(__dirname + '/users/' + users + '/Url/' + element + '.json') const UrlInfo = JSON.parse(fs.readFileSync(IdUrl)) UrlInfo.NewForm = true fs.writeFileSync(path.join(__dirname + '/users/' + users + '/Url/' + element + '.json'), JSON.stringify(UrlInfo)) NewForm(bot, users, name, phone, payment, address, summa) if(payment === "Карта"){ res.redirect(invoce) }