【问题标题】:How can a server know a payment was truly made via PayPal client side REST API?服务器如何知道付款是真正通过 PayPal 客户端 REST API 进行的?
【发布时间】:2018-02-12 00:29:26
【问题描述】:

我正在查看 PayPal 交互式集成演示 link。

在用户完成支付流程后的某个时刻,客户端到达代码:

 // onAuthorize() is called when the buyer approves the payment
            onAuthorize: function(data, actions) {

                // Make a call to the REST api to execute the payment
                return actions.payment.execute().then(function() {
                    window.alert('Payment Complete!');
                });
            }

在实际场景中,我可能希望向服务器发送发送产品或更新用户计划的指令,而不是警报。它可能会通过 HTTP POST 请求来完成。

服务器如何知道确实付款并且不是黑客手动发送 http post 请求的结果?

【问题讨论】:

    标签: paypal client-server payment-gateway payment client-side


    【解决方案1】:

    在actions.payment.execute() 之后,您可以调用您的服务器并让它进行GET 调用以验证付款是否已完成:https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-payments-api/show-payment-details/

    【讨论】:

      【解决方案2】:

      您的想法是正确的,服务器无法知道是否真的付款。此客户端 API 用于捐赠之类的事情,不需要向任何服务器请求。然后可以使用客户端回调向用户显示“谢谢”注释或类似内容。

      对于大多数情况(如在线商店等),您需要使用server API。这样,PayPal 服务器 将向您的服务器发送请求,因此您可以验证它确实是真正的付款确认。

      【讨论】:

        【解决方案3】:

        1) 在您的数据库中生成一个包含付款详细信息的唯一参考服务器端。例如:

        我的贝宝参考表

        |金额:$1.00 |参考:ECHI5786786 |

        2) 在执行付款之前,在您的交易对象中传递付款参考。

        "transactions": [
         {
          "amount": {
            "total": "1.99",
            "currency": "USD"
          },
          "soft_descriptor": "ECHI5786786" //this is your unique reference
        ]
        

        3) 在您的 PayPal 应用配置中,在开发者网站上,为您的服务器设置一个 webhook 以“付款销售已完成”。 PayPal 将使用包括唯一参考在内的交易详细信息调用您的网址。在您的数据库中记录详细信息。例如

        我的贝宝确认完成付款表

        |支付金额:$1.00 |参考:ECHI5786786 |

        4) 当 PayPal 客户端确认付款完成后,向您的服务器发送请求以确认付款详情

        // Make a call to the REST api to execute the payment
        return actions.payment.execute().then(function() {
          //ajax to your server here with "soft_descriptor"
          //if ajax success, then all good
        });
        

        服务器端确认

        确认参考在两个表中并且金额匹配

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-11
          • 2017-11-20
          • 1970-01-01
          • 2014-09-23
          • 2013-12-10
          • 2023-04-09
          • 1970-01-01
          • 2015-07-26
          相关资源
          最近更新 更多