PayPal 按钮通过 IPN 发送自定义变量

Posted

技术标签:

【中文标题】PayPal 按钮通过 IPN 发送自定义变量【英文标题】:PayPal button sending custom variable through IPN 【发布时间】:2012-06-30 08:31:04 【问题描述】:

我已经尝试了几天的丛林(真的,PayPal,你为什么不把它清除掉......)来找到解决我非常简单的问题的方法。

我有一个会员订阅网站。 客户在我的网站上使用他们的电子邮件和密码进行注册。 然后他们去 PayPal 支付订阅费用。

我的问题是如何在整个交易中传递密钥 - 他们的电子邮件 - 以便我知道付款的对象?

这是因为他们有时可能会使用一封电子邮件注册并使用另一封电子邮件付款。 以及如何使用(安全)加密按钮完成所有操作。

我想我可以在 PayPal“创建 PayPal 付款按钮”页面上制作加密按钮。

第3步中,添加(x-ed out real url)高级变量:

notify_url=http://xxxxxxxxxx.com/xxxxx.php
test_ipn=1

获取代码:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" >
<img  border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif"  >
</form>

并将给定的代码粘贴到我的 php 页面中,但添加一个名为“custom”的隐藏字段,并给它手头的电子邮件并更改表单操作以转到 沙箱。

有点像这样:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">

<input type="hidden" name="custom" value="<?=$signUpEmail ?>">

<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="N6UMVCMXSWMYG">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" >
<img  border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif"  >
</form>

这个自定义变量我可以稍后在我的 ipn 页面上获取,这样我就知道会员资格是谁了..

我想对了吗? 或者我应该用“手写”代码做按钮吗? 还是有更好的办法?

【问题讨论】:

【参考方案1】:

您可以在 Paypal 表单中使用一个字段来输入您想要的任何内容。 归档的名称是“custom”。所以你可以这样写:

<input name="custom" value="blablabla" type="hidden">

我建议对自定义值的值进行编码。例如,某种 base64_encode 可能有助于阻止好奇的人。 但是,手册中也很好地解释了您可以使用 Paypal 做什么。 这个link 和这个 one 是摘录。

此外,正如 cmets 中所建议的,在您的站点和 paypal 之间的回退通信中,不能使用与您的前端相关的会话变量。

【讨论】:

有没有办法添加第二个自定义字段? 您可以在单个字段中编码任何您想要的内容,然后在收到它时对其进行解码。例如,您可以在字段中编码 json 字符串或 url 编码参数【参考方案2】:

上述方法可行,尽管 PayPal 沙盒 不接受 "Regular PayPal" hosts_button_id 存在一些问题 - 通过重新创建 hosts_button_id 处理了一些问题在沙盒中。

<input type="hidden" name="hosted_button_id" value="RECREATENEWINPAYPALSANDBOX">

【讨论】:

以上是关于PayPal 按钮通过 IPN 发送自定义变量的主要内容,如果未能解决你的问题,请参考以下文章

如何传递 Paypal ipn 自定义和发票变量?

缺少 PAYPAL IPN 自定义字段

从 cURL 支付向 paypal IPN 添加自定义变量

如何在不使用“立即购买”按钮的情况下为自定义购物车集成 Paypal IPN

使用 Paypal IPN 在 notify_url 接收自定义帖子变量

PayPal IPN 变量问题