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.
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
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
Cela générera les fichiers de migration de base de données requis pour la table Cashier liée au paiement.
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 :
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"
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
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
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(); });
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
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' => '' ]); } }
La méthode authorizeNetPlan
créera un plan d'abonnement Authorize.net et renverra les informations associées. 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
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éthodenewSubscription
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. 🎜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!