我对这个话题做了一些研究,有一些专家说这不是possible https://stackoverflow.com/questions/3045097/php-redirect-and-send-data-via-post,所以我想寻求替代解决方案。
我的情况:
页面 A:[checkout.php] 客户填写其账单详细信息。
页面 B:[process.php] 生成发票号码并将客户详细信息存储在数据库中。
C 页面:[thirdparty.com] 第三支付网关(仅接受发布数据)。
客户在页面 A 中填写详细信息并设置购物车,然后发布到页面 B。在 process.php 中,将发布的数据存储在数据库中并生成发票号码。之后,将客户数据和发票号码发布到thirdparty.com 支付网关。问题是在页面 B 中执行 POST。cURL 能够将数据 POST 到页面 C,但问题是该页面没有重定向到页面 C。客户需要在页面 C 上填写信用卡详细信息。
第三方支付网关确实为我们提供了 API 示例,该示例是 POST 发票号码和客户详细信息。
我们不希望系统生成过多不需要的发票号码。
有什么解决办法吗?
我们当前的解决方案是让客户在页面 A 中填写详细信息,然后在页面 B 中创建另一个页面,显示所有客户详细信息,用户可以在其中单击“确认”按钮发布到页面 C。
我们的目标是让客户只需点击一次。
希望我的问题很清楚:)
在页面 B 上生成一个表单,并将所有必需的数据和操作设置到页面 C,并在页面加载时使用 JavaScript 提交该表单。您的数据将被发送到页面 C,不会给用户带来太多麻烦。
这是唯一的方法。重定向是一个 303 HTTP 标头,您可以阅读它http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,但我会引用其中一些:
对请求的响应可以是
在不同的 URI 下找到并且应该
使用 GET 方法检索
该资源。这个方法存在
主要是为了允许输出
POST 激活的脚本来重定向
用户代理到选定的资源。这
新 URI 不是替代引用
对于最初请求的资源。
303 响应不得被缓存,
但对第二个的回应
(重定向)请求可能是
可缓存。
实现您正在做的事情的唯一方法是使用中间页面将用户发送到页面 C。以下是有关如何实现这一目标的小/简单片段:
<form id="myForm" action="Page_C.php" method="post">
<?php
foreach ($_POST as $a => $b) {
echo '<input type="hidden" name="'.htmlentities($a).'" value="'.htmlentities($b).'">';
}
?>
</form>
<script type="text/javascript">
document.getElementById('myForm').submit();
</script>
您还应该在 noscript 标记内有一个简单的“确认”表单,以确保没有 Javascript 的用户能够使用您的服务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)