错误:使用intent=capture来使用客户端捕获[Paypal Javascript SDK]

错误:使用intent=capture来使用客户端捕获[Paypal Javascript SDK],javascript,html,ajax,paypal,paypal-sandbox,Javascript,Html,Ajax,Paypal,Paypal Sandbox,我正在使用PayPal javascript SDK为我的网页创建PayPal订阅按钮,问题在于使用沙箱帐户测试按钮时,在执行订阅的所有付款后,出现以下错误: Error: Use intent=capture to use client-side capture ... 这是我用来显示PayPal按钮的HTML脚本 <script src="https://www.paypal.com/sdk/js?client-id=MY_CLIENT_ID&vault=true

我正在使用PayPal javascript SDK为我的网页创建PayPal订阅按钮,问题在于使用沙箱帐户测试按钮时,在执行订阅的所有付款后,出现以下错误:

Error: Use intent=capture to use client-side capture ...
这是我用来显示PayPal按钮的HTML脚本

 <script src="https://www.paypal.com/sdk/js?client-id=MY_CLIENT_ID&vault=true&intent=subscription&components=buttons"></script>
 <div id="paypal-button-container"></div>
alterSlot()函数使用AJAX对我的特定端点进行API调用,必要时只需提供额外信息

编辑:

sendmailtoken()
函数向托管在我的服务器上的API发出AJAX请求,以便服务器执行正确的操作并保持安全(只是了解该部分发生了什么的元数据)

actions.order.capture()
用于客户端的一次性付款按钮。它不属于订阅按钮,因为没有要捕获的订单

例如,请参阅PayPal订阅文档,该文档在其
on Approve
示例中仅包含一个基本的成功警报:



由于您的目的似乎是执行服务器端操作,例如在订阅批准后发送电子邮件,因此您应该从服务器激活所述订阅,以确保在未正确通知服务器此事实的情况下,订阅不会变为活动。这里有一些信息:

哦,我明白了,这回答了我的问题,但是,我如何获得sendEmailToken()函数参数使用的详细信息(例如details.payer.email\u address)?
paypal.Buttons({
    style: {
        shape: 'rect',
        color: 'black',
        layout: 'vertical',
        label: 'subscribe'
    },
    createSubscription: function(data, actions) {
      if (discordUser.value === "") {
        alert("Introduce tu usuario de discord");
        return;
      }

      slotDecremented = true;
      alterSlots();
      
      return actions.subscription.create({
        'plan_id': 'P-ID' // here is my plan id
      });
    },
    onApprove: function(data, actions) { 
      return actions.order.capture().then(function(details) {
        sendEmailToken(details.payer.email_address, discordUser.value, data.subscriptionID);
      });
    },
    onCancel: function(data) {
      alterSlots(true);
      slotDecremented = false;
    },
    onError: function(data) {
      if (!slotDecremented) {
        return;
      }

      alterSlots(true);
      slotDecremented = false;
    }
}).render('#paypal-button-container');
    onApprove: function(data, actions) { 
      return actions.order.capture().then(function(details) {
        sendEmailToken(details.payer.email_address, discordUser.value, data.subscriptionID);
      });
    },