0

我有一个 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>

但是我真的很想让用户:

按下订单按钮 -> 调用订单函数 -> 用户自动传递到订单页面

正如应该:

按下订单按钮 -> 调用订单函数 -> 用户转到另一个页面 -> 用户手动单击按钮转到 worldpay 支付页面

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

4

3 回答 3

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 允许您提交哈希值以及您的支付参数,以帮助防止篡改。这应该可以阻止任何业余查询字符串的篡改;它是否可以阻止一个坚定的攻击者是另一回事。

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

于 2010-10-06T08:28:25.433 回答
1

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

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

于 2010-10-06T08:26:52.953 回答
0

多种方式:

1)将订单置于Session状态并随身携带,当他们重定向到最终页面时自动检索它。

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

3)生成带有隐藏字段的表单并将其输出到页面。

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

于 2010-10-06T08:27:55.047 回答