Сейчас код в серверной части после обращения к
PUT /create-payment
вызывает
qiwi()
, который ничего не возвращает (возвращает undefined), и это парсится в
JSON.parse
.
Вы, видимо, хотите отпарсить результат вызова
qiwiApi.createBill( billId, fields )
. Если это так, тогда исследуйте - как работать с async-функциями и/или использовать Promise.
Если правильно понял то, что вы хотели сделать, то серверный код будет таким:
app.put('/create-payment', async function (req,res,next) {
const data = await qiwi(); // получаем в data результат вызова qiwiApi.createBill
const p = JSON.parse(data);
// тут делаем что-то еще, если нужно
next(); // т.к. функция асинхронная, вызываем next, чтобы объявить о завершении выполнения этого middleware
});
async function qiwi() {
const billId = qiwiApi.generateId();
const fields = {
amount: 1.00,
currency: 'RUB',
comment: 'test',
expirationDateTime: '2018-03-02T08:44:07',
successUrl: 'http://test.ru/'
};
const data = await qiwiApi.createBill( billId, fields );
// тут делаем что-то еще, если нужно
return data; // возвращаем результат вызова qiwiApi.createBill
}