Как выставлять счёт в Qiwi api с другой валюты кроме рубля?
Я хочу выставить счёт Qiwi, в тенге. Пока у меня получается только в рублях.
Я полностью прочитал документацию Qiwi api. Там сказано:
Доступно выставление счетов только в рублях.
Но, чисто для интереса, я попробовал вместо рубля (RUB), выставить счёт в тенге (KZT). И у меня получилось! Но моё счастье длилось не долго. Qiwi начал странно себя ввести, и через не которое время уже начал возвращать ошибку "Не правильные параметры". Я в замешательстве. Так можно выставлять счёт на другой волюте или нет ?
Попробовал оба метода. Сейчас у меня работают коды которые указаны ниже только в волюте рубль.
- В первом варианте, Qiwi просто игнорирует что волюта у меня установлен в тенге (KZT) и выставляет счёт в рублях (RUB).
- В втором варианте 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. И возвращает ссылку на форму серверу. А сервер в свою же очередь отправляет его клиенту.