2011-09-15 32 views
0

因此,我正在我的网站上购物车。我使用PayPal作为支付系统,但在将客户转移到PayPal之前,我获得了他们的详细信息。要做到这一点,我从index.php发布到index.php,运行我的代码来检索发布的信息并将其存储在数据库中,现在希望将客户重定向到PayPal。PHP发布到URL,用户被重定向

不幸的是,你必须所有车POST数据到贝宝:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 

我解决此看到的唯一方法是张贴到index.php文件,收集用户数据,然后有一个按钮,显示说点击这里通过PayPal付款。这是我想避免的一个额外步骤。

任何方式发布到index.php,收集数据,然后将PayPal信息发布到PayPal网站?还是其他想法?

感谢

回答

2

你需要你的页面上2种形式,一种形式是回发的index.php和第二形式的帖子到PayPal的第一种形式回发到index.php文件后

,在body标签呼应JavaScript提交贝宝的形式加载时

<?php 
    if(isset($_POST['mydatafield'])){ 

     do database stuff 

     $LOAD = 'document.paypal.submit();'; 
    } 
    ?> 
    <body onload="<?php echo $LOAD ?>"> 
    <form name="paypal" action="paypal.com?yadayada"> 
    paypal fields 
    </form> 
    <form name="myform" action="index.php"> 
    your form stuff 
    submit button 
    </form> 
+0

这看起来好像会起作用。这是做这种事的正常方式吗?这有点奇怪,这必须做对吗? – mlevit

+0

呃确定还有其他方法,就是我在我的网站上做的方式。您需要将用户重定向到paypal才能付款,但您还需要将订单保存在系统中。提交表单提交身体负载就像自动按下一个贝宝提交按钮(你不希望用户必须这样做),用户将只需按他们按结账按钮后的PayPal。 – thegaffney

+2

EDIT *技术上在我的网站上,当你点击提交,它发布回到同一页面,而不是再次显示结帐字段(您可能会看到取决于paypal的帖子需要多长时间)我隐藏它们并显示“连接到贝宝“的闪屏,让用户知道在后台工作。 – thegaffney

0

您可能会触发使用JavaScript编程方式提交,如:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="paypal_form"> 
... 
<script type="text/javascript"> 
function submitPay(){ 
    document.getElementById("paypal_form").submit(); 
} 
</script> 
-1

你这样做不是需要re - 从其他答案中提到的意义上从客户端发布您的表单。您可以改为使用cURLPOST将数据发送到PayPal,并使其对用户看起来都是透明的。有点像转发发布的表单。您对数据采取行动(保存,操作或任何其他方式),然后在单个用户交易中将帖子转发到PayPal。

下面是一个简单的例子:http://davidwalsh.name/execute-http-post-php-curl

+1

不正确;因为客户端必须与POST数据一起重定向到PayPal。 一个GET查询字符串和header()是你唯一的选择(没有深入研究JavaScript黑客)。在客户不需要重定向到PayPal的另一种情况下,您建议可以正常工作。 – Robert

+0

您实际上仍然可以使用cURL方法并以这种方式发布数据。如果您在Paypal开发人员沙箱**中查看Paypal的开发人员示例,您将会看到使用cURL处理PayPal交互的方法很多。所以所有的数据都可以收集起来,然后发送到Paypal并处理。 – inquam

+0

我还能说什么呢? '不,这不正确'?自己尝试一下。它不会工作。 – Robert