На самом деле все просто получилось. Перечитал документацию и дело пошло:
0) Установил Body Parser - чтобы преобразовывать запросы в properties в req.body:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
1) Форма оплаты на сайте содержит поле Label. Данное поле содержит уникальный ID покупателя.
То есть когда Покупатель нажимает кнопку submit (в форме оплаты), Yandex на указанный во 2-м пункте адрес высылает "отбивку". В 4-м пункте я принимаю отбивку, а именно значение Label, находящееся в req.body. После этого обновляю данные клиента в базе данных (MongoDB).......
Можно делать много других запросов в Yandex API (история платежей и др.), но для этого нужно сначала получить от Yandex API "code", который сразу нужно поменять на "access_token" (действителен в течение 3-х лет).
Максим Максим Федоров , добрый день.
Нахожусь в процессе внедрения HTTP-уведомлений в свое приложение на Express.js (на localhost).
Совсем запутался.....
2) Дальше я сделал Route - чтобы при успешном завершении платежа перенаправить пользователя на localhost:3000/success.
Правильно я понимаю, что когда транзакция проходит:
1) Пользователь Автоматически переправляется на localhost:3000/success
2) в этом Route я должен сформировать запрос POST - чтобы получить в ответ уведомление от Яндекса?
параметры запросы должны содержать "опции" того, что я хочу получить обратно вместе с secret ?
Данные опции должны отправляться в зашифрованном виде SHA1?
Что я должен получить в ответ?
Правильная логика?
Спасибо!
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
0) Установил Body Parser - чтобы преобразовывать запросы в properties в req.body:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
1) Форма оплаты на сайте содержит поле Label. Данное поле содержит уникальный ID покупателя.
2) Перешел по адресу в Yandex: https://sp-money.yandex.ru/myservices/online.xml
Здесь прописал путь, по которому Yandex будет присылать HTTP уведомления.
В моем случае - https://mysite.ru/receive
3) Создал путь c методом POST:
router.post('/receive', mainController.receive)
4) В контроллере прописал детали этого запроса:
exports.receive = async (req, res) => {
try {
const user = await User.findOneAndUpdate( { _id: req.body.label }, { $set: { payment: complete }} );
res.status(200).send();
} catch (e) {
console.log(e)
}
}
То есть когда Покупатель нажимает кнопку submit (в форме оплаты), Yandex на указанный во 2-м пункте адрес высылает "отбивку". В 4-м пункте я принимаю отбивку, а именно значение Label, находящееся в req.body. После этого обновляю данные клиента в базе данных (MongoDB).......
Можно делать много других запросов в Yandex API (история платежей и др.), но для этого нужно сначала получить от Yandex API "code", который сразу нужно поменять на "access_token" (действителен в течение 3-х лет).