• Как получить HTTP уведомление о входящих платежах Яндекс Деньги, используя Javascript и Nodejs + Expressjs?

    @vmouravi Автор вопроса
    На самом деле все просто получилось. Перечитал документацию и дело пошло:

    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-х лет).
  • Как принимать платежи на сайте без ИП?

    @vmouravi
    Максим Максим Федоров , добрый день.
    Нахожусь в процессе внедрения HTTP-уведомлений в свое приложение на Express.js (на localhost).
    Совсем запутался.....

    1) Есть страница "Оплата" - на ней готовая форма для оплаты Картой.
    При submite формы происходит POST request на "https://money.yandex.ru/quickpay/confirm.xml"
    В форме указан successURL value="localhost:3000/success"

    2) Дальше я сделал Route - чтобы при успешном завершении платежа перенаправить пользователя на
    localhost:3000/success.

    Правильно я понимаю, что когда транзакция проходит:
    1) Пользователь Автоматически переправляется на localhost:3000/success
    2) в этом Route я должен сформировать запрос POST - чтобы получить в ответ уведомление от Яндекса?
    параметры запросы должны содержать "опции" того, что я хочу получить обратно вместе с secret ?
    Данные опции должны отправляться в зашифрованном виде SHA1?
    Что я должен получить в ответ?

    Правильная логика?
    Спасибо!