Как выполнить функцию после получения платежа (Sofort)?

#node.js #integration #payment-gateway

#node.js #интеграция #платежный шлюз

Вопрос:

Я пытаюсь интегрировать sofort в качестве способа оплаты в мое приложение node js, и пока все работает. Единственная проблема, которая у меня есть, заключается в том, что я не знаю, как выполнить функцию после получения платежа. Прямо сейчас я перенаправляюсь только на sofort, перевожу свои деньги, а затем перенаправляюсь на URL-адрес успеха, но я не знаю, как дать серверу знак, что платеж был получен. Я думал, что могу использовать URL-адрес уведомления как способ связи с сервером, но он не отправляет запрос GET или POST, и поэтому я действительно не знаю, что он на самом деле делает

Вот мой код на данный момент:

 router.get('/sofort', function(req, res, next) {
'use strict';
var util = require('util');
var Sofort = new (require('node-sofort'))({
    configKey : '181556:493374:5c3627c5d50e1f77ee0f5824abb46084'
});

try {
    Sofort.createPayment(101.00, 'EUR', ['Demo1'], {
        user_variables: ['variable1','variable2','variable3'],
        success_url: 'http://localhost:3000/',
        success_link_redirect: true,
        notification_urls: 'http://localhost:3000/testo'}, function (err, 
data) {
        console.log(data);
        console.log(data.payment_url);
        res.redirect(data.payment_url)
    });
} catch (e) {
    console.log(e);
}
)}
  

Если у вас есть что-то на уме, это может помочь, просто скажите это

Комментарии:

1. вам нужно точно использовать ваш success_url, success_url - String (255) Success link, overwrites the default value from the project settings. Is called when your customer successfully executed SOFORT Banking and the transfer has been listed in the customer's online banking. If the transaction ID of SOFORT Banking should be used as part of the URL, the parameter '-TRANSACTION-' can be inserted in the URL String. If no success link is defined in the project settings this parameter becomes mandatory { success_url: 'https://www.example.com/sofort/success' }

2. вам необходимо создать правильный URL-адрес на вашем узловом сервере, чтобы иметь возможность перенаправлять и получать данные.

Ответ №1:

измените success_url на

 success_url: 'http://localhost:3000/sofort/success/-TRANSACTION-'
  

а затем создайте маршрут (post или get, я не знаю)

 router.post('/sofort/success/:transaction', function(req, res) {
    var transactionId = req.body.transaction;

    console.log('transaction succesful for id '   transactionId);    

    res.end();
});
  

Комментарии:

1. спасибо, что сработало 🙂 хотя идентификатор транзакции не был определен :/

2. Я никогда не использовал эту библиотеку, просто работал на основе документов. Возможно, вам нужно проверить форматирование и / или размещение параметра ТРАНЗАКЦИИ. Документ довольно всеобъемлющий

3. просто проверьте на вкладке отладчик / сеть, отправляется ли какой-либо идентификатор транзакции. если да, вы можете узнать имя параметра, который вам нужно указать в вашем маршруте. может быть, как :TRANSACTION или :transactionId

4. Хорошо, я просто выудил идентификатор транзакции из строки URL