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

ASP.NET Stripe Connect嵌入式支付:无Account Id无法获取会话求助

关于Stripe Connect嵌入式支付会话获取的问题

我正在使用Stripe Connect为客户提供嵌入式支付解决方案,以下服务器端代码可成功创建结账会话:

var options = new Stripe.Checkout.SessionCreateOptions
{
    LineItems = new List<Stripe.Checkout.SessionLineItemOptions>
    {
        new Stripe.Checkout.SessionLineItemOptions
        {
            PriceData = new Stripe.Checkout.SessionLineItemPriceDataOptions
            {
                Currency = "aud",
                ProductData = new Stripe.Checkout.SessionLineItemPriceDataProductDataOptions
                {
                    Name = "Gift Voucher",
                },
                UnitAmount = 30000,
            },
            Quantity = 1,
        },
    },
    PaymentIntentData = new Stripe.Checkout.SessionPaymentIntentDataOptions
    {
        ApplicationFeeAmount = 110,
    },
    Mode = "payment",
    UiMode = "embedded",
    ReturnUrl = "https://localhost:44389/blah/StripeCheckoutReturn",
    ClientReferenceId = "12345"
};
var requestOptions = new RequestOptions
{
    StripeAccount = "abcd..."
};
var service = new SessionService();
Session session = service.Create(options, requestOptions);
TempData["StripeSession"] = session.Id;
return Json(new { clientSecret = session.ClientSecret });

上述代码运行正常,我可在嵌入式Stripe支付表单完成测试支付。

问题出在ReturnUrl端点中尝试获取会话时,以下代码会抛出Stripe异常:no such checkout.session

[HttpGet]
[AllowAnonymous]
public async Task<ActionResult> StripeCheckoutReturn()
{
    string session_id = TempData["StripeSession"].ToString();
    var service = new SessionService();
    Session session = service.Get(session_id);
    if (session.PaymentStatus == "paid")
    {
    }
}

但如果硬编码Connect Client的账号ID,如下所示,错误消失,可成功获取会话:

[HttpGet]
[AllowAnonymous]
public async Task<ActionResult> StripeCheckoutReturn()
{
    string session_id = TempData["StripeSession"].ToString();
    var requestOptions = new RequestOptions
    {
        StripeAccount = "acct_12345..."
    };
    var service = new SessionService();
    Session session = service.Get(session_id, requestOptions: requestOptions);
    if (session.PaymentStatus == "paid")
    {
    }
}

这让我陷入了两难境地:没有关联的客户账号ID就无法获取会话,但只有获取会话后才能拿到用于与内部系统对账的ClientReferenceId。

我曾向Stripe支持反馈此问题,他们最初回复称问题是未设置ApplicationFeeAmount,但我回复说明已正确设置该金额,且提供客户账号ID时会话可正常解析后,仅收到自动邮件回复,建议我联系Stripe聊天机器人,未获得正式支持工单,且我的Dashboard中也没有管理支持问题的"Support"板块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:05:12