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

Stripe支付请求数据无法传递至后端API的排查求助

问题根源:请求格式与接收方式不匹配

你遇到的核心问题是前端发送的是JSON格式数据,但后端用[FromForm]标注接收,两者完全不兼容,这就导致后端始终拿不到有效数据。

具体来说:

  • 你的前端AJAX配置了contentType: "application/json",明确告诉服务器要发送的是JSON字符串格式的请求体;
  • 但后端用[FromForm]修饰参数,这是在告诉ASP.NET Core:"去表单数据(application/x-www-form-urlencoded或multipart/form-data格式)里解析参数",自然无法识别JSON格式的内容。

解决方案1:后端改用[FromBody]接收JSON数据(推荐)

这是最规范的做法,建议创建一个强类型模型来接收数据,比直接用JObject更安全、易维护:

第一步:创建请求模型类

public class StripePaymentRequest
{
    // Stripe Token自带的核心字段
    public string Id { get; set; }
    public string Email { get; set; }
    
    // 你的自定义字段
    public int SubscriptionId { get; set; }
    public string City { get; set; }
    public string Postnr { get; set; }
    public string Mobil { get; set; }
    public string Adresse { get; set; }
    public string CVRVirksomhed { get; set; }
}

第二步:修改后端接口接收方式

把[FromForm]改成[FromBody],并用上面的模型类接收参数:

[HttpPost]
[Route("api/Stripe")]
[Produces("application/json")]
public async Task<IActionResult> Post([FromBody] StripePaymentRequest request)
{
    // 先验证数据合法性
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    
    var subscriptionId = request.SubscriptionId;
    // 后续支付处理逻辑(比如调用Stripe官方SDK完成扣款)
    return Ok("支付请求已接收,处理中");
}

解决方案2:前端调整为发送表单数据(不推荐,仅特殊场景用)

如果你一定要用[FromForm]接收,需要修改前端AJAX的配置,把JSON格式改成表单格式:

$.ajax({
    type: "POST",
    url: "/api/Stripe",
    // 去掉contentType(默认就是表单格式),或者设置为"application/x-www-form-urlencoded"
    data: {
        id: token.id,
        email: token.email,
        subscriptionId: $('#SubscriptionId').val(),
        City: $('#City').val(),
        // 其他自定义字段...
    },
    success: function (data) {
        alert(data + "Succes")
    },
    error: function (data) {
        console.log(data + "Error");
    },
    dataType: 'json'
});

⚠️ 注意:这种方式不适合处理嵌套结构的数据,Stripe Token本身可能包含嵌套字段,所以更推荐第一种方案。


额外排查点

  1. 打开浏览器开发者工具的Network标签,查看发送的请求体是否是完整的JSON,确认自定义字段都包含在内;
  2. 如果坚持用JObject,可以把后端参数改成[FromBody] JObject token,也能正常接收,但强类型模型更利于代码维护;
  3. 检查前端是否有跨域问题(如果前后端域名不同),不过你能发起请求的话大概率没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:22:06