【问题标题】:redirect post request from post request从发布请求重定向发布请求
【发布时间】:2019-06-08 12:05:51
【问题描述】:

正在尝试将 post 表单请求发送到另一台服务器。

我收到来自本地主机的 post 请求,可以在 POST /deposit 上说

我想稍后用某种数据将用户重定向到支付网站

​发帖后我希望用户重定向到的表单:localhost:3000/deposit

<form action='http://testpayment.com/pay' class='redirect_form' method='post'>

<input type='hidden' name='key' value='${data.api_id}'>

<input type='hidden' name='signature' value='${data.api_secret_key}'>

<input type="hidden" name='user_id' value='${data.user_id}'>

<input type="hidden" name="payment_method" value="master_card">

<input type="hidden" name="customproduct" value='[{

"productId":"deposit-${currencyPayway.currency.code}",

"productName":"Test Product",

"productType":"fixedProduct",

"currency":"${currencyPayway.currency.code}",

"amount":${amount}}]'>

<button type='submit'>Pay</button>

</form>

发布路线:​

app.post('/deposit', function(req, res) {

// some logic applies here

//redirect part ???

});

任何想法如何做到这一点? 谢谢。

更新: 我要做的用例: 假设我们有多个支付提供商。在应用一些逻辑后以任何方式进行存款操作时,我们需要将用户重定向到支付提供商网站以输入卡/帐户详细信息,之后支付提供商将再次将用户重定向回我的网站。现在 front 每次都为所有存款方式编写自定义逻辑。但我试图将前端与那些东西分离,并在后端完全处理它并统一存款流程。

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    据我所知,在大多数情况下,paymant 网关的工作方式如下:

    这是一个例子 PayU - http://developers.payulatam.com/en/web_checkout/

    也许您可以附上支付提供商 api 的链接?

    【讨论】:

    • 在某些情况下同意你的观点。但存款箱只是一个例子。
    • 如果您需要表单中的数据,您可以使用 JS 脚本将该数据发送到您的服务器,然后通过 POST 进行更正。这只是一个想法。
    • 现在它的工作方式是这样的:服务器向前端发送一些数据,前端将用户重定向到某个网站。这种方法的缺点是前面必须为每个存款方法创建自定义实现。但是如果 back 可以自己处理,那么用户将只发出 post 请求,并且 back 会将用户重定向到支付网站,并且在所有交互之后,用户将通过处理支付网站的重定向重定向到我的网站。
    • 这就是我尝试将重定向部分移动到后端的原因。而且front不会为每种支付方式写一些自定义的实现。
    【解决方案2】:

    使用stream.pipe

    https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options

    app.post('/', (req, res,next) => {
      var request   = require('request');
      var pipe      = req.pipe(request.post('localhost:3000/deposit'));
      var response  = [];
    
      pipe.on('data',function(chunk) {
        response.push(chunk);
      });
    
      pipe.on('end',function() {
        var res2 = Buffer.concat(response);
        console.log(res2);
        res.send(res2)
      });
    })
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-25
      • 2017-12-03
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      相关资源
      最近更新 更多