Paypal IPN如何处理多个自定义变量?

11

我已经在我的网站中实现了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已经定义了允许使用的变量列表吗?我真的想解决这个问题,因为并不总是能够处理一种类型的付款...

3个回答

11

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

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

我希望这个可以帮到你。


您还可以将自定义数据作为JSON发送(使用json_encode($data)从PHP数据类型转换),然后使用json_decode($ _POST ['custom'])检索它。 - Quinn Comendant
这是一个很棒的解决方案。谢谢 +1 - Pedro Sousa
@QuinnComendant - 如果您能修改答案并展示您建议的确切内容,那将非常好,作为此答案的第二部分。 - Greeso

4

由于我(和许多其他人)也面临这个问题,所以我想分享一些我找到的解决方案。

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

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


3

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

有一个名为“shipping”的字段,PayPal将使用该字段的值来收取额外的运费。您还可以从IPN或PDT数据中获取该值。

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

如果自定义字段的大小限制太小,则可以尝试我在另一个 答案中 描述的方法。


真是令人失望。我不得不尝试使用PayPal IP的其他允许变量来实现我的意图。我使用了产品名称和描述。不过还是谢谢你的回答。 - inrob
1
你确定不能只使用“custom2”吗?我正在查看一些遗留代码,发现一个表单中有“custom”和“custom2”作为发送到Paypal的字段。 - CMCDragonkai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接