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

.NET集成Stripe添加支付方法报错及代码问题咨询

问题分析与解决办法

问题根源拆解

  1. Token不能直接当作PaymentMethod使用:Stripe的PaymentMethod API不接受tok_xxx格式的令牌作为PaymentMethod参数,必须先将Token转换为标准的PaymentMethod对象。
  2. AttachAsync参数类型错误:Stripe.NET的PaymentMethodService.AttachAsync方法要求第一个参数是PaymentMethod的ID字符串,而非PaymentMethod对象实例,直接传对象会触发编译器类型校验错误。

具体解决步骤

1. 将Token转换为PaymentMethod对象

调用Stripe.NET的PaymentMethodService.CreateAsync方法,基于现有Token生成合法的PaymentMethod:

var createOptions = new PaymentMethodCreateOptions
{
    Card = new PaymentMethodCardOptions
    {
        Token = "tok_1O31PJCcOIFUjYBMeREONJw8" // 替换为你的有效Token
    }
};

var paymentMethodService = new PaymentMethodService();
PaymentMethod paymentMethod = await paymentMethodService.CreateAsync(createOptions);

2. 关联PaymentMethod到目标客户

使用生成的PaymentMethod的ID(paymentMethod.Id)调用AttachAsync,传入客户ID完成关联:

var attachOptions = new PaymentMethodAttachOptions
{
    Customer = "cus_xxxxxx" // 替换为你的客户ID
};

// 注意:第一个参数必须是PaymentMethod的ID字符串,而非对象
await paymentMethodService.AttachAsync(paymentMethod.Id, attachOptions);

额外优化建议

Stripe目前推荐使用Payment Element前端组件直接收集支付信息,该组件会自动返回合法的PaymentMethod ID,无需手动处理Token,不仅更安全,还能兼容信用卡、电子钱包等多种支付方式,减少后端转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:23:12