2012-07-24 85 views
11

所以我在我的网站中实现了paypal IPN,并且我处于 工作过程的中间。现在,我想在第形式 使用超过1个自定义变量我目前使用这一个只Paypal IPN处理多个自定义变量

<input type="hidden" name="custom" value="<?php echo $user_id; ?>"> 

所以我知道这个名字“自定义”的变量是允许的。我想知道如果 我可以传递更多变量,所以我可以根据他们的标准筛选付款。 因此,如果例如航运高于$ 0.00美元我设置一个变量“shipping_cost”是这样的:

<input type="hidden" name="shipping_cost" value="<?php echo $cost; ?>"> 

或用于其他目的。这是否允许?或者,paypal有一个我们可以使用的已允许的变量列表 ?我真的想解决这个问题,因为并不总是有一种类型的 我们可以处理... 谢谢你们。

回答

4

正如我(和许多其他我想象的)也面临这个问题,我想我会分享我遇到的一些解决方案。

This one在PayPal社区中引发,建议使用Option Variables,它似乎提供了一个键/值对实现来促进多达99个变量(对于我没有实际尝试过的记录)。

最普遍接受的解决方案(我也赞成)是将所有数据添加到数据库记录,然后使用自定义变量来存储您的记录ID,这显然可以在以后使用(例如通过IPN)检索您的数据。

3

PayPal定义了您可以使用的字段here。任何其他字段将被忽略。

定义了一个'shipping'字段,PayPal将使用该字段的值对运费收取额外费用。您也将能够从IPN或PDT数据中获得该值。

如果您需要传递其他值,则可以考虑在“自定义”字段中传递以查询字符串样式格式化的字符串(var1 = value1 & var2 = value2 ...)。请注意,此字段中允许的最大字符数为256.当您获得IPN或PDT响应时,您将解析此字符。

如果自定义字段的大小太过限制,那么您可以尝试我在另一个answer here中描述的内容。

+0

真令人失望。我必须使用其他允许的贝宝ip变量来实现我的意图。我使用了产品名称和说明。谢谢你的回答。 – inrob 2012-07-28 20:33:15

+1

你确定你不能只使用“custom2”吗?我正在浏览一些遗留代码,我看到一个带有“custom”和“custom2”的表单作为发送到PayPal的字段。 – CMCDragonkai 2015-03-16 12:36:26

8

这种方式,您可以通过更多参数

<input type="hidden" name="custom" value="variable1=234&var2=summa&etc=xyz"/> 

使用PayPal表格上面的一个。

并通过以下代码进行处理。

parse_str($_POST['custom'],$_MYVAR); 

echo $_MYVAR['variable1']; 
echo $_MYVAR['var2']; 
echo $_MYVAR['etc']; 

我希望这个帮助你。

+0

好方法谢谢。 – inrob 2015-08-22 14:15:26

+0

您也可以将自定义数据作为JSON发送(使用'json_encode($ data)''从PHP数据类型转换而来],然后使用'json_decode($ _ POST ['custom'])''检索它。 – 2015-10-08 18:55:00

+0

这是一个很好的解决方案。谢谢+1 – 2016-04-27 14:28:44