You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PayPal已保存支付信息渲染按钮时遇‘ID token无所需权限’错误

解决PayPal Vault一键支付的"ID token context does not have required scope"错误

问题根源

你遇到的错误是因为用于渲染Vault支付按钮的id_token未携带访问用户已保存支付信息所需的权限范围(scope)。即使开发者控制台开启了Vault功能,生成id_token时若未明确指定相关权限,令牌依然无法访问Vault资源。

修复步骤

1. 修正第6步的id_token生成请求

生成关联target_customer_id的id_token时,必须在请求中明确添加Vault相关scope,确保令牌拥有读取支付方式的权限。

向https://api-m.sandbox.paypal.com/v1/oauth2/token发送POST请求(使用form-data格式),参数需包含:

grant_type=client_credentials
target_customer_id=你的customerId(如560837847)
scope=openid vault:payment-methods:read

注意:PayPal的token接口仅接受form-data格式参数,不要用JSON传递。

2. 验证id_token的权限

生成新id_token后,解码查看payload中的scope字段,确认包含vault:payment-methods:read。若未包含,检查请求参数是否正确传递(比如scope是否拼写正确、是否用form-data提交)。

3. 调整前端按钮配置

渲染按钮时,除了传入data-user-id-token,需在按钮配置中明确启用Vault模式,告知SDK读取已保存的支付方式:

paypal.Buttons({
  createOrder: (data, actions) => {
    return actions.order.create({
      purchase_units: [{
        amount: { value: '10.00' }
      }],
      payment_source: {
        paypal: {
          attributes: {
            vault: { usage_type: 'MERCHANT' }
          }
        }
      }
    });
  },
  onApprove: (data, actions) => {
    return actions.order.capture().then(details => {
      // 处理支付成功逻辑
    });
  }
}).render('#paypal-button-container');

4. 确认应用权限配置

在PayPal开发者控制台,检查你的应用是否已授予Vault - Payment Methods权限:

  • 进入应用的“Permissions”栏目
  • 确认vault:payment-methods:read和vault:payment-methods:write权限已启用

关键注意点

  • 必须使用client_credentials授权类型生成关联target_customer_id的id_token,不能用authorization_code流程,因为你是代表商家访问用户的Vault信息。
  • 沙盒测试时,确保测试用的PayPal账号已完成至少一次Vault绑定支付,否则即使id_token正确,也无法读取到支付信息。

内容的提问来源于stack exchange,提问作者Artúr Bella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:15:38