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

调用PayPal Partner-referrals API返回Unauthorized错误的解决咨询

解决PayPal Partner-Referrals API权限不足(NOT_AUTHORIZED)问题

问题重现

调用v2/customer/partner-referrals API生成卖家入驻URL时,返回Unauthorized错误,错误信息明确为权限不足:

{
  "name": "NOT_AUTHORIZED",
  "debug_id": "c558663a13fcd",
  "message": "Authorization failed due to insufficient permissions.",
  "details": [
    {
      "issue": "NOT_AUTHORIZED",
      "description": "Authorization failed due to insufficient permissions."
    }
  ]
}

以下是你提供的请求Payload和C#调用代码:

请求Payload

{
  "tracking_id": "868gkjhkhjlklj",
  "operations": [
    {
      "operation": "API_INTEGRATION",
      "api_integration_preference": {
        "rest_api_integration": {
          "integration_method": "PAYPAL",
          "integration_type": "THIRD_PARTY",
          "third_party_details": {
            "features": ["PAYMENT", "REFUND"]
          }
        }
      }
    }
  ],
  "products": ["EXPRESS_CHECKOUT"],
  "legal_consents": [
    {
      "type": "SHARE_DATA_CONSENT",
      "granted": true
    }
  ]
}

C#调用代码

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("https://api-m.sandbox.paypal.com");
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", "Bearer " + jsonResponseBody.access_token);

    StringContent contentJson = new StringContent(payload, Encoding.UTF8, "application/json");

    var response2 = await client.PostAsync("v2/customer/partner-referrals", contentJson);

    response2.EnsureSuccessStatusCode();

    var responseBody2 = await response2.Content.ReadAsStringAsync();

    var t = "";
}

核心解决方案

1. 修复Authorization请求头格式错误

你的代码中AuthenticationHeaderValue的参数传递错误,正确的认证方案是Bearer,而非Authorization。错误写法会生成无效请求头(Authorization: Authorization Bearer [token]),导致PayPal无法解析令牌。

修改为:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jsonResponseBody.access_token);

2. 确保访问令牌包含正确的权限范围

获取access_token时,必须请求partner-referrals权限。在调用v1/oauth2/token的请求中,添加scope参数:

grant_type=client_credentials&scope=partner-referrals

如果需要多个权限,可用空格分隔,例如scope=partner-referrals payments。

3. 验证账户的合作伙伴身份

partner-referrals API仅对PayPal认证的合作伙伴账户开放,普通商家账户无权限:

  • 确认你的PayPal账户已完成合作伙伴入驻流程(需在PayPal开发者平台提交申请并获批)。
  • 使用合作伙伴账户的Client ID和Secret获取访问令牌,而非普通商家账户的凭证。

4. 检查Sandbox应用权限配置

登录PayPal开发者平台:

  • 确认你的应用关联到了合作伙伴账户。
  • 在应用的权限设置中,启用partner-referrals相关权限(通常在"Advanced Options"或"Permissions"菜单下)。

5. 确认Payload的合规性

虽然权限错误主要由身份/令牌问题导致,但需确保Payload字段符合要求:

  • products字段值需与你的合作伙伴账户权限匹配,EXPRESS_CHECKOUT是合法值,但需确认账户已开通该产品权限。
  • features列表中的PAYMENT和REFUND需对应账户已授权的功能。

测试步骤

  1. 先修复Authorization头的格式错误,重新调用API。
  2. 若仍报错,检查获取token的请求是否包含正确的scope参数。
  3. 验证账户是否为已获批的合作伙伴账户,应用权限是否正确配置。

内容的提问来源于stack exchange,提问作者redoc01

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:53:15