alexbuki
@alexbuki
программист js

Как правильно настроить сервер на node js для получения уведомлений о входящих платежах Яндекс Деньги (yandex money)?

Коллеги, добрый день!
Перечитал документацию Яндекс Деньги и просмотрел все посты по этой теме, но не могу до конца разобраться.
Делаю скелет для небольшого интернет-магазина в телеграмм с возможностью оплаты картой через Яндекс Деньги.
Пока все делаю в ручную прямо из редактора кода, чтобы проверить работоспособность.

Настроил кошелек для отправки уведомлений при получений платежа:
5c0b6e3b19197690852859.jpeg

Создал https сервер:
const express = require('express');
const app = express();
const https = require('https');
const fs = require('fs');
const port = 3000;
const options = {
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./cert.pem')
};

const Server = ()=>{
    app.post('/receive',(req, res)=>{
        console.log('you have got some incoming payment');
    res.status(200).send();
    });

    app.get('/',(req, res)=>{
        console.log('get request');
    res.status(200).send();
    });

    https.createServer(options, app)
        .listen(port, function () {
            console.log('Example app listening on port 3000!')
        });


Делаю тест на той же страничке Яндекс Деньги:
5c0b71dd8252f655441706.jpeg

Все хорошо и сервер ловит запрос:
5c0b7550f126c662830795.jpeg

В итоге создаю единоразово экземпляр приложения:
yandexMoney.ExternalPayment.getInstanceId(clientId,
    function getInstanceComplete(err, data) {
        if(err) {
            // process error
        }
        var instanceId = data.instance_id;
        // save it to DB
        console.log('data.instance_id: ', data.instance_id)

    });


После сохранения экземпляра приложения делаю пробную оплату по карте:
var externalPayment = new yandexMoney.ExternalPayment(config.instanceId)

var options = {
     pattern_id: 'p2p',
    instance_id: config.instanceId,
    to: '4100145656XXXXX',
    amount: 5,
    message: 'testpayment',
    merchantArticleId: 123

};

externalPayment.request(options, function requestComplete(err, data) {
    if(err) {
        // process error
    }
    var requestId = data.request_id;
    console.log('data', data);
    externalPayment.process({"request_id": requestId,
        ext_auth_success_uri: 'https://t.me/kursy_naXXXXXX,
        ext_auth_fail_uri: 'https://t.me/kursy_naXXXXXX'

    }, function (err, data) {
        if(err) {
            // process error
        }
        // process data
        console.log('dataProcess', data)
    });
});


Получаю ссылку и параметры для оплаты:
5c0b74a930fa1438771423.jpeg

Произвожу оплату, но уведомление не приходит

Возможно дело в секретном слове или еще что-то.
Я перечитал документацию и все посты на тостере, но не могу разобраться как же все таки правильно настроить сервер.
Подскажите как действовать или где можно посмотреть информацию.
Заранее спасибо.
  • Вопрос задан
  • 410 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы