【问题标题】:Laravel Cashier DateTime::__construct(): Failed to parse time string (@) at position 0 (@):Laravel Cashier DateTime::__construct():无法在位置 0 (@) 解析时间字符串 (@):
【发布时间】:2019-09-07 03:47:39
【问题描述】:

我在显示发票列表时有此代码,这与 Laravel Cashier 官方文档中的代码相似或可能完全相同。我收到了这个奇怪的 DateTime::__construct(): Failed to parse time string (@) at position 0 (@): Unexpected character 错误,我不确定 @ 字符在做什么来代替应该是日期。

@foreach (Auth::user()->invoices() as $invoice)
    <tr>
        <td>{{ $invoice->date()->toFormattedDateString() }}</td>
        <td>{{ $invoice->total() }}</td>
        <td>
            <a href="/user/invoice/{{ $invoice->id }}">Download</a>
        </td>
    </tr>
@endforeach

有人有类似经历吗?我也尝试在控制器中只使用var_dump 每个$invoice-&gt;date(),但错误仍然相同。

【问题讨论】:

    标签: laravel php-carbon laravel-cashier


    【解决方案1】:

    您似乎没有使用最新版本的 Laravel Cashier。在旧版本中,如果您按照代码进行操作,您会看到 Laravel Cashier 正在尝试格式化 Stripe 不再返回的属性。

    收银员\src\Invoice.php,第 48 行

    $carbon = Carbon::createFromTimestampUTC($this-&gt;invoice-&gt;date);

    根据 Stripe “API 升级指南”,您可以在 2019-03-14 看到,他们宣布了以下更改;

    “日期属性已重命名为已创建。” (来源:https://stripe.com/docs/upgrades#2019-03-14)

    最新版本的 Cashier 已通过首先检查 created 属性的存在来解决此问题。

    https://github.com/laravel/cashier/blob/9.0/src/Invoice.php#L48

    编辑:如果您因任何原因无法升级,请改为:

    $invoice-&gt;date()-&gt;toFormattedDateString()

    你可以试试这样的:

    Carbon::createFromTimestamp($invoice-&gt;asStripeInvoice()-&gt;created)-&gt;toFormattedDateString();

    【讨论】:

    • 谢谢达伦。是的,我使用的是 Laravel Cashier 7.0 和 8.0
    【解决方案2】:

    最近我遇到了同样的错误。标签上的日期是null。

    我正在阅读Stripe's docs,自 2019 年 3 月 14 日起,他们进行了一些更改。

    Laravel Cashier 将停止获取发票日期,因为 Stripe 将不再提供它。

    发票对象有一些变化:

    • status_transitions 哈希现在包含发票时的时间戳 已完成、已付款、标记为无法收回或作废。
    • date 属性已重命名为 created。
    • finalized_at 属性已移至 status_transitions 哈希中。

    现在,我是怎么解决的?

    1. 我在 composer.json 文件中将我的 Laravel Cashier 版本更改为 9.3。
    2. 我打开终端并运行composer update。

    希望我的解决方案对您有用。问候!

    【讨论】:

    • 从 7.0 升级到 9.3 会破坏什么吗?
    猜你喜欢
    • 2020-10-16
    • 2021-06-09
    • 2013-06-29
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2021-09-12
    相关资源
    最近更新 更多