Robokassa на Node JS
Всем здравствуйте. Возникла проблема с Робокассой. Пользовался библиотекой node-robokassa. Использую в качестве сервера Express. Генерирую ссылку и проверяю тестовую оплату для success через этот код:
const outSum = 52.79;
const invDesc = 'Test Transaction';
const options = {
invId: 14893,
isTest: true,
userData: {
productId: '14893',
username: 'Mikhail'
}
}
const paymentUrl = robokassaHelper.generatePaymentUrl(outSum, invDesc, options);
console.log(paymentUrl);
app.post('/success', (req, res) => {
robokassaHelper.handleResultUrlRequest(req, res, (values, userData) => {
res.send('userData')
});
});
app.listen(3000);
Потом смотрю в Postman, отправляю post запрос на localhost:3000/success и вижу:
Cannot read property 'OutSum' of undefined
Если кто-то встречался с проблемой, надеюсь на помощь. Заранее спасибо.
Ответы (1 шт):
Проблема первая. Судя по этому кусочку кода, вы принимаете POST-запрос, но не обрабатываете его данные на сервере. В express это делается так:
const app = express();
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.post('/success', (req, res) => { ... });
Потенциальная вторая проблема.
Оповещение об оплате на ResultURL
ResultURL предназначен для получения Вашим сайтом оповещения об успешном платеже в автоматическом режиме.
В случае успешного проведения оплаты ROBOKASSA делает запрос на ResultURL (см. раздел Технические настройки) с указанием параметров OutSum, InvId и SignatureValue.
Перед тем как делать запрос из Postman, вам понадобится внимательно прочитать в документации ROBOKASSA как именно они вычисляют SignatureValue запроса (OutSum:InvId:Пароль#2 и 100.26:450009:Пароль#2:Shp_login=Vasya:Shp_oplata=1) и вычислить чексумму вашего запроса, иначе вы просто будете получать сообщение об ошибке:
Incorrect signature value
Понятно, что сама ROBOKASSA обратиться к вашему localhost не сможет, хотя ngrok может помочь решить эту проблему.