通过Paypal IPN传递客户信息

时间:2015-04-01 04:04:41

标签: paypal-ipn

我有2个表格(年龄,兴趣)给客户。在客户填写2个表单并单击Paypal立即购买按钮后,我想通过Paypal IPN传递该信息并获取它们。这是我的代码

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
  <fieldset>
    Age
    <input type="text" name="custom" value="" />
    <br />
    Interest
    <input type="text" name="custom" value="" />
    <br />
    <input type="hidden" name="cmd" value="_xclick" />
    <input type="hidden" name="business" value="LLM3N8YXZNXJU" />
    <input type="hidden" name="item_name" value="abc" />
    <input type="hidden" name="item_number" value="P1" />
    <input type="hidden" name="notify_url" value="http://24151198.ngrok.com/paypal_ipn.php" />
    <input type="hidden" name="button_subtype" value="services" />
    <input type="hidden" name="rm" value="1" />
    <input type="hidden" name="bn" value="abcd-BuyNowBF:btn_paynowCC_LG.gif:NonHostedGuest" />
    <input style="position:relative; left:-10px; background:#ffffff; border:0;" type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" name="submit" alt="PayPal . The safer, easier way to pay online." />
    <img alt="" style="border:0;" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1" />
  </fieldset>
</form>

我使用日志记录IPN消息。如果我使用1&#34; custom&#34;表单,我可以获得自定义信息。但如果我使用2&#34; custom&#34;表格,我只获得最后的自定义信息。如何获取所有自定义表单信息?感谢

2 个答案:

答案 0 :(得分:0)

实际上,您在一个表单中有两个字段 。 :)

表单输入使用name来传递信息,因此当您包含第二个<input name="custom"...>时,您实际上是在告诉它“自定义=此值。没有等待,抱歉,Custom =那个值。忽略我先告诉你的。“

由于PayPal只接受一个custom变量,因此您需要:

  • 将两个字段合并为一个,然后发布到PayPal(这可能意味着首先在本地发布 - 例如,您可以将它们连接到以逗号分隔的字段中),或者
  • 将信息存储在数据库中,根据您传递给PayPal的密钥获取。这样做的另一个好处是,您不仅限于PayPal强加的256字符限制。

但是,你可能决定要将你的年龄段重命名为item_number - 这对我来说似乎有些狡猾,但它可能让你在你的情况下吱吱作响。

有关IPN的更多信息,请参阅PayPal's Development Docs

答案 1 :(得分:0)

您可以在提交实际执行之前更改表单字段,研究此概念证明。将两个或多个单独的字段连接到隐藏的自定义字段值。第二个示例修改可见的自定义字段。哪个更适合Paypal表格处理程序。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script>
function beforeSubmit1(sender) {
    sender.custom.value = sender.field1.value+"|"+sender.field2.value;
}
function beforeSubmit2(sender) {
    var c1 = document.getElementById("custom1");
    var c2 = document.getElementById("custom2");
    c1.value = c1.value+"|"+c2.value;
    c2.value = "";
}
</script>
</head>
<body>

<FORM id="frm1" action="http://server.com/doit.php" method="post" onsubmit="beforeSubmit1(this)">
    <input id="custom" name="custom" type="hidden" value=""/>
    <input id="field1" name="field1" type="text" value="Value 1"/>
    <input id="field2" name="field2" type="text" value="Value 2"/>  
    <input type="submit" name="submit" />
</FORM>

<FORM id="frm2" action=http://server.com/doit.php" method="post" onsubmit="beforeSubmit2(this)">
    <input id="custom1" name="custom" type="text" value="Value 1"/>
    <input id="custom2" name="custom" type="text" value="Value 2"/> 
    <input type="submit" name="submit" />
</FORM>

</body>
</html>