问题 Paypal IPN处理多个自定义变量


所以我在我的网站上实现了paypal IPN,而我正处于中间位置 工作过程。现在我想在pp表单中使用多个自定义变量 目前我只使用这个

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

所以我知道允许名为'custom'的变量。我想知道是否 我可以传递更多变量,因此我可以根据他们的标准过滤付款。 因此,如果运费超过0.00美元,我设置了一个变量“shipping_cost”,如下所示:

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

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


10666
2017-07-24 13:28


起源



答案:


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

这个 在PayPal社区中提出,建议使用选项变量,它似乎提供了一个键/值对实现,以方便多达99个变量(对于记录我实际上没有尝试过这个)。

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


4
2018-03-11 01:52





这样你就可以传递更多参数

<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'];

我希望这个能帮助你。


9
2017-08-22 06:18



很好的方法谢谢。 - inrob
您还可以将自定义数据作为JSON发送(使用PHP转换自PHP数据类型) json_encode($data))然后使用它检索它 json_decode($_POST['custom'])。 - Quinn Comendant
这是一个很好的解决方案。谢谢+1 - Pedro Sousa
@QuinnComendant - 如果你提出答案,并准确显示你所采取的内容,这将是很好的,作为这个答案的第二部分。 - Greeso


答案:


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

这个 在PayPal社区中提出,建议使用选项变量,它似乎提供了一个键/值对实现,以方便多达99个变量(对于记录我实际上没有尝试过这个)。

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


4
2018-03-11 01:52





这样你就可以传递更多参数

<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'];

我希望这个能帮助你。


9
2017-08-22 06:18



很好的方法谢谢。 - inrob
您还可以将自定义数据作为JSON发送(使用PHP转换自PHP数据类型) json_encode($data))然后使用它检索它 json_decode($_POST['custom'])。 - Quinn Comendant
这是一个很好的解决方案。谢谢+1 - Pedro Sousa
@QuinnComendant - 如果你提出答案,并准确显示你所采取的内容,这将是很好的,作为这个答案的第二部分。 - Greeso


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

定义了“送货”字段,PayPal将使用该字段的值来收取额外的运费。您还可以从IPN或PDT数据中获取该值。

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

如果自定义字段的大小太有限,那么您可以尝试我在另一个字段中描述的内容 回答这里


3
2017-07-27 17:10



真的很失望。我不得不玩其他允许的paypal ip变量来实现我的意图。我使用了产品名称和描述。感谢您的回答。 - inrob
你确定你不能只使用“custom2”吗?我正在浏览一些遗留代码,我看到一个带有“custom”和“custom2”的表单作为发送到Paypal的字段。 - CMCDragonkai