调用PayPal Partner-referrals API返回Unauthorized错误的解决咨询
问题重现
调用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需对应账户已授权的功能。
测试步骤
- 先修复Authorization头的格式错误,重新调用API。
- 若仍报错,检查获取token的请求是否包含正确的
scope参数。 - 验证账户是否为已获批的合作伙伴账户,应用权限是否正确配置。
内容的提问来源于stack exchange,提问作者redoc01
相关产品推荐
相关产品推荐

