当用户点击PayPal按钮时,我该如何捕获用户信息?

4
我有一个表单,用户会在里面填写信息。然后我有一个PayPal按钮,用户填写完毕后会点击这个按钮。问题是:如果表单中设置了action="http://paypl.com/something/something",那么当用户点击Paypal按钮时,如何获取用户信息?
我需要把这个过程分成两步吗?第一步是获取用户信息,第二步是让用户点击PayPal按钮?
顺便说一下 - PayPal按钮会指向paypal.com以实际完成支付。

听起来你正在尝试促成一个 PayPal 标准 API 不适用的场景。一旦客户进入 PayPal 网站,他们可以随时取消,因此您将无法可靠地捕获此信息,也不会收到通知。以下两种解决方案都可能会在您的数据库中留下不正确的信息。如果您需要完全集成,您需要查看 PayPal Pro 流程 API - 成本约为每月 $30。 - Doug
2
@Doug:或者,他可以使用IPN脚本避免每月的费用。 - Josh
3
看我的评论。虽然需要搜索,但PayPal已经满足了这些情境。他们只是没有将其记录下来。实际上,他们很少用简单易懂的英语记录任何内容。 - bpeterson76
@Josh - 我之前不知道IPN回调 - 所以是的,只要你不介意你的客户离开你的网站到PayPal,似乎可以避免$30的费用。感谢Josh提供的额外重要信息! - Doug
2
@bpeterson76 - 完全同意你对于文档不完善的API的评论!! - Doug
显示剩余2条评论
4个回答

6
伙计们,这里有一个更简单的解决方案。Paypal允许您将这些值传递给它,然后它会把它们吐回给您。实际上有两种方法可以获取数据回来——一个是完成后发布返回值的返回URL(我没有太多运气使其工作),另一个是在交易完成时向您发送一个帖子到您网站上的一个单独页面的分离函数,您可以在那里收集您发布到网站的所有变量。我建议后者,因为在现在购买页面上,由于PayPal端的返回按钮UI非常弱,用户可能不会返回该网站。
要设置它,您需要登录您的PayPal帐户,点击我的帐户>个人资料>网站支付首选项。启用“付款数据传输”就可以了。一旦您正确设置了它,完成交易后,它会发送到您选择的页面上的帖子,其中包含您发送的所有内容……记住,您可以通过在表单中正确定义它们来发送变量,例如姓名、地址等。可用的所有变量都可以在此处找到。
当然,你可以通过Jquery之类的方式获取表单元素,然后进行点击保存到数据库,但为什么要费劲呢?这会更加麻烦,并且如果JavaScript关闭,可能会有问题。
别忘了建立一个沙盒网站来测试!祝好运。

我也觉得可能有这样的东西,但说实话我没有重新阅读PayPal文档。好答案。 - Josh

3

在这里,您有几个选择。您可以制作两个表单,一个表单提交到您的服务器,在那里捕获用户信息,然后显示第二个带有“立即支付”按钮的表单。作为第二个选项,您可以使用JavaScript从表单中提取信息,并使用AJAX将其提交到您的服务器,然后在AJAX请求完成时将表单提交给PayPal。这可能更加复杂,但不会改变现有的用户界面,这可能是可取的。


我考虑过使用ajax,但感觉一定有更好的方法。我将尝试ClarkeyBoy的解决方案。 - Catfish
他的解决方案很可能有效。我记不清楚PayPal是否需要POST。 - Josh

3
我会将操作页面作为当前页面,捕获按钮点击并存储用户信息,然后使用header: Location("http://paypl.com/something/something");。大概就是这样了。希望这有所帮助。
编辑:还可以参考Josh的另一个答案。它们同样是很好的选择。请注意,Ajax选项需要打开JavaScript - 因此必须加入防护措施以防关闭JavaScript。

1
我简直不敢相信我没想到这个。 - Catfish
别担心 - 每个人都会有时忽略一些显而易见的事情。通常需要多个人来找到最佳解决方案 - 这就是为什么像Facebook这样的网站是由多个人开发的原因! - ClarkeyBoy

1
我的建议是将所有用户/订单数据添加到您自己的本地数据库中,以便您可以生成某种订单ID。然后,您可以将此订单ID传递到PayPal按钮代码中的名为invoice的字段中。
这个值将作为$_POST['invoice']在PDT/IPN中返回,因此您可以轻松地将所有数据取回并在应用程序中进行处理。
另一个选择是使用Express Checkout而不是Payments Standard。虽然它需要更多的操作,但限制较少。
即使使用EC,我仍然建议发送某种订单ID以及付款请求,以便您可以轻松地将所有内容关联起来。

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