Maison > cadre php > Laravel > le corps du texte

Développement Laravel : Comment gérer les paiements d'abonnement à l'aide de Laravel Cashier et Authorize.net ?

王林
Libérer: 2023-06-13 19:15:41
original
1279 Les gens l'ont consulté

Avec le développement continu du e-commerce, le modèle de paiement par abonnement devient de plus en plus populaire. Laravel Cashier est un outil de paiement basé sur le framework Laravel qui simplifie grandement la gestion des abonnements et la collecte des paiements. Cet article expliquera comment utiliser Laravel Cashier avec Authorize.net dans une application Laravel pour traiter les paiements d'abonnement.

  1. Installer Laravel Cashier

Avant de commencer, vous devez vous assurer d'avoir installé le framework Laravel et le gestionnaire de packages Composer. Entrez la commande suivante dans le terminal pour installer Laravel Cashier :

composer require laravel/cashier
Copier après la connexion

Une fois l'installation réussie, vous devez générer la table de migration pour Cashier. Vous pouvez exécuter la commande suivante dans le terminal :

php artisan migrate
Copier après la connexion
Copier après la connexion

Cela générera les fichiers de migration de base de données requis pour la table Cashier liée au paiement.

  1. Configurer l'API Authorize.net

Avant d'utiliser Authorize.net pour traiter les paiements, vous devez installer le service et obtenir les informations d'identification de l'API (ID de connexion API et clé de transaction).

Vous pouvez effectuer ces opérations en suivant les étapes suivantes :

  • Allez sur https://www.authorize.net/ pour créer un compte
  • Après vous être connecté, sélectionnez « Compte » dans le menu de gauche, puis sélectionnez « Paramètres "
  • Dans "Paramètres de sécurité", sélectionnez "Crédits et informations d'identification API"
  • Cliquez sur "Nouvelle clé de transaction", saisissez les informations requises, puis cliquez sur "Soumettre"
  • L'ID de connexion API et la clé de transaction seront affichés dans la fenêtre contextuelle. Veuillez en faire une copie et la conserver dans un endroit sûr.
  1. Configuration de Laravel Cashier

Avant de commencer, vous devez configurer les paramètres dans le fichier cashier.php. Le fichier peut être créé dans le dossier de configuration avec la commande suivante :

php artisan vendor:publish --tag="cashier-config"
Copier après la connexion

Ensuite, vous devez définir les paramètres liés à l'API Authorize.net dans le fichier .env :

CASHIER_ENV=production
CASHIER_CURRENCY=usd
AUTHORIZE_API_LOGIN_ID=YOUR_API_LOGIN_ID
AUTHORIZE_TRANSACTION_KEY=YOUR_TRANSACTION_KEY
Copier après la connexion
  1. Créer un plan d'abonnement

Lors de l'utilisation de Laravel Caissier et autorisation. Avant que net puisse traiter les paiements d'abonnement, vous devez créer un plan d'abonnement. Les plans d'abonnement peuvent être créés via la commande suivante :

php artisan make:model Plan -m
Copier après la connexion

Cette commande créera un modèle de plan dans le dossier de l'application et générera une table de migration pour celui-ci. Le fichier de migration peut maintenant être ouvert pour édition et les champs nécessaires ajoutés. Voici un exemple de référence :

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();
});
Copier après la connexion

Après avoir exécuté le fichier de migration, la table doit être créée dans la base de données. Exécutez la commande suivante dans le terminal :

php artisan migrate
Copier après la connexion
Copier après la connexion

Ensuite, vous devez définir les propriétés et méthodes nécessaires dans le modèle Plan. Voici un exemple :

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' => ''
        ]);
    }
}
Copier après la connexion

La méthode authorizeNetPlan créera un plan d'abonnement Authorize.net et renverra les informations associées. 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');
}
Copier après la connexion

在该示例中,我们使用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.');
}
Copier après la connexion

在该示例中,我们使用cancel

    Traitement des paiements d'abonnement

    Une fois le plan d'abonnement créé, il est maintenant temps d'envoyer le lien d'abonnement à l'abonné. Ensuite, les abonnés peuvent utiliser Link pour cliquer sur le lien afin de payer leur abonnement.

    🎜Lors de la création d'un abonnement, vous devez définir le plan d'abonnement et les informations relatives à l'utilisateur. 🎜🎜Voici un exemple de méthode de contrôleur : 🎜rrreee🎜Dans cet exemple, nous utilisons la méthode newSubscription pour créer un nouvel abonnement pour l'utilisateur. Notez que $request->stripeToken est un jeton généré à l'aide de Stripe Checkout. La méthode getUserPlan est définie dans le modèle Plan et est utilisée pour obtenir le plan d'abonnement de l'utilisateur actuel. 🎜🎜Après avoir créé l'abonnement, nous enregistrons l'ID du plan d'abonnement Authorize.net créé dans le modèle d'abonnement. 🎜
      🎜Gestion du désabonnement🎜🎜🎜Lorsque l'utilisateur souhaite annuler l'abonnement, les opérations suivantes doivent être effectuées : 🎜rrreee🎜Dans cet exemple, nous utilisons le annuler méthode pour annuler le plan d'abonnement de l'utilisateur Laravel Cashier et annuler le plan d'abonnement à l'aide des méthodes fournies dans Authorize.net. 🎜🎜Résumé🎜🎜Le traitement des paiements d'abonnement est facile avec Laravel Cashier et Authorize.net. Suivez simplement les étapes ci-dessus pour une configuration et une mise en œuvre rapides. Laravel Cashier fournit des outils de paiement pratiques, pourquoi ne pas mettre en œuvre un nouveau modèle pour répondre aux besoins changeants du marché ? 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal