我有一个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#中是否有用户将用户重定向到订单页面,并提交表单数据?
答案 0 :(得分:2)
您可以从第一个订单表单的提交处理程序重定向:
Response.Redirect("https://select-test.wp3.rbsworldpay.com/wcc/purchase?instId=151711&cartId=abc123¤cy=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中,您可以选择使用客户端脚本自动提交表单。