0

0

Laravel开发:如何使用Laravel Cashier实现订阅功能?

WBOY

WBOY

发布时间:2023-06-13 13:34:37

|

1213人浏览过

|

来源于php中文网

原创

laravel开发:如何使用laravel cashier实现订阅功能?

Laravel Cashier是一个易于使用的Stripe付款处理包,可以帮助我们在Laravel应用程序中实现订阅功能。在此教程中,我们将学习如何使用Laravel Cashier实现订阅功能。

步骤1:安装Laravel Cashier

在我们开始使用Laravel Cashier之前,需要安装它。在Laravel项目中运行以下命令来安装Laravel Cashier:

composer require laravel/cashier

步骤2:配置Stripe凭据

Laravel Cashier需要您配置Stripe凭据才能正常工作。如果您还没有Stripe账户,可以在https://stripe.com/上注册一个新账户。然后,登录到Stripe Dashboard,点击API选项卡,复制您的私钥并将其添加到.env文件中。

STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_PUBLIC_KEY=your_stripe_public_key

步骤3:创建订阅计划

在我们实现订阅功能之前,我们需要在Stripe Dashboard中创建订阅计划。转到您的Stripe Dashboard并创建一个新的订阅计划。

在创建订阅计划时,请确保设置适当的金额,计费周期和试用期(如有需要)。

步骤4:创建Subscriber模型

Subscriber模型将继承Laravel Cashier的Billable Trait,并定义有关订阅的所有信息。通过执行以下命令在Laravel项目中创建Subscriber模型:

php artisan make:model Subscriber -m

此命令将创建一个Subscriber模型文件和一个迁移文件。

在迁移文件中,我们需要将Billable Trait添加到模型中。修改Subscriber模型迁移文件,如下所示:

bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->string('stripe_id')->nullable();
            $table->string('card_brand')->nullable();
            $table->string('card_last_four')->nullable();
            $table->timestamp('trial_ends_at')->nullable();
            $table->timestamps();
        });
        Schema::table('subscribers', function (Blueprint $table) {
            $table->softDeletes();
        });
    }
    public function down()
    {
        Schema::table('subscribers', function (Blueprint $table) {
            $table->dropSoftDeletes();
        });
        Schema::dropIfExists('subscribers');
    }
}

我们在Subscriber模型中添加了订阅所需的所有字段以及软删除支持。

步骤5:配置Laravel Cashier

在Subscriber模型中添加Laravel Cashier Trait,如下所示:

在上面的代码中,我们添加了Billable Trait并指定了Stripe中的“stripe_id”。

步骤6:实现订阅功能

BeikeShop跨境电商PHP商城源码
BeikeShop跨境电商PHP商城源码

BeikeShop 一款开源好用的跨境电商系统,BeikeShop 是基于 Laravel 开发的一款开源商城系统主要面向外贸/跨境电商行业提供商品管理、订单管理、会员管理、支付、物流、系统管理等功能。BeikeShop系统亮点1、系统代码100%开源 2、代码分层清晰、格式规范 3、基于Laravel框架开发 4、Event机制实现Hook功能 5、强大的插件机制 6、系统扩展性强 方便二次开发

下载

现在,我们已经配置好了Laravel Cashier并创建了Subscriber模型,我们可以开始使用Laravel Cashier来实现订阅功能。

在我们开始之前,我们需要确保用户已登录。我们将使用Laravel的Authentication功能来处理此步骤。

在web.php中添加以下路由:

Route::group(['middleware' => ['auth']], function () {
    Route::get('/subscribe', 'SubscriptionController@index')->name('subscribe.index');
    Route::post('/subscribe', 'SubscriptionController@store')->name('subscribe.store');
    Route::get('/subscribe/cancel', 'SubscriptionController@cancel')->name('subscribe.cancel');
    Route::get('/subscribe/resume', 'SubscriptionController@resume')->name('subscribe.resume');
    Route::get('/subscribe/invoice', 'SubscriptionController@invoice')->name('subscribe.invoice');
});

现在,我们需要添加一个SubscriptionController来处理我们的订阅功能。使用以下命令创建SubscriptionController:

php artisan make:controller SubscriptionController

在SubscriptionController中添加index方法,

user()->createSetupIntent();
        return view('subscription.index', [
            'intent' => $intent,
        ]);
    }
}

在上面的代码中,我们创建了一个Setup Intent用于收集用户的付款信息。然后,我们将此Setup Intent传递到视图中,并在用于订阅的表单中使用它。

在订阅表单中,我们可以使用Stripe.js来收集用户的付款信息。以下是一个基本的订阅表单示例:

@extends('layouts.app')
@section('content')
{!! Form::open(['route' => 'subscribe.store', 'class' => 'form-horizontal']) !!}
{!! Form::close() !!} @endsection

在上面的代码中,我们使用了Stripe.js来构建一个简单的订阅表单。我们通过使用Stripe.js中的create()方法创建一个card元素,然后将其挂载到#card-element div中。这里我们还使用了axios来处理POST请求,其中包含订阅计划信息和付款信息。如果付款被成功处理,我们将重定向用户到成功页面。

现在,我们需要添加存储用户付款信息和创建订阅逻辑的存储库。

 $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
        $subscriber->createAsStripeCustomer([
            'name' => $subscriber->name,
            'email' => $subscriber->email,
        ]);
        return $subscriber;
    }
    public function subscribe(Subscriber $subscriber, string $plan, string $paymentMethod)
    {
        $subscriber->newSubscription('main', $plan)->create($paymentMethod, [
            'email' => $subscriber->email,
        ]);
    }
}

在上面的代码中,我们创建了一个SubscriberRepository类,用于存储用户信息和创建订阅。在我们的createFromRequest()方法中,我们将创建一个新的Stripe Customer,然后将其相关信息存储到我们的Subscriber模型中。在subscribe()方法中,我们使用Laravel Cashier的newSubscription()函数来为用户创建新的订阅。

步骤7:处理订阅回调

在订阅回调中,我们需要更新用户订阅的当前状态。如果订阅被取消或期满,我们需要根据需要取消或恢复用户订阅。

在SubscriptionController中添加以下方法:

public function store(Request $request, SubscriberRepository $subscriberRepository)
{
    $paymentMethod = $request->input('payment_method');
    $plan = $request->input('plan');
    $subscriberRepository->subscribe(
        $request->user(),
        $plan,
        $paymentMethod
    );
    return response()->json([
        'success_url' => route('subscribe.invoice'),
    ]);
}
public function cancel(Request $request)
{
    $request->user()->subscription('main')->cancel();
    return redirect()->route('subscribe.index')
        ->with('success', 'Your subscription has been cancelled.');
}
public function resume(Request $request)
{
    $request->user()->subscription('main')->resume();
    return redirect()->route('subscribe.index')
        ->with('success', 'Your subscription has been resumed.');
}
public function invoice(Request $request)
{
    $invoice = $request->user()->invoices()->latest()->first();
    return view('subscription.invoice', [
        'invoice' => $invoice,
    ]);
}

在上面的代码中,我们处理了创建新的订阅,取消/恢复用户订阅,并显示订阅的最新发票。

现在,我们已经成功地使用Laravel Cashier实现了订阅功能,并可以让用户创建和管理其订阅了!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

320

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

278

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

373

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

374

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

86

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

66

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

68

2025.08.05

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

515

2023.06.20

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

9

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号