【发布时间】:2012-07-15 12:32:14
【问题描述】:
我正在使用第三方提供商进行信用卡付款,他们需要通过表单发布数据,但是我传递的数据来自数据库,而不是来自填写表单的用户。
目前,我通过一个使用 JavaScript 自动提交的页面来解决这个问题,但是,虽然这可行,但它看起来不是很专业。有没有办法让 PHP 发布到页面然后加载到浏览器中?
<body onload="document.form1.submit()">
<form method="post" action="https://payment.provider.com/Servlet" id="form1" name="form1" target="_top">
<input type="hidden" name="TRANSACTION_ID" value="<?php echo $transid; ?>" />
<input type="hidden" name="AMOUNT" value="<?php echo $amount; ?>" />
<input type="hidden" name="TERMINAL_ID" value="T04_000000000005" />
<input type="submit" value="Click if not redirected" name="submitButton" />
</form>
</body>
我知道 cURL 当然可以发布数据,但它需要响应。提交表单时,数据会发布到页面,但该页面随后会加载到浏览器中。发布数据后,需要将用户带到第三方提供商页面(该页面使用发布的值,所以我不能简单地进行重定向)。
【问题讨论】:
-
为什么不能直接发帖?只需在表单中包含那些隐藏字段...
-
按照我理解您想要的方式,我会看到一个页面假装来自支付处理器,但实际上来自您的网站。那肯定会吓到我……
-
如果您环顾通过第三方进行支付处理的其他网站(即除了真正的大型网站之外的几乎所有网站),您会发现它们都以这种方式工作——因为支付卡公司需要它。如果您在自己的网站上使用卡付款,请确保以符合 PCI 的方式进行;如果您试图绕过它,当信用卡公司发现时,您会发现自己丢失了您的商家帐户。
-
我不想“绕过”任何事情,我也不想要一个“假装来自支付处理器”的页面(不知道你为什么会这么想!)。我想要做的就是避免使用 javascript 自动提交的中间页面。经过更多研究,似乎不可能。
-
@Spudley - 我使用了很多不同的支付服务提供商,实际上大多数都允许通过 curl 或类似方式发布,然后是重定向。在这种情况下我必须使用的那个希望它以这种方式完成。
标签: php post curl payment-gateway