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

Stripe技术咨询:何时使用\Stripe\InvoiceItem::create与Charge::create?

什么时候用 Charge::create vs \Stripe\InvoiceItem::create?

嘿,刚接触Stripe的话搞不清这俩方法真的太正常了!我来给你拆解清楚它们的适用场景和核心区别:

用 Charge::create 的场景

这是用来发起即时收款的工具——你想立刻从客户的支付方式里扣钱时就用它,属于“一手交钱一手交货”的即时交易模式。

典型场景:

  • 电商网站的单次商品购买:客户结账时直接付款,你需要马上完成交易
  • 一次性服务收费:比如单次咨询、单次课程、线下服务的当场付款
  • 不需要累计费用的单笔收款:只要是付完钱就完事的交易,都适合用这个

举个简单的代码例子:

\Stripe\Charge::create([
  'amount' => 1000, // 注意单位是分,这里对应10美元
  'currency' => 'usd',
  'source' => 'tok_visa', // 客户的支付令牌(从前端获取)
  'description' => '2024年Q1技术咨询服务费',
]);

用 \Stripe\InvoiceItem::create 的场景

这个是用来先记账、后收款的工具——你先把一笔费用添加到客户的待付账单里,之后再统一生成发票完成扣款,适合需要累计费用或者和订阅绑定的场景。

典型场景:

  • 订阅服务的额外收费:比如客户用了超出套餐的流量、额外功能,你把这笔费用加到他们的订阅账单里,跟着下次订阅周期自动开票扣款
  • 按月/按周期结算的累计费用:比如SaaS工具的每日小额使用费、托管服务的月度附加费,先攒成发票项,月底统一生成发票收款
  • 需要和客户账户绑定的待收费用:不管有没有订阅,只要你想把费用挂在客户名下,之后统一收钱,都可以用这个

代码示例:

\Stripe\InvoiceItem::create([
  'customer' => 'cus_123456', // 目标客户的Stripe ID
  'amount' => 500, // 对应5美元
  'currency' => 'usd',
  'description' => '超出基础套餐的10GB流量费用',
  'subscription' => 'sub_789012', // 可选,关联到特定订阅,会自动加入下一期订阅发票
]);

核心区别总结

  • Charge::create:即时生效,调用后立刻尝试扣款,成功后资金就会进入你的Stripe账户(除了需要3D验证等特殊情况)
  • \Stripe\InvoiceItem::create:仅记账,只是把费用记在客户名下,必须后续手动生成发票,或者通过订阅自动触发发票生成,才会实际扣款

简单来说:要立刻收钱用Charge,要攒着一起收钱用InvoiceItem~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:40:01