Revolut Pay沙箱环境返回404(错误码3006)问题求助
解决Revolut B2B沙箱支付接口返回3006(资源未找到)问题
可能的原因及排查步骤
- 端点路径验证:核对官方沙箱API文档,确认支付接口路径是否正确。部分场景下,沙箱环境的支付接口可能存在路径差异,比如是否应为
/api/1.0/payments而非/api/1.0/pay。 - 请求方法检查:确保请求使用的是
POST方法,代码和Postman中均需确认未误选其他方法。 - 账户与交易对手有效性:
- 检查发起支付的
account_id属于当前授权商户,且账户状态正常(无冻结、有可用余额)。 - 确认
receiver内的counterparty_id和account_id匹配,且该交易对手已完成沙箱环境下的必要验证流程。
- 检查发起支付的
- Request ID唯一性:
request_id必须为全局唯一值,避免重复使用历史请求ID,沙箱环境会拒绝重复ID的请求。 - 授权令牌权限:尽管其他API可正常调用,但支付接口可能需要额外的
payments权限范围。在Revolut开发者后台检查API密钥是否包含该权限。
代码优化建议
增加错误捕获与日志输出,便于排查问题:
import requests import json import uuid # 生成唯一request_id request_id = str(uuid.uuid4()) url = "https://sandbox-b2b.revolut.com/api/1.0/pay" payload = json.dumps({ "request_id": request_id, "account_id": "********", "receiver": { "counterparty_id": "**********", "account_id": "**********" }, "amount": 10, "charge_bearer": "debtor", "currency": "GBP", "reference": "**********" }) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ••••••' } try: response = requests.post(url, headers=headers, data=payload) print(f"响应状态码: {response.status_code}") print(f"响应头: {dict(response.headers)}") print(f"响应内容: {response.text}") if response.status_code != 200: error_data = response.json() print(f"错误代码: {error_data.get('code')}, 错误信息: {error_data.get('message')}") except Exception as e: print(f"请求异常: {str(e)}")
额外排查点
- 确认沙箱环境的支付金额限制,检查
amount是否符合要求(GBP 10通常合规,但部分场景可能需调整)。 - 验证
Authorization头格式是否正确,必须为Bearer <令牌>格式,确保未遗漏Bearer前缀。
内容的提问来源于stack exchange,提问作者python nessovo
相关产品推荐
相关产品推荐

