【问题标题】:How do I capture user information when the PayPal button is clicked?单击 PayPal 按钮时如何捕获用户信息?
【发布时间】:2011-04-24 14:00:49
【问题描述】:

我有一个表单是用户输入信息,然后我有一个 PayPal 按钮,用户将在填写完字段后单击该按钮。我遇到的问题是如何在使用 paypal 时捕获用户信息如果表单有action="http://paypl.com/something/something",则单击按钮。

我是否必须将其设置为 2 页流程 - 一个用于捕获用户信息,另一个用于让用户单击 paypal 按钮?

顺便说一句 - PayPal 按钮将用户引导至 paypal.com 以进行实际付款。

【问题讨论】:

  • 听起来您正在尝试促成一个 paypal 标准 api 不适合的场景。您将无法可靠地捕获此信息,因为一旦客户在贝宝网站上就可以取消并且不会通知您。以下两种解决方案都会在您的数据库中留下可能不正确的信息。如果您需要完全集成,则需要查看 paypal pro flow api - 费用约为每月 30 美元。
  • @Doug:或者,他可以使用 IPN 脚本并避免月费。
  • 查看我的评论。它需要搜索,但 PayPal 正好适应了这些类型的场景。他们只是不记录它。哎呀,他们没有用简单的英语记录任何东西.....
  • @Josh - 我不知道 IPN 回调 - 所以是的,只要您不介意您的客户从您的网站导航到贝宝,您似乎可以绕过 30 美元的费用。感谢乔希提供的其他重要信息!
  • @bpeterson76 - 完全同意你对记录不善的 api 评论的看法!!

标签: php html forms button paypal


【解决方案1】:

伙计们,这里有一个更简单的解决方案。 Paypal 允许您将这些值传递给它,然后它会将它们吐回给您。实际上有两种取回数据的方法——一个返回 URL,在完成后发布返回值(我并不是很幸运地让它工作),然后是一个单独的函数,它在事务完成后向您发送一个单独的帖子您网站上的页面,您可以在其中收集您发布到网站的所有变量。我建议使用后者,因为在“立即购买”页面上,用户可能不会被返回到该网站,因为 PayPal 端的返回按钮 UI 非常薄弱。

要进行设置,您需要登录您的 PayPal 帐户,点击我的帐户 > 个人资料 > 网站付款偏好。启用“支付数据传输”就可以了。正确设置后,交易完成后,它将向您选择的页面发送您发送的所有内容的帖子....请记住,您可以发送变量,例如名称,地址等通过在表单中​​正确定义它们。所有可用的变量都可以找到here

当然,您可以通过 Jquery 等从表单中获取元素,然后单击保存到 DB,但为什么要反对呢?这需要做更多的工作,如果关闭 Javascript 可能会出现问题。

别忘了建立一个沙盒网站来测试!祝你好运。

【讨论】:

  • 我认为也有类似的东西,但老实说,我没有费心重新阅读 PayPal 文档。很好的答案。
【解决方案2】:

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

【讨论】:

  • 我考虑过 ajax,但我认为必须有更好的方法。我要试试 ClarkeyBoy 的解决方案。
  • 他的解决方案可能非常有效。如果 PayPal 需要 POST 或不需要 POST,我就忘记了
【解决方案3】:

我会将操作设为当前页面,捕捉按钮点击并存储用户信息,然后使用header: Location("http://paypl.com/something/something");。反正就是这样。希望这会有所帮助。

编辑:另请参阅 Josh 的另一个答案。它们是同样好的可能性。请注意,Ajax 选项需要打开 JavaScript - 因此必须采取保护措施,以防它被关闭。

【讨论】:

  • 我不敢相信我没有想到这一点。
  • 别担心 - 每个人都会不时错过明显的事情。通常需要多人才能找到最佳解决方案 - 因此 Facebook 等网站是由多人开发的!
【解决方案4】:

我的建议是将您的所有用户/订单数据添加到您自己的本地数据库中,以便您可以生成某种类型的订单 ID。然后,您可以将此订单 ID 传递到名为 invoice 的字段中的 PayPal 按钮代码中。

然后,该值将作为 $_POST['invoice'] 在 PDT/IPN 中返回,因此您可以轻松地将所有这些数据拉回并在您的应用程序中进行相应的处理。

另一种选择是使用 Express Checkout 而不是 Payments Standard。它涉及更多一点,但它的限制更少。

不过,即使使用 EC,我仍然建议在付款请求中发送某种订单 ID,以便您可以轻松地来回关联所有内容。

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 2018-01-21
    • 2013-06-27
    • 2017-04-11
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多