Heim > PHP-Framework > Laravel > Hauptteil

Laravel-Entwicklung: Wie werden Abonnementzahlungen mit Laravel Cashier und Authorize.net abgewickelt?

王林
Freigeben: 2023-06-13 19:15:41
Original
1280 Leute haben es durchsucht

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.

  1. Installieren Sie Laravel Cashier

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 dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch werden die erforderlichen Datenbankmigrationsdateien für die zahlungsbezogene Cashier-Tabelle generiert.

  1. Authorize.net-API konfigurieren

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:

  • Gehen Sie zu https://www.authorize.net/, um ein Konto zu registrieren.
  • Nach dem Anmelden wählen Sie „Konto“ im linken Menü und dann „Einstellungen“. "
  • Wählen Sie unter „Sicherheitseinstellungen“ „API-Anmeldeinformationen und -Schlüssel“ aus.
  • Klicken Sie auf „Neuer Transaktionsschlüssel“, geben Sie die erforderlichen Informationen ein und klicken Sie dann auf „Senden“.
  • Die API-Anmelde-ID und der Transaktionsschlüssel werden angezeigt das Popup-Fenster. Bitte machen Sie eine Kopie und bewahren Sie diese an einem sicheren Ort auf.
  1. Laravel Cashier konfigurieren

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"
Nach dem Login kopieren

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
Nach dem Login kopieren
  1. Erstellen Sie ein Abonnement

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
Nach dem Login kopieren

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 Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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' => ''
        ]);
    }
}
Nach dem Login kopieren

Die Methode authorizeNetPlan erstellt einen Authorize.net-Abonnementplan und gibt zugehörige Informationen zurück. authorizeNetPlan方法将创建Authorize.net订阅计划并返回相关的信息。

  1. 处理订阅付款

一旦订阅计划已经创建,现在就可以向订阅者发送订阅链接。接下来,订阅者可以使用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');
}
Nach dem Login kopieren

在该示例中,我们使用newSubscription方法为用户创建新的订阅。注意,$request->stripeToken是使用Stripe Checkout生成的令牌。getUserPlan方法在Plan模型中定义,用于获取当前用户的订阅计划。

在创建订阅后,我们将创建的Authorize.net订阅计划的ID保存到Subscription模型中。

  1. 处理取消订阅

当用户想要取消订阅时,需要执行以下操作:

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.');
}
Nach dem Login kopieren

在该示例中,我们使用cancel

    Abonnementzahlungen verarbeiten

    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 Methode newSubscription, 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. 🎜
      🎜Umgang mit der Abmeldung🎜🎜🎜Wenn der Benutzer das Abonnement kündigen möchte, müssen die folgenden Vorgänge ausgeführt werden: 🎜rrreee🎜In diesem Beispiel verwenden wir den 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage