我正在尝试解决类似这样的工作流程:(在PHP中)
当前设置:
shoppingcart.php - 收集用户送货信息/ etc
storeorder.php - 将订单存储在我的数据库中,然后使用相应的必需authorize.net POST字段组装表单
简而言之,用户最终必须查看不必要的中间页面,他们必须点击"付款"表单提交按钮,然后将它们发送到authorize.net。
组合这些步骤的最佳做法是什么? (接收POST,在我的数据库中存储信息,然后使用新的POST字段自动重定向到authorize.net而无需任何用户交互)
答案 0 :(得分:1)
请勿干扰用户的钱!
即使您不想存储信用卡详细信息,您的网站也可能遭到入侵,攻击者也会获得该信息。
是正确的方式。
世界上的每个网站都以这种方式运作。所以你必须这样做。不要把自己当成一个聪明的王牌。
答案 1 :(得分:0)
用户是否必须在authorize.net页面上执行任何类型的输入,或者您的表单是否提供了所有需要的信息?如果您生成所有信息,那么最简单的方法是通过对authorize.net的cUrl调用将数据直接推送到它们并检查返回状态代码/输出以查看它是否成功等。
如果用户仍需输入结算明细,请使用以下方法。
将帖子发布到/somepage.php
somepage.php运行它的处理,一旦处理完成就在底部运行添加标题(“Location:https://www.authorize.net/dopaymenthere”);
请确保您仍然回显此页面上的付款按钮,以防万一用户做了一些古怪的事情,他们强制重定向停止等等。这样看起来不像是破坏了代码,但对于很少有异常与他们的浏览器不同,你仍然可以优雅地处理它们
PS:这只能通过将post变量连接为get请求来实现,假设authorize.net将把get请求作为变量处理。
在不使用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>
答案 2 :(得分:0)
在shoppingcart.php
上,您可以为Checkout设置一个按钮。按下提交用户操作。 {POST}用户结帐按钮Do not save item prices/quantity in hidden fields.
可以保存数据库中的所有信息,并在PHP Post条件下创建HTML表单,为authorize.net设置值并将标题重定向到PAYMENT页面。