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

Posted

技术标签:

【中文标题】错误:使用 intent=capture 来使用客户端捕获 [Paypal Javascript SDK]【英文标题】:Errors: Use intent=capture to use client-side capture [Paypal Javascript SDK] 【发布时间】:2021-05-14 17:21:44 【问题描述】:

我正在使用 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>

这是我的 js 文件,它根据付款的操作和状态执行相应的处理程序:

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');

alterSlot() 函数使用 AJAX 对我的特定端点进行 API 调用,如果需要,仅提供额外信息

编辑:

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

【问题讨论】:

【参考方案1】:
    onApprove: function(data, actions)  
      return actions.order.capture().then(function(details) 
        sendEmailToken(details.payer.email_address, discordUser.value, data.subscriptionID);
      );
    ,

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

参见例如PayPal 订阅文档,在其 onApprove 示例中只有一个基本的成功警报:https://developer.paypal.com/docs/subscriptions/integrate/#create-the-subscription


由于您的意图似乎是执行服务器端操作,例如在订阅批准后发送电子邮件,因此您应该从您的服务器激活所述订阅,以确保在没有正确通知您的服务器的情况下订阅不会变为活动状态这个事实。以下是一些信息:https://***.com/a/65139331/2069605

【讨论】:

哦,我明白了,这回答了我的问题,但是,我怎样才能获得 sendEmailToken() 函数的参数使用的详细信息(例如 details.payer.email_address)?

以上是关于错误:使用 intent=capture 来使用客户端捕获 [Paypal Javascript SDK]的主要内容,如果未能解决你的问题,请参考以下文章

将图像返回到 IMAGE_CAPTURE_INTENT

未找到处理 Intent act=android.media.action.IMAGE_CAPTURE 的 Activity

Android ACTION_IMAGE_CAPTURE Intent 在返回 onActivityResult 之前拍照时间歇性崩溃

Android MediaStore.ACTION_IMAGE_CAPTURE 和 Intent.ACTION_PICK

如何使用 Intent 限制录音时间?

使用 Intent 以纵向模式打开相机