paypal按钮返回设施不工作

时间:2017-02-12 21:34:00

标签: php html paypal

我试图在paypal paynow按钮中发送直通数据,并在用户点击付费后点击“返回商家”按钮时,将该数据返回到我的php页面。

为此,我使用paypal按钮中的“return”工具,连同rm = 2将所有数据作为帖子发回。但是,我无法让它发挥作用。这是我的paypal按钮html:

<form name="paypal2" action="https://www.paypal.com/cgi-bin/webscr"     method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="xxx">
<input type="hidden" name="invoice" value="testinvoice_fromcode2">
<input type="hidden" name="custom" value="testcustom_fromcode1">
<input type="hidden" name="on0" value="yes"><!--agreetc-->
<input type="hidden" name="os0" value="<?php echo $aid; ?>">
<input type="hidden" name="on1" value="<?php echo $id; ?>">
<input type="hidden" name="os1" value="<?php echo $agent; ?>">
<input type="hidden" name="return" value=http://www.example.com/Admin/conpanel/privat/phpvendorpaidad.php>
<input type="hidden" name="rm" value="2">
<input id="submit" type="image" src="https://www.paypalobjects.com/en_GB/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>

在IPN通知中,paypal渲染: os0 as option_selection1, os1 as option_selection2, on0 as option_name1, on1 as option_name2,

我知道on0和os0应该被用作名称值对但是回到2009年,当我第一次编写这个脚本时,只允许有2组,因此我使用了所有4来携带值,然后就可以了。 / p>

但基本上,我无法理解为什么

<input type="hidden" name="return" value=http://www.example.com/Admin/conpanel/privat/phpvendorpaidad.php>
<input type="hidden" name="rm" value="2">

无效。

我无法在接收脚本phpvendorpaidad.php中获取这些值,无论是

$aid=$_REQUEST['option_selection1'];

$aid=$_REQUEST['os0'];
例如,

谁能看到我做错了什么?非常感谢。

我还有一个正常工作的IPN侦听器页面。可能另一种方法是使用javascript在页面onload上自动发送表单数据来构建到IPN侦听器页面吗?

2 个答案:

答案 0 :(得分:2)

paypal实际上是POST到您的返回脚本还是使用GET?在后一种情况下,您可以在查询字符串中看到txn_id和其他一些信息,但是您不会获得整个付款明细数据。

如果您将自动返回设置为开(意味着用户自动重定向回您的网站,而无需单击按钮),那么PayPal发送GET请求并且仅包含几个项目。

脚本中的

var_dump($ _ REQUEST)和var_dump($ _ POST)可以看到你得到了什么。

答案 1 :(得分:0)

实际上问题在于我的返回代码中有缺陷的if / else逻辑,该代码是在2009年设置的,用于处理PayPal当时发送到返回脚本的GET变量。这个逻辑必须区分从我服务器上的前一个表单收到的POSTed数据和从Paypal收到的GET数据。 Paypal似乎自2009年以来已经变形,不再将GET数据发送到返回脚本,而是通过

发送POST数据
 <input type="hidden" name="return" value=http://www.example.com/Admin/conpanel/privat/phpvendorpaidad.php>
 <input type="hidden" name="rm" value="2">

一旦纠正,该计划就有效。

然而,由于JBart对var_dump($ _ REQUEST)的精彩建议(或更容易阅读的print_r($ _ REQUEST)),我才能发现问题。没有这个,我仍然会挣扎。所以,如果你在附近(伦敦西北部),JBart欢呼,你会喜欢给你买一杯饮料!

不,我不需要从收到的POSTed数组中提取任何变量(参见我上面的上一条评论),只需正常'$ payment_status = $ _POST ['payment_status'];'。在这篇文章中,我误解了“How can I get posted data passed along when the user is first redirected through Paypal?

中有关该主题的另一个主题