【问题标题】:PayPal API Process贝宝 API 流程
【发布时间】:2016-01-10 07:59:50
【问题描述】:

我已经阅读并通读了有关 PayPal API 的链接和文档,但老实说,我对我需要做什么感到很困惑。

我正在尝试设置一个简单的 API,让我网站上的用户单击一个按钮,将他带到 PayPal 进行付款。在他付款后,我只想让 PayPal API 通过确认更新我的数据库中的记录。

到目前为止,该过程以一种方式完美运行。我正在使用此代码让用户付款:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="username@mywebsite.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="item_name" value="Gift Certificate">
<input type="hidden" name="item_number" value="RI001CI3481">
<input type="hidden" name="amount" value="313">
<input type="hidden" name="return" value="http://mywebsite.com/paypal/thankyou">
<input type="submit" value="PayPal">
</form>

用户完成交易后,返回到我的“退货”页面。

交易完成后我会收到一封电子邮件。这就是我现在付款的方式。然后我去 PayPal,确认付款,并更新我的数据库记录以标记交易完成。

现在,我需要做什么才能让 PayPal 在付款后自动更新我的数据库?如果您能给我指出一个简单易懂的文档或示例,那就太好了。正如我所说,我已经阅读了一些在线可用的文档,但对于像我这样的人来说,这有点令人困惑。

谢谢, 曼尼

【问题讨论】:

    标签: php api paypal


    【解决方案1】:

    虽然整体覆盖范围还没有达到 IPN 的相同水平,但 PayPal 现在也有 Webhooks:https://developer.paypal.com/docs/integration/direct/rest-webhooks-overview/ Webhook 是一种比 IPN 更现代的形式,并且在 REST SDK 中得到支持,希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      我认为 IPN 是一种解决方案,但它很容易出现问题,并且如果您的服务器或 PayPal 的服务器出现问题,它可能会失败。许多使用IPN的人只有一台服务器,并且在深夜进行维护,IPN可能会尝试通知但由于服务器停机维护而失败。 IPN 只会默默地失败。更好的选择是使用像 Express Checkout 这样的 API,您可以在其中使用 SetExpressCheckout 设置页面的外观、设置 txn 详细信息等,然后将客户带到 PayPal 页面进行结帐,然后将它们返回到您的地点。此时您运行 DoExpressCheckoutPayment 以完成交易,然后当您的响应包含“ACK=Success”时,您可以调用 GetExpressCheckoutDetails 以获取比使用 IPN 看到的更多详细信息,如果您没有收到来自 PayPal 的响应,则不必担心与 IPN 一样。您将获得与任何 API 调用一样的请求/响应,并且您可以记录您的响应以便能够查看何时出现问题以及获取交易的详细信息。通常,解释 EC 甚至 PayPal 文档的人似乎会调用 setEC,然后是 getEc,然后是 doEC,但我通常会调用 set、do,然后在 txn 成功后获取。我确信在某些情况下,有人需要/想要调用 set、get、do,但对于 IPN,我们只关心 txn 成功后。此外,除非有 txn,否则 IPN 不会发送。您可以设置您的代码以允许您收到错误并采取相应措施的情况,例如当您收到拒绝卡或类似的错误时。您可以记录错误、发送电子邮件/短信、记录到数据库表等。

      以下是集成 Express Checkout 的文档: https://developer.paypal.com/docs/classic/products/express-checkout/ 这里有大量链接,因为 EC 可用于订单/身份验证/捕获或简单的销售或订阅等。

      以下是 SetExpressCheckout 的参数列表: https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/

      以下是 DoExpressCheckoutPayment 的参数列表: https://developer.paypal.com/docs/classic/api/merchant/DoExpressCheckoutPayment_API_Operation_NVP/

      以下是 GetExpressCheckoutDetails 的参数列表: https://developer.paypal.com/docs/classic/api/merchant/GetExpressCheckoutDetails_API_Operation_NVP/

      【讨论】:

        【解决方案3】:

        您在此处显示的不是使用 API。 PayPal Standard 只是用于使用 PayPal 设置付款的基本 HTML 表单方法。听起来那部分已经按照您的需要为您工作,所以没关系。

        要更新数据库,您想使用Instant Payment Notification (IPN)。从技术上讲,它仍然不是一个 API,但它是一个推送服务,可以将任何交易的交易数据发布到您在服务器上设置的侦听器脚本中。

        在此脚本中,您可以根据需要处理数据。更新您的数据库、生成自定义电子邮件通知、点击第 3 方网络服务等。

        在 GitHub / Packagist 上有一些不错的 PHP 可用 IPN 模板。 PayPal还提供a very basic starter template for IPN

        【讨论】:

        • 谢谢!我没有提到(因为我是个白痴)是我在 Wordpress 应用程序中执行此操作。使用您提供的一些信息,我找到了一种通过 WP 插件创建 IPN 的方法。它现在完全按照我的意愿工作。谢谢!
        • 我希望我知道这一点。我本可以将您指向我的免费 PayPal IPN for WordPress 插件,并且可能会为您节省不少时间。您可能仍想查看它,具体取决于您对自己的插件开发的程度。它有很多钩子,可以让您快速轻松地根据 IPN 交易类型或支付状态触发自己的功能。
        猜你喜欢
        • 2016-08-03
        • 2016-03-31
        • 2012-10-27
        • 2013-04-03
        • 2014-10-03
        • 1970-01-01
        • 2018-04-25
        • 2012-05-06
        • 2013-10-04
        相关资源
        最近更新 更多