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

时间:2012-06-28 18:54:09

标签: button paypal paypal-ipn paypal-subscriptions

我试图通过丛林(真的,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" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</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" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

这个自定义变量我以后可以在我的ipn页面上找到,所以我知道会员资格是谁..

我在想什么? 或者我应该用“手写”代码做按钮? 或者有更好的方法吗?

2 个答案:

答案 0 :(得分:16)

您可以在Paypal表单中使用一个字段来放置您想要的任何内容。 该字段的名称是“自定义”。所以你可以这样写:

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

我建议编码自定义值的值。例如,某种base64_encode可能有助于阻止好奇的人。 但是,在手册中也可以用Paypal做很好的解释。 这link和此 one是一段摘录。

此外,正如评论中所建议的那样,在您的网站和PayPal之间的退避通信中,无法使用与您的前端相关的会话变量。

答案 1 :(得分:2)

以上方式有效,虽然我在 PayPal Sandbox 上遇到了一些问题,但是不接受“常规PayPal” hosted_button_id - 这是通过重新创建hosted_button_id来解决的问题在沙盒中。

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