带有 Stripe 的 Laravel 收银员:发票号
Posted
技术标签:
【中文标题】带有 Stripe 的 Laravel 收银员:发票号【英文标题】:Laravel cashier with Stripe: invoice number 【发布时间】:2017-09-09 07:00:23 【问题描述】:不确定其他地方是否相同,但在我的国家/地区,公司服务的发票编号必须是连续的。
我的 Laravel 应用程序通过订阅销售服务。它必须生成带有序列号的发票(abcdef-0001
、abcdef-0002
等)。我将 Laravel Cashier 与 Stripe 一起使用,因为两者都易于配置。现在我想生成发票。但是 Laravel Cashier 中的发票在任何地方都没有序列号。我可以通过以下方式访问一位用户的“发票”:
$invoices = $user->invoices();
但它似乎不是真正的发票,只是来自 Stripe 的付款信息。为每个用户调用此函数以获取发票总数,然后计算序号不是一种选择。
如何在不破坏 Laravel Cashier (+Stripe) 构建的简单模型的情况下轻松处理发票的序列号?有没有合适的方法来做这种事情?还是我必须重新开发一个完整的系统来满足这种需求?
【问题讨论】:
【参考方案1】:Invoices in Laravel Cashier 实际上是对Stripe invoice objects 的抽象。虽然 Stripe 提供了一个连续的发票编号,但 Cashier 出于某种原因没有公开它,但有一个逃生口:通过在发票对象上调用 asStripeInvoice()
,您可以检索底层的 Stripe 对象。
$lastInvoice = $billable->invoices()->last();
// A sequential invoice number as provided by Stripe,
// something like "6EEE0995-0001"
$invoiceNumber = $lastInvoice->asStripeInvoice()->number;
【讨论】:
【参考方案2】:只需创建您自己的模型 BizInvoice,给它一个字段 invoiceID(如您所愿 .. 您可以查询最后一张发票...获取 id ...使用自定义逻辑递增 1 或仅使用默认 id 字段)并与用户模型和 Laravel 收银员支付模型建立关系。
这样您就有了一个唯一的(真实)发票编号(ID),您可以通过用户或/和付款访问该编号
【讨论】:
谢谢。问题是我没有收到“新”发票。只有用户的费用列表。所以我不知道 Laravel 最近是否收费。我可以通过整天对所有用户调用$user->invoices()
来知道这一点(这不是一个选项,因为它是对每个调用的条带 API 的调用)以上是关于带有 Stripe 的 Laravel 收银员:发票号的主要内容,如果未能解决你的问题,请参考以下文章