Cybersource创建入驻注册API在开发者门户正常,Postman调用未授权
我在使用Cybersource的「Create a Boarding Registration」API时遇到问题:在Cybersource开发者门户测试请求完全正常,但用Postman复现相同请求时,返回如下错误:
{ "response": { "rmsg": "{\"error\":\"UNAUTHORIZED_USER\",\"error_description\":\"UNAUTHORIZED USER\"}" } }
请求头与文档及门户保持一致:
- Authorization: Bearer <Bearer> - Content-Type: application/json - v-c-merchant-id: alpha_001 - Host: apitest.cybersource.com
接口地址:POST https://apitest.cybersource.com/boarding/v1/registrations
请求体如下:
{ "organizationInformation": { "parentOrganizationId": "alpha_001", "type": "MERCHANT", "configurable": "false", "businessInformation": { "name": "ArtanStoreTest_123", "address": { "country": "US", "address1": "123456 SandMarket", "locality": "ORMOND BEACH", "administrativeArea": "FL", "postalCode": "32176" }, "websiteUrl": "https://www.StuartWickedEats.com", "phoneNumber": "6574567813", "businessContact": { "firstName": "Stuart", "lastName": "Stuart", "phoneNumber": "6574567813", "email": "svc_email_bt@corpdev.visa.com" }, "merchantCategoryCode": "5999" } }, "productInformation": { "selectedProducts": { "payments": { "cardProcessing": { "subscriptionInformation": { "enabled": true, "features": { "cardNotPresent": { "enabled": true } } }, "configurationInformation": { "configurations": { "common": { "processors": { "tsys": { "merchantId": "123456789101", "terminalId": "1231", "industryCode": "D (Direct Marketing)", "vitalNumber": "71234567", "merchantBinNumber": "123456", "merchantLocationNumber": "00001", "storeID": "1234", "settlementCurrency": "USD" } }, "merchantCategoryCode": "1234", "merchantDescriptorInformation": { "name": "r4ef", "city": "Bellevue", "country": "US", "phone": "4255547845", "state": "WA", "street": "StreetName", "zip": "98007" } }, "features": { "cardNotPresent": { "visaStraightThroughProcessingOnly": true } } } } }, "payerAuthentication": { "subscriptionInformation": { "enabled": true }, "configurationInformation": { "configurations": { "cardTypes": { "verifiedByVisa": { "currencies": [ { "currencyCodes": [ "ALL" ], "acquirerId": "469216", "processorMerchantId": "678855" } ] } } } } }, "virtualTerminal": { "subscriptionInformation": { "enabled": "true" } }, "customerInvoicing": { "subscriptionInformation": { "enabled": "true" } }, "payouts": { "subscriptionInformation": { "enabled": "true" } } }, "risk": { "fraudManagementEssentials": { "subscriptionInformation": { "enabled": "true" }, "configurationInformation": { "templateId": "10E16B5E-113A-4C14-B527-833EA5C14096" } } }, "commerceSolutions": { "tokenManagement": { "subscriptionInformation": { "enabled": "true" } } } } } }
可能的原因与解决方案
1. Bearer Token 有效性问题
- 开发者门户生成的Token可能有时间限制,或是绑定门户环境的临时Token,复制到Postman时可能已过期。重新在门户生成新的Bearer Token,立即粘贴到Postman测试。
- 确认Token权限范围:确保你的Token拥有
boarding:registrations:create的API调用权限,部分Token仅允许在门户内使用。
2. 请求头细节差异
- 检查
Authorization头格式:确保Bearer与Token之间只有一个空格,无多余空格、换行或特殊字符(复制时可能带入隐藏格式)。 - 验证
v-c-merchant-id准确性:确认alpha_001是当前Token关联的有效沙箱商户ID,无拼写错误。 - 禁用Postman自动添加的额外请求头(如
User-Agent、Accept),仅保留你列出的四个头,部分场景下Cybersource对请求头有严格校验。
3. 请求体隐式格式错误
- 对比门户与Postman的请求体:检查JSON格式问题,比如你的请求体中
virtualTerminal等字段用了字符串"true",而门户可能自动转为布尔值true,这类差异会导致校验失败,统一修正为布尔值格式。 - 移除请求体中不必要的空格或换行,确保JSON结构与门户测试的完全一致。
4. Postman配置问题
- 关闭Postman的SSL证书验证(设置中关闭"SSL certificate verification"),部分环境下SSL证书问题会导致请求被拦截。
- 使用Postman的Raw模式发送请求,避免表单或其他模式自动修改请求内容。
内容的提问来源于stack exchange,提问作者Artan Merko
相关产品推荐
相关产品推荐

