logo

升级

从 4.x 升级到 Spark (Stripe) 5.0

Spark (Stripe) 5.0 主要提供从 Cashier 14.x 到 Cashier 15.x 的升级。因此,除了以下升级指南外,请参阅 Cashier 15 升级指南

Stripe API 版本

Cashier 15.x 的默认 Stripe API 版本为 2023-10-16

如果您直接使用 Stripe SDK,请确保在更新后正确测试您的集成。

升级您的 Stripe Webhook

部署和 Webhook

在更新和部署 Spark 后,立即升级您的 Webhook 至关重要,以最大程度地减少由于 Webhook 的 API 版本与 Cashier 使用的版本不匹配而导致的冲突。

您应该确保您的 Stripe Webhook 使用与 Cashier 使用的 Spark 底层 API 版本相同的 API 版本。为此,您可以从生产环境中使用 cashier:webhook 命令创建一个与 Cashier 的 Stripe API 版本匹配的新 Webhook。当然,您应该确保 Webhook 的 URL 与您的应用程序预期接收 Webhook 请求的 URL 相对应。默认情况下,您的应用程序将在 /spark/webhook 接收 Spark Stripe Webhook。

bash
php artisan cashier:webhook --disabled --url "https://your-site.com/spark/webhook"

此命令将在您的 Stripe 仪表板中创建一个与 Cashier 具有相同 Stripe API 版本的新 Webhook 在您的 Stripe 仪表板中。Webhook 将立即被禁用,因此在您准备好启用它之前不会干扰您现有的生产应用程序。

您可以使用以下升级清单来正确启用新的 Webhook

  1. 如果您启用了 Webhook 签名验证,请通过暂时删除 STRIPE_WEBHOOK_SECRET 环境变量来在生产环境中禁用它。
  2. 在您的 Stripe 仪表板中将您的应用程序所需的任何其他 Stripe 事件添加到新的 Webhook 中。
  3. 在您的 Stripe 仪表板中禁用旧的 Webhook。
  4. 在您的 Stripe 仪表板中启用新的 Webhook。
  5. 通过在生产环境中使用新 Webhook 的密钥重新添加 STRIPE_WEBHOOK_SECRET 环境变量来重新启用新的 Webhook 密钥验证。
  6. 在您的 Stripe 仪表板中删除旧的 Webhook。

完成此过程后,您的新 Webhook 将处于活动状态,并准备接收事件。

发布迁移

Spark Stripe 5.0 不再自动从其自己的迁移目录加载迁移。相反,您应该运行以下命令将 Spark 的迁移发布到您的应用程序

bash
php artisan vendor:publish --tag=spark-migrations

收据重命名为发票

Spark Stripe 的代码和文本已更新,将“收据”称为“发票”。这是为了使 Spark Stripe 更接近 Stripe 对此概念的术语。为了适应这一点,您应该对您的应用程序进行以下更改

首先,在您的 spark.php 配置中重命名相应的特性标志

php
// From...
Features::receiptEmails(['custom-addresses' => true]),

// To...
Features::invoiceEmails(['custom-addresses' => true]),

然后,将应用程序的 config/spark.php 配置文件中的 receipt_data 键重命名为 invoice_data

php
// From...
'receipt_data' => [
    'vendor' => 'Your Product',
    'product' => 'Your Product',
    'street' => '111 Example St.',
    'location' => 'Los Angeles, CA',
    'phone' => '555-555-5555',
],

// To...
'invoice_data' => [
    'vendor' => 'Your Product',
    'product' => 'Your Product',
    'street' => '111 Example St.',
    'location' => 'Los Angeles, CA',
    'phone' => '555-555-5555',
],

接下来,如果您使用 vendor:publish Artisan 命令发布了 Spark 的视图,则应将应用程序的 resources/views/vendor/spark/mail 目录中的 receipt.blade.php 模板重命名为 invoice.blade.php

最后,创建一个迁移来将 user 表的 receipt_emails 列重命名为 invoice_emails

php
Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('receipt_emails', 'invoice_emails');
});