带有 Stripe 的 Laravel 收银员:发票号

Posted

技术标签:

【中文标题】带有 Stripe 的 Laravel 收银员:发票号【英文标题】:Laravel cashier with Stripe: invoice number 【发布时间】:2017-09-09 07:00:23 【问题描述】:

不确定其他地方是否相同,但在我的国家/地区,公司服务的发票编号必须是连续的。

我的 Laravel 应用程序通过订阅销售服务。它必须生成带有序列号的发票(abcdef-0001abcdef-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 收银员:发票号的主要内容,如果未能解决你的问题,请参考以下文章

Stripe Laravel:Api 键必须是字符串

Laravel 收银员数量增量更新不起作用

带有条纹的laravel收银员没有月度计划错误

Laravel Cashier - updateCard() - 指导

如何创建带有发票的 Stripe 订单?

Laravel 5.5 阻止表单提交按 Enter