Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
@qiwi/bill-payments-node-js-sdk
Advanced tools
Node.js SDK модуль для внедрения единого платежного протокола эквайринга и QIWI Кошелька.
Установка с помощью npm:
$ npm install @qiwi/bill-payments-node-js-sdk --save
Подключение:
const QiwiBillPaymentsAPI = require('@qiwi/bill-payments-node-js-sdk');
API QIWI Кассы: https://developer.qiwi.com/ru/bill-payments
Для использования SDK требуется SECRET_KEY
, подробности в документации.
const SECRET_KEY = 'eyJ2ZXJzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjUyNjgxMiwiYXBpX3VzZXJfaWQiOjcxNjI2MTk3LCJzZWNyZXQiOiJmZjBiZmJiM2UxYzc0MjY3YjIyZDIzOGYzMDBkNDhlYjhiNTnONPININONPN090MTg5Z**********************';
const qiwiApi = new QiwiBillPaymentsAPI(SECRET_KEY);
Смена SECRET_KEY
на новый:
const NEW_SECRET_KEY = 'kokoOKPzaW9uIjoicmVzdF92MyIsImRhdGEiOnsibWVyY2hhbnRfaWQiOjUyNjgxMiwiYXBpX3VzZXJfaWQiOjcxNjI2MTk3LCJzZWNyZXQiOiJmZjBiZmJiM2UxYzc0MjY3YjIyZDIzOGYzMDBkNDhlYjhiNTk5NmIbhchhbbHBHIBDBI**********************';
qiwiApi.key = NEW_SECRET_KEY;
По-умолчанию пользователю доступно несколько способов оплаты. В платежной форме параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается форма с выбором способа оплаты. При использовании этого способа нельзя гарантировать, что все счета выставлены мерчантом, в отличие от выставления по API. Через API все параметры передаются в закрытом виде , так же в API поддерживаются операции выставления и отмены счетов, возврата средств по оплаченным счетам, а также проверки статуса выполнения операций.
Простой способ для интеграции. При открытии формы клиенту автоматически выставляется счет. Параметры счета передаются в открытом виде в ссылке. Далее клиенту отображается платежная форма с выбором способа оплаты. При использовании этого способа нельзя гарантировать, что все счета выставлены мерчантом, в отличие от выставления по API.
Метод createPaymentForm
создает платежную форму. В параметрах нужно указать: ключ идентификации провайдера, полученный в QIWI Кассе publicKey
, идентификатор счета billId
внутри вашей системы и сумму amount
. В результате будет получена ссылка на форму оплаты, которую можно передать клиенту. Подробнее о доступных параметрах в документации.
const publicKey = '2tbp1WQvsgQeziGY9vTLe9vDZNg7tmCymb4Lh6STQokqKrpCC6qrUUKEDZAJ7mvFnzr1yTebUiQaBLDnebLMMxL8nc6FF5zfmGQnypdXCbQJqHEJW5RJmKfj8nvgc';
const params = {
publicKey,
amount: 200,
billId: '893794793973',
successUrl: 'https://merchant.com/payment/success?billId=893794793973'
};
const link = qiwiApi.createPaymentForm(params);
В результате:
https://oplata.qiwi.com/create?publicKey=2tbp1WQvsgQeziGY9vTLe9vDZNg7tmCymb4Lh6STQokqKrpCC6qrUUKEDZAJ7mvFnzr1yTebUiQaBLDnebLMMxL8nc6FF5zfmGQnypdXCbQJqHEJW5RJmKfj8nvgc&amount=200&billId=893794793973&successUrl=https%3A%2F%2Fmerchant.com%2Fpayment%2Fsuccess%3FbillId%3D893794793973&customFields[apiClient]=node_sdk&customFields[apiClientVersion]=3.1.2
Надежный способ для интеграции. Параметры передаются server2server с использованием авторизации. Метод позволяет выставить счет, при успешном выполнении запроса в ответе вернется параметр payUrl
- ссылка для редиректа пользователя на платежную форму.
Метод createBill
выставляет новый счет. В параметрах нужно указать: идентификатор счета billId
внутри вашей системы и дополнительными параметрами fields
. В результате будет получен ответ с данными о выставленном счете.
const billId = '893794793973';
const fields = {
amount: 1.00,
currency: 'RUB',
comment: 'test',
expirationDateTime: '2018-03-02T08:44:07',
email: 'example@mail.org',
account : 'client4563',
successUrl: 'http://test.ru/'
};
qiwiRestApi.createBill( billId, fields ).then( data => {
//do with data
});
В результате:
{
"siteId": "270305",
"billId": "cc961e8d-d4d6-4f02-b737-2297e51fb48e",
"amount": {
"currency": "RUB",
"value": "200.34"
},
"status": {
"value": "WAITING",
"changedDateTime": "2018-07-12T10:28:38.855+03:00"
},
"comment": "test",
"creationDateTime": "2018-07-12T10:28:38.855+03:00",
"expirationDateTime": "2018-08-26T10:28:38.855+03:00",
"payUrl": "https://oplata.qiwi.com/form/?invoice_uid=bb773791-9bd9-42c1-b8fc-3358cd108422&successUrl=http%3A%2F%2Ftest.ru%2F"
}
Метод getBillInfo
возвращает информацию о счете. В параметрах нужно указать идентификатор счета billId
внутри вашей системы, в результате будет получен ответ со статусом счета. Подробнее в документации.
const billId = '893794793973';
qiwiApi.getBillInfo(billId).then( data => {
//do with data
});
Ответ:
{
"siteId": "270305",
"billId": "4fa5cb2a-942e-4e67-b552-ff10c71d6f8d",
"amount": {
"currency": "RUB",
"value": "200.34"
},
"status": {
"value": "WAITING",
"changedDateTime": "2018-07-12T10:31:06.846+03:00"
},
"comment": "test",
"creationDateTime": "2018-07-12T10:31:06.846+03:00",
"expirationDateTime": "2018-08-26T10:31:06.846+03:00",
"payUrl": "https://oplata.qiwi.com/form/?invoice_uid=ee3ad91d-cfb8-4dbf-8449-b6859fdfec3c"
}
Метод cancelBill
отменяет неоплаченный счет. В параметрах нужно указать идентификатор счета billId
внутри вашей системы, в результате будет получен ответ с информацией о счете. Подробнее в документации.
const billId = '893794793973';
qiwiApi.cancelBill(billId).then( data => {
//do with data
});
Ответ:
{
"siteId": "270305",
"billId": "60418b7e-1e95-4ac0-936e-0b98d7a7fdae",
"amount": {
"currency": "RUB",
"value": "200.34"
},
"status": {
"value": "REJECTED",
"changedDateTime": "2018-07-12T10:32:17.595+03:00"
},
"comment": "test",
"creationDateTime": "2018-07-12T10:32:17.481+03:00",
"expirationDateTime": "2018-08-26T10:32:17.481+03:00",
"payUrl": "https://oplata.qiwi.com/form/?invoice_uid=a3fe62b2-9962-4d9d-9025-0766fb492546"
}
Методом refund
производит возврат средств. В параметрах нужно указать идентификатор счета billId
, идентификатор возврата refundId
внутри вашей системы, сумму возврата amount
и валюту возврата currency
. Подробнее в документации.
const billId = '893794793973';
const refundId = '899343443';
const amount = 12;
const currency = 'RUB'
qiwiApi.refund(billId, refundId, amount, currency).then( data => {
//do with data
});
В результате будет получен ответ c информацией о возврате и о счете:
{
"amount": {
"currency": "RUB",
"value": "0.01"
},
"dateTime": "2018-07-12T10:34:02.191+03:00",
"refundId": "1531380841742",
"status": "PARTIAL"
}
Метод getRefundInfo
запрашивает статус возврата, в параметрах нужно указать идентификатор счета billId
, идентификатор возврата refundId
внутри вашей системы. Подробнее в документации.
const billId = '893794793973';
const refundId = '899343443';
qiwiApi.getRefundInfo(billId, refundId).then( data => {
//do with data
});
В результате будет получен ответ c информацией о возврате:
{
"amount": {
"currency": "RUB",
"value": "1.00"
},
"dateTime": "2018-07-11T15:06:55.987+03:00",
"refundId": "1520425084283",
"status": "PARTIAL"
}
Метод generateId
возвращает строку в формате UUID v4, удобно для генерирования billId
, refundId
:
const billId = qiwiApi.generateId();
//e9b47ee9-b2f9-4b45-9438-52370670e2a6
Метод getLifetimeByDay
генерирует дату до которой счет будет доступен для оплаты - lifetime
. Входной параметр - сколько дней счет будет доступен, если не указанно, то по умолчанию 45 дней. Метод возвращает строку в формате ISO 8601 UTC±0:00:
//now: 2018-02-04T17:16:58.033Z
const lifetime = qiwiApi.getLifetimeByDay(1);
//2018-02-05T17:16:58.033Z
//now: 2018-02-04T17:16:58.033Z
const lifetime = qiwiApi.getLifetimeByDay(0.5);
//2018-02-05T05:16:58.033Z
Метод checkNotificationSignature
осуществляет проверку подписи при нотификации о новом счете от сервера уведомлений QIWI. Принимает на вход подпись из входящего запроса, объект - тело запроса и secret ключ, с помощью которого должна осуществляться подпись:
const validSignatureFromNotificationServer =
'07e0ebb10916d97760c196034105d010607a6c6b7d72bfa1c3451448ac484a3b';
const notificationData = {
bill: {
siteId: 'test',
billId: 'test_bill',
amount: {value: 1, currency: 'RUB'},
status: {value: 'PAID'}
},
version: '3'
};
const merchantSecret = 'test-merchant-secret-for-signature-check';
qiwiApi.checkNotificationSignature(
validSignatureFromNotificationServer, notificationData, merchantSecret
); // true
$ cd bill-payments-node-js-sdk
npm install
npm run test
--harmony
или
babel-preset-es2017
FAQs
Universal payments API SDK
The npm package @qiwi/bill-payments-node-js-sdk receives a total of 177 weekly downloads. As such, @qiwi/bill-payments-node-js-sdk popularity was classified as not popular.
We found that @qiwi/bill-payments-node-js-sdk demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.