Spark (Stripe) 5.0 主要提供从 Cashier 14.x 到 Cashier 15.x 的升级。因此,除了以下升级指南外,请参阅 Cashier 15 升级指南。
Cashier 15.x 的默认 Stripe API 版本为 2023-10-16
。
如果您直接使用 Stripe SDK,请确保在更新后正确测试您的集成。
部署和 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。
php artisan cashier:webhook --disabled --url "https://your-site.com/spark/webhook"
此命令将在您的 Stripe 仪表板中创建一个与 Cashier 具有相同 Stripe API 版本的新 Webhook 在您的 Stripe 仪表板中。Webhook 将立即被禁用,因此在您准备好启用它之前不会干扰您现有的生产应用程序。
您可以使用以下升级清单来正确启用新的 Webhook
STRIPE_WEBHOOK_SECRET
环境变量来在生产环境中禁用它。STRIPE_WEBHOOK_SECRET
环境变量来重新启用新的 Webhook 密钥验证。完成此过程后,您的新 Webhook 将处于活动状态,并准备接收事件。
Spark Stripe 5.0 不再自动从其自己的迁移目录加载迁移。相反,您应该运行以下命令将 Spark 的迁移发布到您的应用程序
php artisan vendor:publish --tag=spark-migrations
Spark Stripe 的代码和文本已更新,将“收据”称为“发票”。这是为了使 Spark Stripe 更接近 Stripe 对此概念的术语。为了适应这一点,您应该对您的应用程序进行以下更改
首先,在您的 spark.php
配置中重命名相应的特性标志
// From...
Features::receiptEmails(['custom-addresses' => true]),
// To...
Features::invoiceEmails(['custom-addresses' => true]),
然后,将应用程序的 config/spark.php
配置文件中的 receipt_data
键重命名为 invoice_data
。
// 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
。
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('receipt_emails', 'invoice_emails');
});