@Markiv07

Не работает выставление счёта qiwi?

Здравствуйте нужно при нажатии кнопки выставлять счёт киви и переправлять человека на форму оплату. Вылазит такая ошибка 60272201b968b963845822.png

Вот код который у меня есть
Этот стоит в app.js серверной части
app.put('/create-payment', function () {
  p = JSON.parse(qiwi());
});


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/'
  };

  qiwiApi.createBill( billId, fields ).then( data => {
      //do with data
  });
}


Ещё не могу понять что делать с вот этим createBill

Это обработчик нажатия на кнопку
document.querySelectorAll('.payments').forEach(function(element){
  element.onclick = createPayment;
});

function createPayment() {
  fetch('/create-payment',{
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer %%%%%%%%%%2gCRwwF3Dnh5XrasNTx3BGPiMsyXQFNKQhvukniQG8RTVhYm3iPwPhF1aV7hgCHTZbGec4giFGqmsEEVhPUjQ53RCTCTPZZSiJjWpK2yxxfQtUV8gg124j6t5xuC21LcuAvM25dLFy1x2cPKbA4QYTdqUfzK',
    'Accept': 'application/json',
    'Content-Type' : 'application/json'
  }
}).then(function (response) {
      return response.text();
  }
  )
}


Не могу понять в чём ошибка, и как с этой ошибкой бороться
И не могу понять как принимать json ответ с ссылкой на саму форму
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
alexk111
@alexk111
Автор Ботодрома (автоматизация Telegram, VK и др.)
Сейчас код в серверной части после обращения к 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
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
Ты отправляешь запрос на localhost:3000
То есть, самому себе.
А надо отправлять на сервер платёжной системы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы