In diesem Tutorial werden wir sehen, wie einfach es ist, eine grundlegende gezahlte Mitgliedschaftswebsite mit dem Laravel Cashier -Paket zu erstellen. Sie können hier eine Demo der App sehen und den Quellcode hier herunterladen.
Wir müssen ein Boilreplat -Projekt erstellen, um loszulegen, und wir können dies auf zwei verschiedene Arten tun:
Jetzt müssen wir das Laravel -Kassierer -Paket zum Projekt verlangen, indem wir "Laravel/Cashier" hinzuzufügen: "~ 1.0" zu unserem Composer.json im Abschnitt des Forderns und führen Sie den Komponisten -Update aus, um unsere Abhängigkeiten zu aktualisieren.
Danach müssen wir unsere App sagen, dass sie die Kassierer -Dienstleisterklasse laden soll. Wir können dies tun, indem wir dem Anbieterarray in der Datei config/app.php "laravelcashiercashierserviceProvider" hinzufügen.
Hinweis: Sie müssen den Komponisten-Dump-Autoload ausführen, um das ClassMap-Paket zu aktualisieren.
Wenn Sie bei Laravel -Migrationen neu sind, überprüfen Sie die Dokumentation.
Wir werden zwei Tabellen verwenden:
Beiträge Tabelle:
- int id
- String -Titel
- long_text content
- bool is_premium
Benutzer Tabelle:
- int id
- Varchar (60) E -Mail
- Varchar (60) Passwort
Das Befehlszeilen -Tool von Laravel Artisan erleichtert es einfach, Migrationsklassen zu erstellen und zu verwalten.
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
Und dann füllen wir das Schema :: Callback -Funktionsargument mit dem erforderlichen Code erstellen, der so aussieht
<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>
Um Laravel Cassier über unsere abrechnungsfähige Tabelle zu informieren, müssen wir dafür eine bestimmte Migration erstellen. Laravel Cassier hat zu diesem Zweck einen integrierten Befehl.
<span>php artisan cashier:table users</span>
Jetzt sind wir bereit, unsere Datenbank zu migrieren
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
Wenn Sie Ihre Benutzertabelle öffnen, wird eine Reihe von Feldern angezeigt, die bei Ausführung der Paketmigration hinzugefügt werden.
- STRIPE_ACTIVE, wenn Sie ein aktives Abonnement haben.
- Stripe_id -Benutzer -ID auf Stripe Server.
- Stripe_Plan Stripe -Abonnementplan.
- LEST_FOUR -Kreditkarte Letzte vier Ziffern.
- trial_ends_at Ein Enddatum wird gespeichert, wenn Sie einen Testzeitraum angeben.
- Abonnements -Abonnement -Enddatum.
Jetzt werden wir die Datenbank mit einigen Dummy -Daten säen, um loszulegen. Überprüfen Sie das Endergebnis auf GitHub.
Umgang mit der Zahlung kann ein Schmerz im Nacken sein, und Stripe kann Ihnen dabei helfen, sie verwenden Token anstelle von Kartennummern usw., und so können Sie sicherstellen, dass Ihre Kunden sicher bleiben, während Sie Ihren Service bezahlen .
Hinweis: Überprüfen Sie, ob Stripe in Ihrem Land unterstützt wird. Sie können ihn jedoch weiterhin zum Testen verwenden, wenn nicht.
Um loszulegen, müssen wir zuerst ein Konto erhalten. Stripe hat keine monatliche Gebühr für das Abonnement. Sie zahlen nur, wenn Sie bezahlt werden.
Nachdem Sie ein Konto erhalten haben, müssen Sie Pläne für Ihre Bewerbung erstellen (monatlich, jährlich, Silber, Gold…).
Jedes Feld ist selbsterklärend. Erstellen Sie also eine Goldmitgliedschaft, die 40 US -Dollar und eine grundlegende Mitgliedschaft für 10 US -Dollar kosten. Sie werden jeden Monat in Rechnung gestellt.
Wir haben bereits die erforderlichen Spalten zu unserer Benutzertabelle hinzugefügt. Jetzt müssen wir Laravel Cassier wissen lassen, dass wir die Benutzerklasse als Abrechnungsklasse verwenden werden.
<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>
Hinweis: Wir verwenden Billabletrait und Merkmale erfordern PHP 5,4 oder höher.
Jetzt müssen wir unseren Stripe -API -Zugriffstast
<span>php artisan cashier:table users</span>
Erstellen unserer Seiten
- Anmeldung: Wenn der Benutzer einen Mitgliedschaftsplan (Basic, Gold) anmelden kann.
- Login: Mitglieder Anmeldeseite.
- Upgrade: Upgrade von Basic auf Gold -Mitgliedschaft.
- Beitrag: Zeigen Sie eine einzelne Beitragsseite an.
Anmeldeseite:
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
Auf der Anmeldeseite verfügt über ein Abonnementplanfeld, mit dem ein Benutzer planen.
Wir haben auch eine Kreditkartennummer, Ablaufdatum, cvc.
Wie bereits erwähnt, müssen wir uns niemals mit Zahlungs- oder Überprüfungsprozess befassen. Wir geben diese Werte an den Stripe -Server weiter, um den Lade- und Überprüfungsprozess zu kümmern.
Der Rückgabewert ist ein Token im Erfolgsfall, da wir sonst eine Fehlermeldung erhalten, die wir dem Benutzer anzeigen können.
Mal sehen, wie der Front-End-Code aussieht:
<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>
Zuerst schließen wir die JavaScript -API -Datei ein, dann setzen wir unseren öffentlichen Schlüssel, den wir aus unseren Stripe Dashboard -Einstellungen gepackt haben.
Als nächstes fügen wir unserem Sendenformular eine Rückruffunktion hinzu (stellen Sie sicher, dass Ihre Formular -ID mit der auf dem Ereignishandler verwendeten Funktionen entspricht), um eine doppelte Einreichung zu verhindern, dass wir unsere Sendetaste deaktivieren.
Die Stripe.card.CreateToken akzeptiert zwei Argumente, das erste ist ein JSON -Objekt, das einige erforderliche und optionale Werte enthält.
Erforderliche Werte:
Optionale Werte:
<span>php artisan cashier:table users</span>
Das zweite Argument, das an Stripe.card.CreateToken -Methode übergeben wurde, ist eine Rückruffunktion, um die Antwort zu verarbeiten.
Bei Ausfall wird der StripersponseHandler versucht, ein Element mit einer Klasse von Payment_errors zu finden, um dem Benutzer einige beschreibende Fehler anzuzeigen.
Im Erfolg wird eine Stripetoken -versteckte Eingabe an das Formular angehängt und ist bei Senden verfügbar.
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
wir werden den Validierungsprozess überspringen, um die Dinge einfach zu halten.
Nachdem wir einen neuen Benutzer erstellt und gespeichert haben, haben wir jetzt die Möglichkeit, den Benutzer für einen neuen Mitgliedschaftsplan zu abonnieren. Die Abonnementmethode akzeptiert einen bereits registrierten Plan als Argument, der entweder ein Planinterface oder eine Zeichenfolge sein kann und eine Stripegateway zurückgibt.
Die Methode erstellen akzeptiert ein Token als Parameter. Wir übergeben den neuen versteckten Eingangswert mit dem Namen Stripetoken.
Die Upgrade -Seite wird dem UpgradeController übermittelt, der so aussieht:
<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>
Wir überprüfen, ob der Benutzer zuerst angemeldet ist, dann erstellen wir ein neues Abonnement mit dem neuen Plan und nennen die Swap -Methode, offensichtlich in einem echten Projekt haben Sie einige Gebührenanpassungen und eine Downgrade -Option, aber es sollte funktionieren, aber es sollte funktionieren, aber es sollte funktionieren genauso.
Der Postcontroller prüft, ob der Beitrag IS_PREMIUM, und wenn ja, testen wir, ob der Benutzer ein Goldmitglied ist, das den Beitrag sehen kann. Andernfalls geben wir eine einfache Fehlermeldung zurück.
<span>php artisan cashier:table users</span>
Natürlich müssen wir in unserer Datei routes.php einen Auth -Filter hinzufügen, um zu verhindern, dass nicht authentifizierte Benutzer auf die Seite zugreifen.
Unsere Routes -Datei sieht folgendermaßen aus:
<span>php artisan migrate</span>
<span>use Laravel\Cashier\BillableInterface; </span><span>use Laravel\Cashier\BillableTrait; </span><span> </span><span>class User extends Eloquent implements BillableInterface { </span><span> </span><span> use BillableTrait; </span><span> protected $dates = ['trial_ends_at', 'subscription_ends_at'];</span>
<span>return [ </span><span> 'stripe' => [ </span><span> 'secret' => 'Your key' </span><span> ] </span><span>];</span>
In diesem Tutorial haben wir untersucht, wie Laravel Cassier den Abrechnungsprozess erleichtern und Ihre Kunden leichter verwalten kann.
Wir haben hier sicherlich nicht alles behandelt, aber es ist ein Anfang für Sie, sich in den Quellcode zu befassen, um zu untersuchen, was Sie sonst noch tun können. Wenn Sie eine lachdos veranstaltete Demo dieser App sehen möchten, siehe hier.
Ja, Laravel Cashier unterstützt die Anwendung von Gutscheinen auf Abonnements. Sie können dies tun, indem Sie die Withcoupon -Methode beim Erstellen eines neuen Abonnements verwenden. für Abonnements vom Typ "pro Sitz". Sie können die Menge eines Abonnements mit der Updatequantity -Methode auf einer Abonnementinstanz aktualisieren.
Das obige ist der detaillierte Inhalt vonMitgliedschaften mit Laravel -Kassierer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!