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

XMLHttpRequest发送POST请求传参失败 Stripe接口提示缺少amount参数

故障原因

两个核心问题导致参数无法被识别:

  • Stripe 官方API默认不接收application/json格式的请求体,仅支持application/x-www-form-urlencoded格式传参,你设置JSON类型的Content-Type后,服务端不会解析传入的JSON内容,自然读不到任何参数。
  • 你手写的JSON字符串本身存在语法错误:字符串值使用单引号、对象末尾多了冗余逗号,即便接口支持JSON格式也会解析失败。
  • 高危风险提示:绝对不要在前端代码中存放sk开头的Stripe密钥,前端代码可被任意用户查看,密钥泄露后他人可恶意操作你的Stripe账户造成资金损失。前端场景要么使用pk开头的公钥配合Stripe官方前端SDK,要么把请求逻辑放到自有后端服务中做中转。
修正后代码
let xhr = new XMLHttpRequest();
xhr.open("POST", "https://api.stripe.com/v1/payment_intents");
xhr.setRequestHeader("Accept", "application/json");
// 替换为Stripe要求的form编码请求头
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader('Authorization', 'Bearer sk_test_keygoeshere');

xhr.onload = () => console.log(xhr.responseText);

// 按x-www-form-urlencoded规范拼接参数,数组类型参数需要加[]后缀
let params = new URLSearchParams();
params.append('amount', 1000);
params.append('currency', 'usd');
params.append('payment_method_types[]', 'card');

xhr.send(params);

上述代码仅演示参数格式的正确写法,生产环境禁止前端直接携带sk密钥调用Stripe接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:42:29