이 튜토리얼에서는 Laravel Cashier 패키지를 사용하여 기본 유료 멤버십 웹 사이트를 만드는 것이 얼마나 쉬운 지 볼 수 있습니다. 여기에서 앱의 데모를보고 여기에서 소스 코드를 다운로드 할 수 있습니다.
키 테이크 아웃
Laravel Cashier는 구독 청구, 쿠폰 처리, 구독 스왑, 취소 유예 기간 및 송장 PDF 생성을 통해 기본 유료 멤버십 웹 사이트의 생성을 단순화합니다.
Laravel Cashier를 기존 Laravel 프로젝트에 통합하려면 작곡가를 통해 패키지를 설치하고 마이그레이션을 실행하여 사용자 테이블에 필요한 열을 추가하고 API 키를 설정 한 다음 모델에 청구 가능한 특성을 추가하십시오. .
Laravel Cashier는 지불을 자동으로 재 시도하여 실패한 지불을 처리 할 수 있습니다. 결제가 계속 실패하면 구독이 취소됩니다.
Laravel Cashier는 현재 Stripe와 Braintree 만 지원하지만 Laravel과 지불 게이트웨이의 API를 잘 이해하여 다른 결제 게이트웨이와 함께 작동하도록 확장 될 수 있습니다.
작업 환경 설정
우리는 시작하기 위해 bookleplate 프로젝트를 만들어야하며, 두 가지 다른 방식으로 그렇게 할 수 있습니다.
-
우리는 Github Repo를 프로젝트 폴더로 복제 할 수 있습니다.
작곡가가 설치되어 있다고 가정하면 (자세한 내용은 설치 안내서를 확인하십시오). -
Composer Create-Project Laravel/Laravel Laravel_membership-Prefer-Dist를 실행하면 Laravel_Membership 폴더에서 Laravel Boilerplate Project가 생성됩니다.
이제 우리는 "laravel/cashier": "~ 1.0"을 Composer.json에 요구 섹션에 추가하고 Composer 업데이트를 실행하여 종속성을 업데이트하여 Laravel Cashier 패키지를 프로젝트에 요구해야합니다. - .
그 후 우리는 출납원 서비스 제공 업체 클래스를로드하도록 앱에 알려야합니다. config/app.php 파일의 제공자 배열에 "laravelcashiercashierserviceprovider"를 추가하여 그렇게 할 수 있습니다.
참고 : 클래스 맵 패키지를 업데이트하려면 Composer Dump-Autoload를 실행해야합니다.
마이그레이션을 사용하여 데이터베이스 생성
Laravel 마이그레이션을 처음 사용하는 경우 문서를 확인하십시오. -
우리는 두 개의 테이블을 사용할 것입니다 :
게시물 테이블 :
- int id
- 문자열 제목
- long_text 컨텐츠
- BOOL IS_PREMIUM
사용자 테이블 :
- int id
- varchar (60) 이메일
- varchar (60) 비밀번호
Laravel Artisan Command Line 도구를 사용하면 마이그레이션 클래스를 쉽게 만들고 관리 할 수 있습니다.
그런 다음 스키마를 채 웁니다 :: 콜백 함수 인수 생성
-
Laravel Cashier에게 청구 가능한 테이블에 대해 알리려면 특정 마이그레이션을 만들어야합니다. Laravel Cashier는 그 목적을 위해 내장 명령을 가지고 있습니다.
-
이제 우리는 데이터베이스를 마이그레이션 할 준비가되었습니다
<span>php artisan migrate:make create_posts_table --create="posts"
</span><span>
</span><span>php artisan migrate:make create_users_table --create="users"</span>
로그인 후 복사
로그인 후 복사
로그인 후 복사
사용자 테이블을 열면 패키지 마이그레이션이 실행될 때 많은 필드가 추가됩니다.
- stripe_active 활성 구독이있는 경우.
- Stripe Server의 Stripe_id 사용자 ID.
- Stripe_plan 스트라이프 구독 계획.
- Last_four 신용 카드 마지막 4 자리.
- trial_ends_at 시험 기간을 지정하면 종료 날짜가 저장됩니다.
- subscription_ends_at 구독 종료 날짜.
이제 우리는 더미 데이터로 데이터베이스를 시드하여 시작할 것입니다. github에서 최종 결과를 확인하십시오.
스트라이프 청구 프로세스
지불을 다루는 것은 목에 통증이 될 수 있으며 스트라이프는이를 도울 수 있습니다. 카드 번호 등 대신 토큰을 사용할 수 있으며, 이는 고객이 서비스 비용을 지불하는 동안 안전을 유지할 수 있도록하는 방법입니다. .
참고 : 해당 국가에서 Stripe가 지원되는지 확인하지만 그렇지 않은 경우 테스트에 사용할 수 있습니다.
시작하려면 먼저 계정을 가져와야합니다. Stripe는 구독에 대한 월 수수료가 없으며, 지불을받을 때만 지불합니다.
.
이제 계정을받은 후에는 응용 프로그램에 대한 계획을 세워야합니다 (매월, 매년,은, 금…).
모든 필드는 자체 설명이므로 $ 40의 비용이 들고 $ 10의 기본 멤버십이 될 금 멤버십을 만들 수 있습니다. 그들은 매월 청구됩니다.
우리는 이미 사용자 테이블에 필요한 열을 추가했습니다. 이제 Laravel Cashier는 사용자 클래스를 청구 클래스로 사용할 것임을 알려 주어야합니다.
참고 : 우리는 BillableTrait을 사용하고 있으며 특성은 PHP 5.4 이상이 필요합니다.
이제 계정> 계정 설정> API 키에서 얻을 수있는 Stripe API Access 키를 설정하고 테스트 비밀 키를 복사해야합니다.
BillableTrait을 사용하면 코드의 어느 곳에서나 호출 할 수있는 user :: setstripekey (Key) 메소드에 액세스 할 수 있지만 선호하는 방법은 구성 디렉토리 아래에서 services.php 파일을 작성하고 배열을 반환하는 것입니다. 이것 : <..>
GetStripekey가 키를로드하려고 할 때 Stripekey라는 속성을 찾을 것입니다. 찾을 수없는 경우 서비스 파일을 자동으로로드합니다.
페이지 제작
물건을 단순하게 유지하기 위해 우리는 몇 페이지 만 만들 것입니다 :
- 가입 : 사용자가 회원 계획 (기본, 금)으로 가입 할 수있는 경우.
- 로그인 : 회원 로그인 페이지.
- 업그레이드 : 기본에서 금 멤버십으로 업그레이드.
- 게시물 : 단일 게시물 페이지를 표시합니다
프로세스 속도를 높이려면 Bootsnipp을 사용할 것입니다. Github Repo에서 최종 코드를 얻을 수 있습니다.
<: :> 로그인 페이지 :
로그인 페이지에는 기본 이메일 및 비밀번호 필드가 있으며 다음과 같은 LoginController 페이지가 있습니다.<span>php artisan migrate:make create_posts_table --create="posts"
</span><span>
</span><span>php artisan migrate:make create_users_table --create="users"</span>
로그인 후 복사
로그인 후 복사
로그인 후 복사
<:> 가입 페이지 :
가입 페이지에는 사용자에게 계획을 지정하는 데 사용되는 가입 계획 필드가 있습니다.
우리는 또한 신용 카드 번호, 만료일, CVC를 가지고 있습니다.
앞에서 말했듯이 지불 또는 확인 프로세스를 처리 할 필요가 없으며, 해당 값을 Stripe Server로 전달하여 충전 및 확인 프로세스를 관리합니다.
반환 값은 성공의 경우 토큰입니다. 그렇지 않으면 사용자에게 보여줄 수있는 오류 메시지가 나타납니다.
프론트 엔드 코드가 어떻게 보이는지
먼저 JavaScript API 파일을 포함하고 Stripe 대시 보드 설정에서 가져온 공개 키를 설정합니다.
다음은 콜백 함수를 제출 양식에 첨부합니다 (양식 ID가 이벤트 핸들러에 사용 된 것과 일치하는지 확인하십시오). 이중 제출을 방지하여 제출 버튼을 비활성화합니다.
Stripe.card.createken은 두 가지 인수를 허용합니다. 첫 번째 인수는 필요한 값과 선택적 값이있는 JSON 객체입니다.
필수 값 :
exp_month : 카드의 만료 달을 나타내는 2 자리 숫자
exp_year : 카드의 만료 연도를 나타내는 2 ~ 4 자리 숫자.
<:> 선택적 값 :
<:> CVC : 카드 보안 코드는 문자열로서 CVC 번호는 선택 사항이지만 사기 방지에 도움이되는 것이 좋습니다.
이름 : 카드 소지자 이름.
주소 _line1 : 청구 주소 라인 1.
주소 _line2 : 청구 주소 라인 2.
주소 _city : 청구서 주소 도시.
주소 _state : 청구 주소 상태.
주소 _zip : 문자열로 지퍼를 청구합니다
주소 _country : 청구 주소 국가.
JSON 객체 대신 양식 객체를 전달하는 것을 알 수 있습니다. 입력에서 값을 수동으로 가져 오거나 데이터 스트라이프 html5 속성을 사용하도록 선택할 수 있으며 Stripe는 일부 도우미 방법을 사용하여 해당 값을 자동으로 가져옵니다. . 예 : <.>
<span>Schema::create('posts', function(Blueprint $table)
</span><span>{
</span><span> $table->increments('id');
</span><span> $table->string('title');
</span><span> $table->longText('content');
</span><span> $table->boolean("is_premium");
</span><span> $table->timestamps();
</span><span>});
</span><span>
</span><span>Schema::create('users', function(Blueprint $table)
</span><span>{
</span><span> $table->increments('id');
</span><span> $table->string('email', 100)->unique();
</span><span> $table->string('password', 60);
</span><span> $table->timestamps();
</span><span>});</span>
로그인 후 복사
로그인 후 복사
두 번째 인수는 Stripe.card.card.createken 메소드로 전달되었습니다. 응답을 처리하는 콜백 함수입니다.
실패의 경우 StriperPonseHandler는 사용자에게 설명 오류를 표시하기 위해 Payment_Errors의 클래스가있는 요소를 찾으려고합니다.
성공의 경우 Stripetoken 숨겨진 입력이 양식에 추가되고 제출시 이용 가능합니다. .
추가 옵션
<:> 시험 기간 : 앞에서 언급했듯이 새 플랜을 만들 때 사용자가 제품을 테스트 할 수있는 평가판 기간을 지정할 수 있으며 지정된 기간이 경과 할 때까지 청구되지 않습니다.
쿠폰 : 다른 유용한 옵션으로 고정 된 금액 또는 백분율을 지정할 수있는 대시 보드 메뉴를 통해 쿠폰을 만듭니다.
이제 SignupController로 이동 하여이 작업을 어떻게 처리 할 것인지 확인합시다.<span>php artisan migrate:make create_posts_table --create="posts"
</span><span>
</span><span>php artisan migrate:make create_users_table --create="users"</span>
로그인 후 복사
로그인 후 복사
로그인 후 복사
우리는 상황을 단순하게 유지하기 위해 검증 프로세스를 건너 뛸 것입니다.
새 사용자를 만들어 저장 한 후 이제 사용자를 새로운 멤버십 계획에 가입 할 수있는 옵션이 있습니다. 구독 방법은 이미 등록 된 계획을 인수로 받아들이며, 이는 planinterface 또는 문자열 일 수 있으며 StripeGateway를 반환 할 수 있습니다.
생성 메소드는 토큰을 매개 변수로 받아들입니다. 우리는 stripeToken이라는 이름으로 새로운 숨겨진 입력 값을 전달합니다.
<: :> 업그레이드 페이지 :
업그레이드 페이지는 다음과 같은 업그레이드 컨트롤러에 제출됩니다.
우리는 사용자가 먼저 로그인한지 확인한 다음 새 플랜으로 새 구독을 생성하고 스왑 방법을 호출합니다. 실제 프로젝트에서는 요금 조정과 다운 그레이드 옵션이 있지만 작동해야합니다. 같은 방식으로.
포스트 페이지 :
포스트 컨트롤러는 게시물이 is_premium인지 확인하고, 그렇다면, 우리는 사용자가 게시물을 볼 수있는 금 멤버인지 테스트합니다. 그렇지 않으면 간단한 오류 메시지를 반환합니다.
물론 Routes.php 파일에서는 인증되지 않은 사용자가 페이지에 액세스하는 것을 방지하기 위해 인증 필터를 추가해야합니다.
우리의 경로 파일은 다음과 같이 보일 것입니다
기타 유용한 방법
<span>Schema::create('posts', function(Blueprint $table)
</span><span>{
</span><span> $table->increments('id');
</span><span> $table->string('title');
</span><span> $table->longText('content');
</span><span> $table->boolean("is_premium");
</span><span> $table->timestamps();
</span><span>});
</span><span>
</span><span>Schema::create('users', function(Blueprint $table)
</span><span>{
</span><span> $table->increments('id');
</span><span> $table->string('email', 100)->unique();
</span><span> $table->string('password', 60);
</span><span> $table->timestamps();
</span><span>});</span>
로그인 후 복사
로그인 후 복사
withcoupon : 우리는 할인 쿠폰을 만들 수있는 가능성이 있다고 말했습니다.이 예에서는 그렇게 할 수 있습니다.
cancel :이 메소드를 사용하여 구독을 쉽게 취소 할 수 있지만 사용자가 즉시 차단하지 않도록 사용자가 OngracePeriod인지 확인해야합니다.
<:> Onplan : 사용자가 특정 계획에 있는지 확인하십시오.
<:> Ontrial : 사용자가 여전히 시험 기간에 있는지 확인하십시오.
취소 : 사용자가 구독을 취소 한 경우
getLastFourcardDigits : 사용자 카드를 마지막 4 자리 숫자로 가져옵니다
getSubscriptionendDate : 구독 종료 날짜를 가져옵니다
gettrialenddate : 시험 종료 날짜를 얻으십시오.
<:> 송장 : 사용자 송장 목록을 가져옵니다
findInvoice : id로 송장을 찾으십시오
downloadinVoice : id로 다운로드 가능한 송장을 생성합니다
결론
이 튜토리얼에서 우리는 Laravel Cashier가 청구 프로세스를 완화하고 고객을보다 쉽게 관리하는 데 어떻게 도움이 될 수 있는지 탐구했습니다.
우리는 확실히 여기에 모든 것을 다루지 않았지만 소스 코드를 파헤쳐 서 다른 무엇을 할 수 있는지 탐색하기위한 시작입니다. 이 앱의 아질성을주는 데모를보고 싶다면 여기를 참조하십시오. Laravel Cashier 멤버십 에 대한 자주 묻는 질문 (FAQ)
Laravel Cashier는 구독 청구를 어떻게 처리합니까?
Laravel Cashier는 구독 청구 관리 프로세스를 단순화하는 강력한 도구입니다. Stripe 's 및 Braintree의 구독 청구 서비스에 대한 표현적이고 유창한 인터페이스를 제공합니다. 그것은 당신이 두려워하는 거의 모든 보일러 플레이트 구독 청구 코드를 처리합니다. Laravel Cashier는 쿠폰, 구독, 구독 "수량", 취소 유예 기간 및 송장 PDF를 생성 할 수 있습니다. Laravel Cashier를 사용하기위한 전제 조건은 무엇입니까?
계산원을 사용하기 전에 Cashier를 사용하기 전에 무엇입니까? 'LL은 스트라이프 계정을 만들고 작곡가를 통해 계산원 패키지를 설치해야합니다. 또한 청구 가능한 특성을 모델 정의에 추가해야합니다.이 특성은 구독 생성, 쿠폰 적용 및 카드 정보 업데이트와 같은 일반적인 청구 작업을 수행 할 수있는 다양한 방법을 제공합니다. Laravel Cashier를 기존의 Laravel 프로젝트에 통합합니까?
Laravel Cashier를 기존 Laravel 프로젝트에 통합하는 것은 간단합니다. 먼저 작곡가를 통해 패키지를 설치해야합니다. 그런 다음 사용자 테이블에 여러 열을 추가하는 마이그레이션을 실행하여 데이터베이스를 준비해야합니다. 그런 다음 API 키를 설정하고 청구 가능한 특성을 모델에 추가해야합니다. 마지막으로, 청구 가능한 특성이 제공 한 다양한 방법을 사용하여 구독을 관리 할 수 있습니다.
Laravel Cashier를 어떻게 처리하지 못하는 지 지불금은 어떻게 처리됩니까? Laravel Cashier는 실패한 결제를 처리 할 수있는 내장 기능을 가지고 있습니다. 결제가 실패하면 계산원은 자동으로 지불을 재 시도합니다. 결제가 계속 실패하면 구독이 취소됩니다. 그러나 관련 이벤트를 듣고 적절한 조치를 취함으로써 이러한 이벤트를 수동으로 처리 할 수 있습니다.
다른 결제 게이트웨이와 함께 Laravel Cashier를 사용할 수 있습니까?
현재 Laravel Cashier는 Stripe와 Stripe와 Braintree. 그러나 원하는 경우 다른 결제 게이트웨이와 협력하도록 계산원을 확장 할 수 있습니다. Laravel과 지불 게이트웨이의 API에 대한 이해가 필요합니다.
Laravel Cashier를 사용하여 구독을 취소하려면 어떻게해야합니까?
사용자의 가입에서 취소 방법을 사용하여 구독을 취소 할 수 있습니다. . 구독이 취소되면 Cashier는 구독의 종료 날짜를 현재 청구주기의 끝까지 자동으로 설정합니다. Laravel Cashier와 함께 시험 기간을 제공 할 수 있습니까? 시험 기간을 지원합니다. 구독을 만들 때 시험 기간을 설정할 수 있습니다. 시험 기간이 끝날 때까지 사용자는 청구되지 않습니다.
Laravel Cashier를 사용하여 송장을 생성하려면 어떻게해야합니까?
Laravel Cashier는 자동으로 송장 PDF를 생성 할 수 있습니다. 송장 인스턴스에서 다운로드 메소드를 호출하여 다운로드 가능한 PDF 버전의 송장에 액세스 할 수 있습니다.이 인스턴스 인스턴스에서 디스크를 작성하거나 브라우저로 스트리밍하는 PDF를 작성하십시오. Laravel Cashier를 사용하여 구독에 쿠폰을 적용 할 수 있습니까?
예, Laravel Cashier는 구독에 쿠폰 적용을 지원합니다. 새 구독을 만들 때 withoupon 메소드를 사용하여이를 수행 할 수 있습니다.
Laravel Cashier로 가입 수량을 처리하려면 어떻게해야합니까?
Laravel Cashier는 가입 수량을 처리 할 수있게 해주므로 유용 할 수 있습니다. "좌석 당"유형 구독. 구독 인스턴스의 updatequantity 메소드를 사용하여 구독 수량을 업데이트 할 수 있습니다.
위 내용은 Laravel Cashier와의 멤버십의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!