Как выставлять счёт в Qiwi api с другой валюты кроме рубля?

Я хочу выставить счёт Qiwi, в тенге. Пока у меня получается только в рублях.

Я полностью прочитал документацию Qiwi api. Там сказано:

Доступно выставление счетов только в рублях.

Но, чисто для интереса, я попробовал вместо рубля (RUB), выставить счёт в тенге (KZT). И у меня получилось! Но моё счастье длилось не долго. Qiwi начал странно себя ввести, и через не которое время уже начал возвращать ошибку "Не правильные параметры". Я в замешательстве. Так можно выставлять счёт на другой волюте или нет ?

Попробовал оба метода. Сейчас у меня работают коды которые указаны ниже только в волюте рубль.

  1. В первом варианте, Qiwi просто игнорирует что волюта у меня установлен в тенге (KZT) и выставляет счёт в рублях (RUB).
  2. В втором варианте Qiwi возвращает ошибку "Не правильные параметры".

Первый метод.

// Выставить счёт. При успешном ответе вернуть payUrl
// payUrl ведёт на сайт Qiwi с формой для оплаты счёта
exports.createBill = functions.https.onCall((data, context) => {
  // Получаем данные которые пришли с клиента 
  const amount = data.amount;  
  const billId = uuidv4();
  
  // Готовим данные для создания ссылки на форму
  const params = {
    publicKey : PUBLICK_KEY,
    amount : amount,
    billId : billId,
    currency: 'KZT' // Волюта оплаты тенге
  };
  
  // Создаём ссылку на форму. Вместо нас, все это делает библиотека Qiwi
  const payUrl = qiwiApi.createPaymentForm(params);
  
  // Готовим данные которые будем отправлять обратно клиенту
  var response = {
    code : 200,
    payUrl : payUrl
  };
  
  // Отправляем данные
  return response;
});

Второй метод.

// Выставить счёт. При успешном ответе вернуть payUrl
// payUrl ведёт на сайт Qiwi с формой для оплаты счёта
exports.createBill = functions.https.onCall((data, context) => {
  // Получаем данные которые пришли с клиента 
  const amount = data.amount;  
  const billId = uuidv4();

  // Готовим данные для создания ссылки на форму
  const fields = {
    amount: amount,
    currency: 'KZT' // Волюта оплаты тенге. Который то работает, то не работает
  };

  // Делаем запрос к Qiwi что бы получить ссылку на форму платежа
  return qiwiApi.createBill( billId, fields ).then( bill_data => {
    // Готовим данные которые будем отправлять обратно клиенту
    var response = {
      code : 200,
      payUrl : bill_data.payUrl
    };

    // Отправляем данные к клиенту
    return response;
  }).catch(e => {
    // Если Qiwi вернул ошибку вместо ссылки на форму платежа
    console.log(`Error. Bill id - ${billId}`);
    var response = {
      code : 500
    };

    return response;
  });
});

Оба метода делают одно и то же. Отличие в том, как они это делают.

В первом случае сервер сам выставляет счёт. И отправляет ссылку на форму клиенту.

В втором случае счёт выставляет уже сервер Qiwi. И возвращает ссылку на форму серверу. А сервер в свою же очередь отправляет его клиенту.


Ответы (0 шт):