我正在写一个表格将数据发布到paypal,这很好用,我创建了带有隐藏字段的表单,然后有一个提交按钮,将所有内容提交给paypal。
但是,当用户单击该按钮时,我想要做的更多,例如在数据库中更改其购物车状态。所以,我希望能够在他们点击提交时执行一些代码,然后将数据发布到paypal。
我不想为此使用javascript。
我的方法目前是使用cURL,表单回发到当前页面,然后检查$ _POST数据,执行其他命令,如更新购物车的状态,然后创建curl命令,并发布表格数据到贝宝。现在,它成功发布,但浏览器不会发送到PayPal。
起初我只是在一个字符串中重新结果,然后回显它,我可以看到帖子成功了,然后我将CURLOPT_FOLLOWLOCATION设置为1,假设这会让浏览器关闭到paypal,但它没有,是什么它似乎做的是从paypal中抓取一些东西并将它放在我的页面上。
使用cURL是正确的吗?如果是这样,我该如何解决这个问题呢?我想远离javascript,因为只有启用了javascript的用户才能更新购物车。
我正在使用curl的代码如下,post_data是我创建的数组,然后将键值对读入post_string。
//Set cURL Options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_MAXREDIRS, 20);
//Set Data to be Posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//Execute Request
curl_exec($curl_connection);
答案 0 :(得分:2)
也许尝试将CURL与标题声明
结合起来<?php
header ("Location: https://www.paypal.com/");
如果浏览器需要将任何状态(会话)信息传递给paypal,这可能会有效。此会话信息收集在您的CURL调用中,但遗憾的是无法将其传递给浏览器。因此,如果您需要维持状态,那么这将无效。
Curl在服务器端运行。它不会影响您的浏览器。 CURLOPT_FOLLOWLOCATION只是指示CURL在例如paypal发送一个类似上面提到的标题时服从。指示浏览器执行某项操作的唯一方法是使用上面的HTTP标头或在HTML响应中使用某种元标记进行响应,例如:
<META HTTP-EQUIV="refresh" CONTENT="10;URL=https://www.paypal.com/">
作为替代方案,paypal不提供重定向功能,当事务完成后,重定向将重定向回您的服务器。如果是这样,那么只需在此回调期间更改卡状态并跳过整个卷曲过程?
答案 1 :(得分:1)
收到表格并做你需要做的事情之后,你应该提供另一个表格,只有一个按钮(隐藏字段中的所有其他数据)供用户点击,最后转到paypal。