将POST请求从NODE服务器发送到支付网关

时间:2015-07-21 20:08:52

标签: angularjs node.js express

在我目前使用MEAN堆栈的情况下,对于选择在线支付的客户,我创建了一个这样的超链接。

<div>
    <a class="btn btn-pram-primary btn-block" href="node/public/orders">Online Payment</a>
</div>

我在节点中拦截此代码中的url。

var sendRequestToPayU = function( req, res, next ) {
    console.log('In sendRequestToPayU' );

    var post_data = querystring.stringify({
        'txnid': '1',
        'amount': '100',
        'productinfo' : 'ABCD',
        'firstname' : 'UserName',
        'email' : 'user@user.com',
        'phone' : '9876543210'
    });

    request({
        url: 'https://test.payu.in/_payment', //URL to hit
        method: 'POST',
        headers: {
            'Content-Type': 'MyContentType',
            'Content-Length': post_data.length
        },
        body: post_data //Set the body as a string
    }, function(error, response, body){
        if(error) {
            console.log(error);
        } else {
            console.log(response.statusCode, body);
            res.html(body).send();
        }
    });

};

为了正确付款,控制权应该转移到支付网关站点,但在上面编码的过程中,我不确定如何将控制重定向到支付网关?

是否应该在浏览器上处理,而不是通过创建表单和表单操作应该是支付网关的URL?

如果我遵守这条规则?我的盐和商家ID不应该被客户看到吗?

请建议我适当的方式来追求这个。

1 个答案:

答案 0 :(得分:1)

在将payu与我的网站集成时,我遇到了同样的问题。虽然我在后端使用php,但这个问题的解决方案是通用的。

您需要做的是处理两种形式:

表格A:让用户用金额填写此表格,将此表格的行动设定为表格B.

FORM B(隐藏):此表单将隐藏在您的服务器中,并将此表单的操作设置为http://test.payu.in/_payment并自动提交此表单。此表单将包含所有敏感信息,如商家密钥和盐。

一旦参数在FORM B中发布,它就会自动提交并在行动的帮助下重定向到payu网站以及参数。

您的商家密钥和盐也以这种方式保护在服务器上。