2009-12-03 113 views
21

我想将自定义变量传递给PayPal IPN。我可以设法通过一个变量。但我不知道如何传递多个变量。将自定义变量传递给PayPal IPN

我的过程是这样

  1. 用户填写
  2. 他们点击按钮的形式和它去给PayPal
  3. 他们支付,IPN送我回的信息和ipn.php添加传递给数据库的变量。

我的自定义变量是

  1. 共线(只要他们写,我算线)
  2. 消息(他们的消息,他们写了)
  3. 宣传ID

但现在,我只能通过这样一个变量

form.php的

<input name="custom" type="hidden" id="custom" value="{$line_count}"> 

$_SESSION['line_count'] = $_POST['lines_txt']; 

ipn.php

$sql="INSERT INTO `form`(`totalline`) VALUES ('" .$_POST['custom']. "');"; 
+10

这ipn.php脚本,你必须看起来像一个巨大的SQL注入安全漏洞给我。请不要提交该代码。 – 2012-03-30 09:06:16

回答

19

我不知道,如果它甚至有可能与PayPal发送和接收多个变量。如果由于Paypal的限制而无法实现,则可以使用以下方法之一:

  • 发送数据序列化,并在返回时反序列化。
  • 将数据写入form.php(状态为未付费)的数据库并发送ID。在ipn.php中捕获id并设置status = paid/error /数据库中发生的任何事情。
+0

感谢您的回复。目前我正在检查和自定义变量只能容纳200个字符,我的变量超过了这个值,所以我无法通过。我只能做一件事,就像你说的,首先,当他们提交表单时,我将所有需要存储在数据库中的东西存储起来,然后获得IPN结果,如果成功,更新状态,如果失败,删除条目。但另一个问题是,如果他们关闭了浏览器并且从未付款,我该如何删除该条目?我需要运行cron并删除吗? :(这是很多的过程和工作 – spotlightsnap 2009-12-03 09:10:54

+0

@spotligthsnap:如果用户在贝宝网站上关闭浏览器,那么数据库条目仍然存在,是正确的。你可以通过cronjob删除它们,但你也可以把它们留在数据库中稍后再进行分析(支付/重定向到paypal)。同样的精神,你可以在从PayPal返回后写错误,而不是仅仅删除条目 – Residuum 2009-12-03 09:49:39

+0

谢谢,这很好,另外,存储一些值到db然后发送到paypal一个更好的主意 – noobcode 2010-09-23 09:54:29

0

一个模糊的记忆告诉我,有用于发送数据到PayPal两个选项。命令x_click和我认为有像上传参数。当上传参数设置为1时,您可以发送多行到贝宝。

更新PayPal information about this

2

如果只是通过一个与PayPal不相关的变量,但当它返回时与您更相关,您可以使用值['custom']提交给paypal,paypal只会通过它一旦事情完成,他们就会回到你身边。