UNPKG

@martcarrefour/robokassa

Version:

Robokassa Node.JS integration (Note: Original repository is now actively maintained)

136 lines (96 loc) 5.07 kB
# Robokassa Node.JS > ⚠️ _Этот пакет был форком [@dev-aces/robokassa](https://www.npmjs.com/package/@dev-aces/robokassa). Обратите внимание, что оригинальный репозиторий теперь активно поддерживается._ > ✅ В этой версии добавлена поддержка **рекуррентных платежей** ([документация](https://docs.robokassa.ru/recurring/)) Пакет [Robokassa](https://docs.robokassa.ru) для Node.JS. Поддерживает JavaScript и TypeScript. А также весь современный API Робокассы, включая [фискализацию](https://docs.robokassa.ru/fiscalization/?utm_medium=email&utm_source=UniSender&utm_campaign=284292554) через receipt, которую необходимо проводить по закону РФ для всех интернет услуг. Пакет предназначен только для использования на сервере, пароли должны сохраняться в секрете. ## Установка ```sh $ npm install @martcarrefour/robokassa ``` # Использование ## URL для оплаты Сгенерируйте URL для оплаты на сервере и перенаправьте на него браузер пользователя. TypeScript: ```typescript import { Robokassa } = from '@martcarrefour/robokassa'; const robokassa = new Robokassa({ merchantLogin: 'my_merchant_login', password1: 'my_password_1', password2: 'my_password_2', // hashAlgorithm: 'md5' (default) // isTest: false (default) // url: 'https://auth.robokassa.ru/Merchant/Index.aspx' (default) }); const url = robokassa.generatePaymentUrl({ outSum: '10.00', // или outSum: 10 (type number) description: 'Тестовый продукт', // Пользовательские параметры должны начинаться с "shp_" или "Shp_" или "SHP_". // Они будут переданы на ваш сервер вызовом Робокассы после оплаты в том же виде. userParameters: { shp_interface: 'link', shp_user_id: 'user_id', }, // фискализация receipt: { items: [ { sum: 10, name: 'Мой продукт', quantity: 1, payment_method: 'full_payment', payment_object: 'service', tax: 'none', }, ], }, }); ``` JavaScript: ```javascript const { Robokassa } = require('@martcarrefour/robokassa'); // Остальное аналогично TypeScript примеру. ``` ## Webhooks Result URL для подтверждения и обработки успешной оплаты. Для перенаправления браузера пользователя после оплаты Робокасса использует параметры Success URL и Failure URL. Не перепутайте. Если в настройках Робокассы исользуется метод `POST` для отправки Result URL (рекомендуется), то можно использовать следующий код Express.JS для обработки запросов: TypeScript: ```typescript import { Robokassa, IRobokassaResponse } = from '@martcarrefour/robokassa'; import express, { Request, Response } from 'express'; const robokassa = new Robokassa({ merchantLogin: 'my_merchant_login', password1: 'my_password_1', password2: 'my_password_2', }); const app = express(); // Указать данный URL для отправки успешного результаты оплаты в настройках Робокассы (Method of sending data to Result Url) app.post('/payment/result', function (req: Request, res: Response) { const robokassaResponse = req.body as IRobokassaResponse; if (robokassa.checkPayment(robokassaResponse)) { console.log('Successful payment!'); const { InvId, /* OutSum, shp_interface, ...etc */ } = robokassaResponse; // Обязательно вернуть ответ Робокассе в формате `OK[InvId]` при успешной обработке запроса. res.send(`OK${InvId}`); } else { console.log('Processing failed!'); res.send(`Failure`); } }); ``` ## Внесение изменений Сделайте fork репозитория, изменения, убедитесь что успешно пройдены тесты и форматирование: ```bash $ npm install $ npm run format $ npm run build $ npm run test ``` # История Идея взяты из следующий старых проектов, которые, к сожалению, не поддерживают современный API Робокассы: - [betsol/node-robokassa](https://github.com/betsol/node-robokassa) - [SeNaP/-node-robokassa](https://github.com/SeNaP/node-robokassa) ## Лицензия MIT