【问题标题】:Validate whether payment was a success or failure验证付款是成功还是失败
【发布时间】:2017-10-29 00:17:12
【问题描述】:

我希望使用 PayPal 通过我的网站接受付款。我正在查看智能支付按钮选项。如果付款成功,我需要在我的网站数据库中更新一些内容。如何判断支付是否成功?我看不到任何 API 文档。

我还需要使用 PHP 会话 ID 保留用户上下文。如何将其传递到贝宝网站并确保返回成功/失败指示符?

【问题讨论】:

    标签: session button status


    【解决方案1】:

    使用Paypal IPN 接收付款通知。设置服务器端点以响应 IPN 请求并更新您的数据库等...

    要保持状态,您需要在智能支付按钮中包含一个隐藏的输入字段,名称为 custom 和您选择的值(会话 ID)。

    设置 IPN 端点,即:/checkout/ipn,以接收 Paypal 通知。使用 $_POST['custom']; 捕获会话 ID;

    【讨论】:

    • 感谢 Scriptonomy。 IPN 可能是一个有用的选择。我仍然不清楚如何在付款中发送一个客户 ID,然后从 IPN 获取相同的客户 ID。同样,我不确定发布到付款页面的隐藏输入字段将如何与付款结果一起返回。 (我认为 PayPal 文档的这一方面并不好)。我可能会放弃简单的 PayPal 按钮方法,转而使用 Braintree API。它使用客户端 javascript 返回一个付款 Nonce,一旦付款成功,我就可以使用我的服务器端代码从 PayPal 服务器验证它。
    • 在丢失用户会话方面,我可以看到其他用户也遇到了问题。因为 PayPal 按钮会将您带到一个全新的 URL,所以很容易丢失会话上下文。这就是为什么我认为客户端 js 和服务器端代码(通过 Braintree API)的组合是最好的。否则,您必须使用此解决方案中的 cookie stackoverflow.com/questions/31069675/…
    【解决方案2】:

    我最终为这个用例使用了 Braintree API。 Ther Brantree API 返回一个唯一的支付标识符(payment Nonce),然后您可以通过向 Braintree API 提交回调来验证该标识符,以确保实际收到正确的付款。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      相关资源
      最近更新 更多