Heim > Artikel > PHP-Framework > Laravel-Entwicklung: Wie werden Abonnementzahlungen mit Laravel Cashier und Authorize.net abgewickelt?
Mit der kontinuierlichen Entwicklung des E-Commerce erfreut sich das Abonnement-Zahlungsmodell immer größerer Beliebtheit. Laravel Cashier ist ein Zahlungstool, das auf dem Laravel-Framework basiert und die Verwaltung von Abonnements und das Einziehen von Zahlungen sehr einfach macht. In diesem Artikel wird erläutert, wie Sie Laravel Cashier zusammen mit Authorize.net in einer Laravel-Anwendung verwenden, um Abonnementzahlungen zu verarbeiten.
Bevor Sie beginnen, müssen Sie sicherstellen, dass Sie das Laravel-Framework und den Composer-Paketmanager installiert haben. Geben Sie im Terminal den folgenden Befehl ein, um Laravel Cashier zu installieren:
composer require laravel/cashier
Nach der erfolgreichen Installation müssen Sie die Migrationstabelle für Cashier generieren. Sie können den folgenden Befehl im Terminal ausführen:
php artisan migrate
Dadurch werden die erforderlichen Datenbankmigrationsdateien für die zahlungsbezogene Cashier-Tabelle generiert.
Bevor Sie Authorize.net zur Zahlungsabwicklung verwenden, müssen Sie den Dienst installieren und API-Anmeldeinformationen (API-Anmelde-ID und Transaktionsschlüssel) erhalten.
Sie können diese Vorgänge mit den folgenden Schritten ausführen:
Bevor Sie beginnen, müssen Sie die Parameter in der Datei cashier.php konfigurieren. Die Datei kann im Konfigurationsordner mit dem folgenden Befehl erstellt werden:
php artisan vendor:publish --tag="cashier-config"
Als nächstes müssen Sie die Parameter für die Authorize.net-API in der .env-Datei festlegen:
CASHIER_ENV=production CASHIER_CURRENCY=usd AUTHORIZE_API_LOGIN_ID=YOUR_API_LOGIN_ID AUTHORIZE_TRANSACTION_KEY=YOUR_TRANSACTION_KEY
Bei Verwendung von Laravel Kassieren und Autorisieren Bevor Net Abonnementzahlungen verarbeiten kann, müssen Sie ein Abonnement erstellen. Abonnementpläne können mit dem folgenden Befehl erstellt werden:
php artisan make:model Plan -m
Dieser Befehl erstellt ein Planmodell im App-Ordner und generiert eine Migrationstabelle dafür. Die Migrationsdatei kann nun zur Bearbeitung geöffnet und die notwendigen Felder hinzugefügt werden. Das Folgende ist ein Beispiel als Referenz:
Schema::create('plans', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('stripe_id'); $table->string('authorizenet_id'); $table->integer('price'); $table->string('interval'); $table->integer('interval_count'); $table->integer('trial_period_days')->nullable(); $table->timestamps(); });
Nach dem Ausführen der Migrationsdatei muss die Tabelle in der Datenbank erstellt werden. Führen Sie den folgenden Befehl im Terminal aus:
php artisan migrate
Als Nächstes müssen Sie die erforderlichen Eigenschaften und Methoden im Plan-Modell definieren. Hier ist ein Beispiel:
use LaravelCashierSubscription; class Plan extends Model { public function subscriptions() { return $this->hasMany(Subscription::class); } public function getPrice() { return $this->price / 100; } public function getFormattedPrice() { return number_format($this->getPrice(), 2); } public function authorizeNetPlan() { return AuthorizeNet_Subscription::create([ 'name' => $this->name, 'intervalLength' => $this->interval_count, 'intervalUnit' => $this->interval, 'startDate' => date('Y-m-d'), 'totalOccurrences' => '9999', 'trialOccurrences' => '0', 'amount' => $this->price, 'trialAmount' => '0.00', 'creditCardCardNumber' => '', 'creditCardExpirationDate' => '', 'creditCardCardCode' => '' ]); } }
Die Methode authorizeNetPlan
erstellt einen Authorize.net-Abonnementplan und gibt zugehörige Informationen zurück. authorizeNetPlan
方法将创建Authorize.net订阅计划并返回相关的信息。
一旦订阅计划已经创建,现在就可以向订阅者发送订阅链接。接下来,订阅者可以使用Link点击链接进行订阅付款。
在创建订阅时,需要设置订阅计划和用户相关信息。
以下是一个示例控制器方法:
public function subscribe(Request $request, Plan $plan) { $user = $request->user(); $subscription = $user->newSubscription('default', $plan->stripe_id)->create($request->stripeToken); $authorizeSubscription = $plan->authorizeNetPlan(); $subscription->authorize_net_id = $authorizeSubscription->getSubscriptionId(); $subscription->save(); return redirect()->route('home')->with('success', 'Subscription successful'); }
在该示例中,我们使用newSubscription
方法为用户创建新的订阅。注意,$request->stripeToken
是使用Stripe Checkout生成的令牌。getUserPlan
方法在Plan模型中定义,用于获取当前用户的订阅计划。
在创建订阅后,我们将创建的Authorize.net订阅计划的ID保存到Subscription模型中。
当用户想要取消订阅时,需要执行以下操作:
public function cancel(Request $request) { $user = $request->user(); $subscription = $user->subscription('default'); $authorizeSubscription = AuthorizeNet_Subscription::cancel($subscription->authorize_net_id); $subscription->cancel(); return redirect()->route('home')->with('success', 'Subscription cancelled.'); }
在该示例中,我们使用cancel
Sobald der Abonnementplan erstellt wurde, ist es nun an der Zeit, den Abonnementlink an den Abonnenten zu senden. Anschließend können Abonnenten über Link auf den Link klicken, um ihr Abonnement zu bezahlen.
🎜Beim Erstellen eines Abonnements müssen Sie den Abonnementplan und benutzerbezogene Informationen festlegen. 🎜🎜Hier ist eine Beispiel-Controller-Methode: 🎜rrreee🎜In diesem Beispiel verwenden wir die MethodenewSubscription
, um ein neues Abonnement für den Benutzer zu erstellen. Beachten Sie, dass $request->stripeToken
ein mit Stripe Checkout generiertes Token ist. Die Methode getUserPlan
ist im Planmodell definiert und wird verwendet, um den Abonnementplan des aktuellen Benutzers abzurufen. 🎜🎜Nach dem Erstellen des Abonnements speichern wir die ID des erstellten Authorize.net-Abonnementplans im Abonnementmodell. 🎜cancel
Methode zum Kündigen des Laravel Cashier-Abonnementplans des Benutzers und zum Kündigen des Abonnementplans mithilfe der in Authorize.net bereitgestellten Methoden. 🎜🎜Zusammenfassung🎜🎜Mit Laravel Cashier und Authorize.net ist die Abwicklung von Abonnementzahlungen ganz einfach. Befolgen Sie einfach die oben genannten Schritte, um die Einrichtung und Implementierung schnell durchzuführen. Laravel Cashier bietet praktische Zahlungstools. Warum nicht ein solches neues Modell implementieren, um den sich ändernden Marktanforderungen gerecht zu werden? 🎜Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie werden Abonnementzahlungen mit Laravel Cashier und Authorize.net abgewickelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!