【发布时间】:2011-04-17 21:31:10
【问题描述】:
在 paypal 平台上测试支付交易时,我在将数据发布到特定 URL 时遇到了一些问题。尽管在技术上更容易理解,但我选择不使用他们的 API 和 NVP 平台,因为需要首先创建交易,然后返回并必须创建一个重复的配置文件(而不是一次全部 - 我认为愚蠢的设计) .
最终,我试图将已加密的数据放入特定变量中,并将该数据发布到选择的 URL,而不必将其视为用户单击提交的表单。
我的 HTML 表单有效 - 代码是:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_blank">';
<input type="hidden" name="cmd" value="_s-xclick"/>';
<input type="hidden" name="encrypted" value="'.$encrypted.'"/>';
<input type="submit" value="Go to checkout" name="submit" class="cartButton" />';
</form>
其中 $encrypted 是我的加密参数。虽然代码有效 - 我不想让用户单击要发送到表单的链接。相反,我希望用户单击一个按钮,该按钮首先运行 PHP 脚本以将数据存储在临时数据库中,然后将所需元素(CMD 和 ENCRYPTED)推送到帖子 URL(https://www.sandbox.paypal.com /cgi-bin/webscr)。
任何想法如何做到这一点?可能吗?我的网站使用 PHP 和 mySQL。 使用任何类型的 Javascript 都不是解决方案。
编辑 1
我已将其设置为使用 cURL 作为发布数据的一种可能方式,但发生了两件事:1)我没有得到任何响应,2)消费者实际上需要被重定向到带有在数据库插入发生后发布数据。
【问题讨论】:
-
使用 expresscheckout,您仍然可以从用户那里获取所有数据,创建交易,然后将用户重定向到 paypal 站点。您可以“走很长一段路”(即在 Paypal 中输入详细信息,返回站点,返回 Paypal)并不是流程的必要条件。 (虽然这是 paypal 官方要求的,但我见过的大多数 expresscheckout 实现并不真正关心那个 ping-pong 选项)。
-
我不认为 PayPal 喜欢人们这样做(客户喜欢付款页面是安全的,即使您确实通过 SSL 显示付款页面,它也不会显示为 PayPal 证书)。然而,无论如何,你需要 cURL 或做同样工作的东西。将您得到的回复呈现给用户应该是直截了当的。如果您根本没有收到任何响应,请尝试发布到另一个站点,如果失败,您很可能违反了防火墙规则(或位于 NAT 路由器后面)。
-
@Wrikken - 正如我上面所说,快速结帐流程对于定期/订阅付款来说是可怕的。此外 - 快速结账允许消费者使用 PayPal 余额付款 - 我们根本不感兴趣。
-
@berty - 我不确定你在说什么。我的“方式”是某人单击我已经在我端创建的加密按钮时使用的确切方法。正如我在编辑中所说,我已经在使用 cUrl。我已经可以将我的回复回复给消费者,所以这也不是问题。我很难相信您在发布几行不适用或已解决的 cmets 和问题之前阅读了该问题。
-
更不用说 - 根据所有 PayPal 指南,这是受支持和首选的方式。我没有预先收集任何付款信息 - 全部在 Paypal 端处理。
标签: php mysql encryption curl paypal