0

按照https://www.paypal.com/buttons中的代码,我点击“智能按钮”链接,生成并复制代码,因此我将以下内容添加到我们的付款页面(使用我们的实际 clientID 而不是 XXXXXX. ...):

<div id="smart-button-container">
  <div style="text-align: center;">
    <div id="paypal-button-container"></div>
  </div>
</div>
<script src="https://www.paypal.com/sdk/js?client-id=XXXXXXXXXXXXXXXXX&currency=USD" data-sdk-integration-source="button-factory"></script>
<script>
  function initPayPalButton() {
    paypal.Buttons({
      style: {
        shape: 'rect',
        color: 'gold',
        layout: 'vertical',
        label: 'paypal',
    },

    createOrder: function(data, actions) {
      return actions.order.create({
        purchase_units: [{"description":"Subscription to our service","amount":{"currency_code":"USD","value":10}}]
      });
    },

    onApprove: function(data, actions) {
      return actions.order.capture().then(function(details) {
        alert('Transaction completed by ' + details.payer.name.given_name + '!');
      });
    },

    onError: function(err) {
      console.log(err);
    }
    }).render('#paypal-button-container');
  }
initPayPalButton();
</script>

问题:我如何实际记录(在服务器端)付款已完成?我似乎遗漏了一些难题——根据上述代码,我看到的唯一选择是从代码中调用服务器端脚本onApprove;但我不明白如何安全地做到这一点:用户可以简单地不进行任何付款并调用相同的脚本并传递相同的参数。

我在相关问题上看到 webhook 似乎是答案;但是,我在这里找到的都是服务器端,这对我来说没有任何意义(我希望作为 JavaScript 的一部分,我会在我的服务器上向 Paypal 提供我希望他们在付款完成时调用的 URL )。任何提示或指针将不胜感激。

4

1 回答 1

1

我如何实际记录(在服务器端)付款已完成?

使用服务器端集成。

创建两条路线,一条用于“创建订单”,一条用于“捕获订单”,如下所述:https ://developer.paypal.com/docs/business/checkout/server-side-api-calls/#server-边 API 调用

与您的两条路线配对的前端批准代码是https://developer.paypal.com/demo/checkout/#/pattern/server

于 2021-01-11T12:19:54.403 回答