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

调用Coinbase Commerce接口创建charge的POST请求报错如何解决?

问题排查与修复方案

核心错误原因

你的请求体多了一层query嵌套,Coinbase Commerce的创建Charge接口要求所有参数直接放在请求体根层级,你当前的JSON.stringify({ query })生成的结构是{"query": {"name": "...", ...}},不符合接口要求,这是最主要的报错原因。

通用排查步骤

  • 先完善错误处理逻辑,输出完整的接口返回的错误信息,错误信息会明确告知是字段缺失、格式错误还是权限问题,大幅提高排查效率
  • 校验请求体结构:所有Charge配置参数直接放在请求体根节点,不要额外嵌套外层对象
  • 校验API密钥有效性:确认你使用的是Coinbase Commerce后台生成的专属API密钥,不要和Coinbase普通交易接口的密钥混淆
  • 校验字段格式:local_price.amount需为字符串格式的数值,货币代码需符合ISO 4217标准,你当前的字段值都是合规的

修复后完整代码

const chargeParams = {
    name: 'The Sovereign Individual',
    description: 'Mastering the Transition to the Information Age',
    local_price: {
        amount: '100.00',
        currency: 'USD',
    },
    pricing_type: 'fixed_price',
    metadata: {
        customer_id: 'id_1005',
        customer_name: 'Satoshi Nakamoto',
    },
    redirect_url: 'https://charge/completed/page',
    cancel_url: 'https://charge/canceled/page',
};
const opts = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-CC-Api-Key': '6225fe4d-f9a8-498f-8085-11dea4212316',
        'X-CC-Version': '2018-03-22',
    },
    // 直接序列化参数对象,不要外层嵌套
    body: JSON.stringify(chargeParams),
};
// 增加错误处理逻辑方便排查
fetch('https://api.commerce.coinbase.com/charges', opts)
    .then(res => {
        if (!res.ok) {
            // 打印错误响应内容
            return res.json().then(err => { throw err; });
        }
        return res.json();
    })
    .then(data => console.log('创建成功', data))
    .catch(err => console.error('请求错误', err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:18:03