代码之家  ›  专栏  ›  技术社区  ›  amit

服务器如何知道付款是通过PayPal客户端REST API进行的?

  •  3
  • amit  · 技术社区  · 7 年前

    我在看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请求的结果?

    3 回复  |  直到 7 年前
        1
  •  3
  •   bluepnume    7 年前

    之后 actions.payment.execute() 你可以打电话给你的服务器,让它做一个 GET 致电确认付款已完成: https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-payments-api/show-payment-details/

        2
  •  1
  •   user3151902    7 年前

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

    在大多数情况下(如网上商店等),您会希望使用 server API . 那样的话 PayPal服务器 将向您的服务器发送请求,以便您可以验证它是否确实是真正的付款确认。

        3
  •  1
  •   Kareem    6 年前

    我的paypal参考表

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

    2) 在执行付款之前,在交易对象中传递付款引用。

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

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

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

    // 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
    });
    

    服务器端确认