我的网站上有一个表单中的paypal按钮。表单有一个名为ID的附加输入,用户必须输入特定值。
销售完成后,Paypal会将用户返回至domain.com/credits?done
我如何收到用户在/ credits?done中输入的原始ID值?需要它自动修改他的数据库记录。
感谢。
答案 0 :(得分:1)
如果您引用的ID是您使用的唯一引用,请使用item_number
元素在Paypal和您的网站之间来回传递。
在您向客户显示的HTML表单中设置ID,并注意您还可以指定3个网址:
<input type="hidden" name="item_name" value="Box of stuff"></input>
<input type="hidden" name="item_number" value="12345"></input>
<input type="hidden" name="return" value="http://www.blah.com/paypal_thanks.asp"></input>
<input type="hidden" name="notify_url" value="http://www.blah.com/paypal_callback.asp"></input>
<input type="hidden" name="cancel_return" value="http://www.blah.com/paypal_cancel.asp"></input>
我上面使用了“paypal_callback.asp”,这会覆盖您登录Paypal并编辑设置时可以设置的IPN链接。所以这个值是可选的。
scrpt paypal_callback.asp(假设用ASP编写)可以说:
iAdvertId = Request.Form("item_number")
请注意,此页面不是向用户显示的页面!它在幕后被Paypals服务器击中。令人讨厌的是paypal_callback.asp不会立即被Paypal调用。可能是3天后......或者他们可能会在一个月后点击它来收回付款。
在我的示例中,客户将被重定向到paypal_thanks.asp或paypal_cancel.asp。这些页面不会通过表单或查询字符串传递,因此获取您在item_number
中放置的数字的唯一方法是在用户提交要购买的表单之前将其存储在cookie中。
当您收到来自Paypal的电子邮件时,item_number
将在主题行中提及,也会在邮件正文中提及(在“说明”行的末尾)。
还可以在自定义字段中设置其他信息。 Paypal documentation详细说明了如何执行此操作,您可以使用sandbox中的IPN模拟器对其进行测试。
答案 1 :(得分:1)
您可以创建一个简单的购物车系统,该系统将具有唯一的发票以区分每笔交易。将付款数据发送到PayPal时,将此发票作为参数传递。任何其他数据都可以存储在您的数据库中,无需将其发送到paypal,因为您可以使用发票确定每笔交易作为唯一标识符。
您还需要创建一个ipn
处理程序页面,以便在用户付款时从PayPal接收数据,以便您可以更新数据库中的付款状态。通过这种方式,用户无需在付款后点击返回您的站点链接,但您仍然可以更新相关数据。
为了简化集成,您可以考虑使用Micah Carrick's Paypal IPN Class。基本上它与paypal提供的代码相同,但它包含在一个类中,所以你可以在你的页面中使用它。
答案 2 :(得分:0)
请参阅PayPal的Instant Payment Notification文档以及PayPal集成中心网站上的IPN PHP code sample。