ASP.net c#代表用户发布表单

时间:2010-10-06 08:23:34

标签: c# asp.net forms redirect response.redirect

我有一个ASP按钮,当它被点击时,它会调用一个函数,它将订单信息添加到我的数据库中。订单处理的下一步是使用以下格式将用户转移到支付网关:

<form action="https://select-test.wp3.rbsworldpay.com/wcc/purchase" name="BuyForm" method="POST">
<input type="hidden" name="instId"  value="151711">
<input type="hidden" name="cartId" value="abc123">
<input type="hidden" name="currency" value="GBP">
<input type="hidden" name="amount"  value="1221">
<input type="hidden" name="desc" value="">
<input type="hidden" name="testMode" value="100">
<input type="submit" value="To Payment!">
</form>

但我真的很想让用户:

  

按下订单按钮 - &gt;订单功能   叫 - &gt;用户自动传递给   订购页面

应该:

  

按下订单按钮 - &gt;订单功能   叫 - &gt;用户转到另一页 - &gt;   用户手动单击按钮转到   worldpay付款页面

c#中是否有用户将用户重定向到订单页面,并提交表单数据?

3 个答案:

答案 0 :(得分:2)

您可以从第一个订单表单的提交处理程序重定向:

Response.Redirect("https://select-test.wp3.rbsworldpay.com/wcc/purchase?instId=151711&cartId=abc123&currency=GBP&amount=1221&desc=&testMode=100");

请注意,无论您是通过GET还是POST提交,您的表单参数当前都会被篡改。我确信WorldPay有一些安全措施可以用来防止和/或检测篡改。你应该使用它们!

修改...

WorldPay允许您submit a hash along with your payment parameters帮助防止篡改。这应该可以阻止任何业余的querystring篡改;能否阻止坚定的攻击者是另一回事。

正如您在评论中提到的那样,您应该在提交之前将参数记录在最后,然后根据回调数据对它们进行交叉引用,以确保没有触及任何内容。

答案 1 :(得分:1)

您可以在事件处理程序的末尾使用Response.Redirect("OtherPage.aspx");。使用此方法,您可以将项目附加到查询字符串(例如订单ID)... Response.Redirect("OtherPage.aspx?OrderID=abcdef");

或者,您可以在订单页面中进行处理并将其列为PostbackUrl,因此第一页会直接发回订单页面。

答案 2 :(得分:0)

多种方式:

1)将订单置于会话状态并随用户一起携带,在重定向到最终页面时自动检索。

2)创建一个表单,以新页面作为目标提交其数据(而不是作为ASP.Net中的默认行为回发给自己)。

3)生成一个包含隐藏字段的表单并将其输出到页面。

在情境#2和#3中,您可以选择使用客户端脚本自动提交表单。