2010-02-08 71 views
0

我在我的网站上有一个表单上的贝宝按钮。表单有一个称为ID的附加输入,用户必须输入一个特定的值。贝宝+ PHP:如何获得成功销售价值

出售完成后,贝宝用户返回到domain.com/credits?done

我怎样才能收到由/用户输入的原始ID值学分?做了什么?需要它自动修改他的数据库记录。

谢谢。

回答

1

您可以创建一个简单的购物车系统,该系统将具有唯一的发票以区分每笔交易。将支付数据发送到PayPal时,请将此发票作为参数传递。任何其他数据都可以存储在您的数据库中,无需将其发送到PayPal,因为您可以将发票中的每个交易确定为唯一标识符。

您还需要创建一个ipn处理程序页面,以便在用户进行付款时从PayPal接收数据,以便您可以更新数据库中的付款状态。通过这种方式,用户在付款后不必点击返回到您的网站链接,但您仍然可以更新相关数据。

为了使集成更容易,您可以考虑使用Micah Carrick's Paypal IPN Class。基本上它与PayPal提供的代码是相同的代码,但它被包装到一个类中,所以你可以在你的页面中使用它。

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”上面,这将覆盖IPN链接,你可以在您登录PayPal并编辑您的设置时设置。所以这个值是可选的。

的SCRPT paypal_callback.asp(假设写在ASP)然后只是说:

iAdvertId = Request.Form("item_number") 

注意,该页面未显示给用户的一个!它在幕后被PayPal服务器击中。令人讨厌的是Paypal_callback.asp不会立刻被Paypal调用。这可能是3天后...或者他们可能会在一个月后收到付款。

在我的示例中,客户将被重定向到paypal_thanks.asp或paypal_cancel.asp。这些页面不会通过表单或查询字符串,因此只有在用户提交表单购买之前,才能获取您在item_number中放置的号码的唯一方法是将其存储在cookie中。

当您从Paypal收到电子邮件时,item_number将在主题行中以及邮件正文中(在说明行末尾)提及。

也可以在自定义字段中设置附加信息。 Paypal documentation详细说明了如何做到这一点,并且您可以在sandbox中用他们的IPN模拟器进行测试。

+0

以及如果我需要2个变量发送? – andufo 2010-02-12 18:02:19

+0

我测试了整个事情,但我有一个问题。一旦传输成功,它会将我重定向回domain.com/buy?merchant_return_link=blabla,而不是将按钮中设置的链接视为成功的返回点。 为什么? – andufo 2010-02-12 19:37:23

+0

我会编辑我的帖子,试着回答你的问题 – 2010-02-16 11:34:22