用重定向POST'ing到新页面的最佳做法?

用重定向POST'ing到新页面的最佳做法?

问题描述:

我试图解决一个工作流,看起来是这样的:(在PHP)用重定向POST'ing到新页面的最佳做法?

  1. 用户输入订单信息在我的购物车。
  2. 的顺序被捕获并存储到我的数据库(W/O的信用卡信息)
  3. 用户被重定向到authorize.net的SIM网页进行付款

当前设置:

购物车。 PHP - 收集用户的发货信息的/ etc

storeorder.php - 存储在我的数据库的顺序,然后组装与适当的要求authorize.net POST字段的表单

简而言之,用户最终不得不查看不必要的中间页面,他们必须单击“付款”表单提交按钮,然后将它们发送到authorize.net。

组合这些步骤的最佳做法是什么? (接收POST,将信息存储在我的数据库中,然后在没有任何用户交互的情况下使用新的POST字段自动重定向到authorize.net)

用户是否必须在authorize.net页面上执行任何类型的输入或你的表格是否提供了所有需要的信息?如果你生成了所有的信息,那么最简单的方法是通过一个呼叫authorize.net直接向他们推送数据并检查返回状态代码/输出以查看它是否成功/不等。

如果用户仍然需要输入帐单详细信息,请使用以下方法。

形式职位,以/somepage.php

somepage.php它运行在底部的处理,并一路一旦处理完成加标题(“位置:https://www.authorize.net/dopaymenthere”);

请确保你仍然在这个页面上回显付款按钮,以防万一用户在他们强迫重定向停止等地方做了一些不寻常的事情。这样看起来不像破碎的代码,但对于少数几个例外情况对他们的浏览器不起作用,你仍然可以正常处理它们

PS:这只会通过连接post变量作为get请求来工作,假设authorize.net将处理get请求作为变量。

真正简单的方法来做到这一点,而不使用获取请求是与JavaScript提交表单上的DOM准备...这种方式,你可以显示处理订单的消息给用户。并贴有隐藏的形式直接向authorize.net的情况下,你的处理时间比预期要等

在你有类似的processing.php页面上的jQuery方面:

echo $form; // HTML form with all it's values required by authorize.net 
echo "<h1>Processing your request</h1>"; 
<script type='text/javascript'>$(document).ready(function(){$('#hiddenformid').submit();});</script> 
+0

原始海报:是的,我们正在使用SIM卡方式,因此用户必须在authorize.net页面输入所有账单信息。 (信用卡#,到期日期,安全码)。我们不直接传递这些信息的原因是因为从技术上讲,它使您略微超出PCI合规性。 (上面的用户在技术上使用直接后置方法(DPM),而不是SIM)。 – NQQ 2012-02-09 05:20:50

+0

使用托管表单的关键在于不要让敏感信息通过服务器运行。如果您正在收集付款数据,然后将其发送到authorize.net,那么您最好使用AIM。 – 2012-02-09 05:21:42

+0

根据你的回答,解决你的问题最简单的方法是用户不会看到的即时重定向。我将编辑我的anser以使其更加清晰。 – 2012-02-09 05:25:04

shoppingcart.php您可以放置​​一个结账按钮。按提示用户操作已提交。 Do not save item prices/quantity in hidden fields.在用户结帐按钮的POSTing之后,您可以将所有信息保存在数据库中,并在PHP Post条件中创建一个HTML表单,以为authorize.net设置值并将您的页眉重定向到付款页面。

不要与用户的钱交互!
即使您不想存储信用卡详细信息,您的网站可能会被黑客攻击并且攻击者会得到它。

  1. 用户在我的购物车中输入订单信息。
  2. 该订单是通过authorize.net的SIM页面处理付款
  3. authorize.net联系您的网站与付款细节。

是最合适的方式。
世界上每个站点都以这种方式工作。所以你必须。不要把自己当成一个聪明的王牌。