Maison >développement back-end >tutoriel php >Comprendre les caractéristiques fondamentales de Laravel Cashier : une analyse approfondie

Comprendre les caractéristiques fondamentales de Laravel Cashier : une analyse approfondie

DDD
DDDoriginal
2024-11-30 00:24:15533parcourir

Understanding Laravel Cashier

Laravel Cashier fournit plusieurs fonctionnalités puissantes qui gèrent les intégrations Stripe. Aujourd'hui, nous allons explorer trois caractéristiques principales et leurs méthodes publiques : ManagesSubscriptions, ManagesCustomer et ManagesInvoices. Comprendre ces caractéristiques est crucial pour implémenter la facturation basée sur les abonnements dans vos applications Laravel.

Trait de gestion des abonnements

Création et gestion des abonnements

newSubscription($type, $prices = [])

Crée une nouvelle instance de générateur d'abonnement. Le type définit le nom de l'abonnement (par exemple, « par défaut ») et les prix peuvent être un identifiant unique ou un tableau.

Gestion des essais

newSubscription($type, $prices = [])
  • Aucun paramètre : vérifie UNIQUEMENT l'essai générique (au niveau du modèle)
  • Avec $type : vérifie l'essai spécifique à l'abonnement
  • Avec les deux : vérifie si un prix spécifique est en cours d'essai
  • Renvoie un booléen
onTrial($type = 'default', $price = null)
  • Aucun paramètre : vérifie l'expiration de l'essai générique
  • Avec $type : vérifie l'expiration de l'essai d'abonnement spécifique
  • Avec les deux : vérifie l'expiration d'un essai de prix spécifique
  • Renvoie un booléen
hasExpiredTrial($type = 'default', $price = null)
  • Vérifie l'état de l'essai au niveau du modèle
  • Renvoie vrai si trial_ends_at existe et est futur
  • Aucun paramètre requis
onGenericTrial()
  • Portée du filtrage des clients lors d'un essai générique
  • Utilisé dans le générateur de requêtes
  • Nécessite une instance du générateur de requêtes
scopeOnGenericTrial($query)
  • Vérifie si l'essai au niveau du modèle a expiré
  • Renvoie vrai si trial_ends_at existe et est passé
  • Aucun paramètre requis
hasExpiredGenericTrial()
  • Possibilité de filtrer les clients dont les essais génériques ont expiré
  • Utilisé dans le générateur de requêtes
  • Nécessite une instance du générateur de requêtes
scopeHasExpiredGenericTrial($query)
  • Aucun paramètre : renvoie la date de fin de l'essai générique en cas d'essai générique
  • Avec $type : renvoie la date de fin d'essai spécifique à l'abonnement
  • Renvoie une instance Carbon ou null

Vérification de l'état de l'abonnement

trialEndsAt($type = 'default')
  • Juste $type : vérifie l'existence d'un abonnement valide
  • Avec $price : vérifie le prix spécifique de l'abonnement
  • Renvoie un booléen
subscribed($type = 'default', $price = null)
  • Obtient un abonnement par type
  • Retours Modèle d'abonnement ou null
subscription($type = 'default')
  • Obtient tous les abonnements
  • Renvoie la relation HasMany
  • Aucun paramètre requis
subscriptions()
  • Chèques pour paiement incomplet à l'abonnement
  • Renvoie un booléen
hasIncompletePayment($type = 'default')
  • $products : ID de produit unique ou tableau
  • $type : Type d'abonnement à vérifier
  • Renvoie un booléen
  • Vérifie si vous êtes abonné à l'un des produits donnés
subscribedToProduct($products, $type = 'default')
  • $prices : ID de prix unique ou tableau
  • $type : Type d'abonnement à vérifier
  • Renvoie un booléen
  • Vérifie si vous êtes abonné à l'un des prix donnés
subscribedToPrice($prices, $type = 'default')
  • Vérifie l'abonnement valide avec un produit spécifique
  • Renvoie un booléen
  • Plus spécifique que SubscribedToProduct
onProduct($product)
  • Chèques d'abonnement valide avec prix précis
  • Renvoie un booléen
  • Plus spécifique que SubscribedToPrice
onPrice($price)
  • Obtient les taux de taxe pour l'abonnement
  • Renvoie un tableau
  • Vide par défaut, destiné à être remplacé
taxRates()
  • Obtient les taux de taxe pour les articles d'abonnement individuels
  • Renvoie un tableau
  • Vide par défaut, destiné à être remplacé

Gère le trait du client

Identification du client

newSubscription($type, $prices = [])
  • Renvoie l'identifiant client Stripe ou null
  • Aucun paramètre requis
  • Renvoie la chaîne|null
onTrial($type = 'default', $price = null)
  • Vérifie si le client possède un identifiant Stripe
  • Renvoie un booléen
  • Aucun paramètre requis

Création et gestion des clients

hasExpiredTrial($type = 'default', $price = null)
  • Crée un nouveau client Stripe
  • Les options affectent les métadonnées du client, son adresse e-mail, son nom, etc.
  • Lève une exception si le client existe déjà
  • Renvoie l'objet client Stripe
onGenericTrial()
  • Mise à jour le client Stripe existant
  • Les options déterminent ce qui est mis à jour
  • Renvoie l'objet client Stripe mis à jour
  • Nécessite un client existant
scopeOnGenericTrial($query)
  • Obtient un client existant ou en crée un nouveau
  • Les options affectent la création si nécessaire
  • Renvoie l'objet client Stripe
  • Plus indulgent que createAsStripeCustomer
hasExpiredGenericTrial()
  • Mise à jour un client existant ou crée un nouveau client
  • Les options affectent à la fois la mise à jour et la création
  • Renvoie l'objet client Stripe
  • Combine la mise à jour et la création de fonctionnalités
scopeHasExpiredGenericTrial($query)
  • Synchronise les détails locaux avec Stripe
  • Renvoie l'objet client Stripe
  • Utilise les attributs du modèle pour la synchronisation
trialEndsAt($type = 'default')
  • Synchronise s'il existe ou crée un nouveau client
  • Les options affectent la création si nécessaire
  • Renvoie l'objet client Stripe
subscribed($type = 'default', $price = null)
  • Obtient l'objet client Stripe
  • Le paramètre Expand détermine les données associées
  • Renvoie l'objet client Stripe
  • Nécessite un client existant

Attributs du client

subscription($type = 'default')
  • Obtient le nom de la synchronisation Stripe
  • Renvoie la chaîne|null
  • La valeur par défaut renvoie $this->name
subscriptions()
  • Reçoit un e-mail pour la synchronisation Stripe
  • Renvoie la chaîne|null
  • La valeur par défaut renvoie $this->email
hasIncompletePayment($type = 'default')
  • Obtient le téléphone pour la synchronisation Stripe
  • Renvoie la chaîne|null
  • La valeur par défaut renvoie $this->phone
subscribedToProduct($products, $type = 'default')
  • Obtient l'adresse pour la synchronisation Stripe
  • Renvoie le tableau|null
  • Vide par défaut
subscribedToPrice($prices, $type = 'default')
  • Obtient les paramètres régionaux préférés pour Stripe
  • Renvoie un tableau
  • Vide par défaut
onProduct($product)
  • Obtient des métadonnées pour Stripe
  • Renvoie un tableau
  • Vide par défaut

Gestion des remises

onPrice($price)
  • Obtient une remise client actif
  • Retours Remise objet ou null
  • Aucun paramètre requis
taxRates()
  • Applique le coupon au client
  • Retour annulé
  • Nécessite un identifiant de coupon
priceTaxRates()
  • Applique le code promotionnel au client
  • Retour annulé
  • Nécessite un identifiant de code promotionnel
newSubscription($type, $prices = [])
  • Trouver le code promotionnel
  • Renvoie l'objet PromotionCode ou null
  • Les options affectent la recherche
onTrial($type = 'default', $price = null)
  • Trouve le code promotionnel actif
  • Renvoie l'objet PromotionCode ou null
  • Les options affectent la recherche

Gestion du solde

hasExpiredTrial($type = 'default', $price = null)
  • Obtient le solde client formaté
  • Renvoie la chaîne
  • Aucun paramètre requis
onGenericTrial()
  • Obtient le solde brut du client
  • Renvoie un entier
  • Aucun paramètre requis
scopeOnGenericTrial($query)
  • Obtient les transactions du solde client
  • Collection des retours
  • La limite affecte le nombre de retours
hasExpiredGenericTrial()
  • Crédits solde client
  • Retours CustomerBalanceTransaction
  • Le montant est requis
scopeHasExpiredGenericTrial($query)
  • Débite le solde client
  • Retours CustomerBalanceTransaction
  • Le montant est requis
trialEndsAt($type = 'default')
  • Applique l'ajustement de la balance
  • Retours CustomerBalanceTransaction
  • Le montant est requis

Gestion fiscale

subscribed($type = 'default', $price = null)
  • Obtient les identifiants fiscaux des clients
  • Collection des retours
  • Les options affectent la récupération
subscription($type = 'default')
  • Crée un nouveau numéro d'identification fiscale
  • Retours Stripe TaxId
  • Les deux paramètres requis
subscriptions()
  • Supprime le numéro d'identification fiscale
  • Retour annulé
  • Nécessite un numéro d'identification fiscale
hasIncompletePayment($type = 'default')
  • Trouve un numéro d'identification fiscale spécifique
  • Renvoie Stripe TaxId ou null
  • Nécessite un numéro d'identification fiscale

Vérification du statut fiscal

subscribedToProduct($products, $type = 'default')
  • Vérifie si le client n'est pas exonéré de taxe
  • Renvoie un booléen
  • Aucun paramètre requis
subscribedToPrice($prices, $type = 'default')
  • Vérifie si le client est exonéré de taxe
  • Renvoie un booléen
  • Aucun paramètre requis
onProduct($product)
  • Vérifie si l'autoliquidation s'applique
  • Renvoie un booléen
  • Aucun paramètre requis

Portail de facturation

onPrice($price)
  • Obtient l'URL du portail de facturation Stripe
  • Renvoie la chaîne
  • ReturnUrl facultatif
taxRates()
  • Redirections vers le portail de facturation Stripe
  • Renvoie la réponse de redirection
  • ReturnUrl facultatif

Trait Gérer les factures

Postes de facture

priceTaxRates()
  • Ajoute un élément de facture
  • Retourne l'article de facture Stripe
  • Description et montant requis
stripeId()
  • Ajoute un article basé sur le prix
  • Retourne l'article de facture Stripe
  • ID de prix requis

Création de facture

hasStripeId()
  • Crée une facture immédiate
  • Objet de facture de retour
  • Description et montant requis
createAsStripeCustomer(array $options = [])
  • Crée une facture basée sur le prix
  • Objet de facture de retour
  • ID de prix requis
newSubscription($type, $prices = [])
  • Génère une facture
  • Objet de facture de retour
  • Les options affectent la création
onTrial($type = 'default', $price = null)
  • Crée une facture Stripe
  • Objet de facture de retour
  • Les options affectent la création

Récupération des factures

hasExpiredTrial($type = 'default', $price = null)
  • Obtient la facture à venir
  • Renvoie un objet de facture ou null
  • Les options affectent l'aperçu
onGenericTrial()
  • Trouve une facture spécifique
  • Renvoie un objet de facture ou null
  • Nécessite un numéro de facture
scopeOnGenericTrial($query)
  • Trouve la facture ou lève une exception
  • Objet de facture de retour
  • Nécessite un numéro de facture
  • Lance NotFoundHttpException ou AccessDeniedHttpException
hasExpiredGenericTrial()
  • Obtient la facture PDF
  • Réponse de retour
  • ID requis, nom de fichier facultatif
scopeHasExpiredGenericTrial($query)
  • Obtient toutes les factures
  • Collection des retours
  • Les paramètres affectent le filtrage
trialEndsAt($type = 'default')
  • Obtient toutes les factures, y compris en attente
  • Collection des retours
  • Raccourci pour les factures (vrai)
subscribed($type = 'default', $price = null)
  • Obtient des factures paginées
  • Renvoie CursorPaginator
  • Plusieurs paramètres affectent la pagination

Observations clés

  1. Sensibilité des paramètres : les méthodes ont souvent des comportements différents en fonction de la présence des paramètres.
  2. Types de retour : les méthodes renvoient systématiquement des types spécifiques (booléens, objets, collections).
  3. Valeurs par défaut : De nombreux paramètres ont des valeurs par défaut raisonnables mais peuvent être remplacés.
  4. Interdépendance des traits : Les méthodes s'appuient souvent sur d'autres méthodes de traits.
  5. Intégration Stripe : La plupart des méthodes interagissent avec l'API de Stripe directement ou indirectement.

Meilleures pratiques

  1. Vérifiez toujours les exigences des paramètres pour le comportement souhaité.
  2. Gérez les exceptions potentielles, en particulier pour les méthodes *OrFail.
  3. Utilisez les indications de type appropriées lors de l'extension de ces traits.
  4. Testez minutieusement différentes combinaisons de paramètres.
  5. Envisagez de mettre en cache les appels fréquents pour réduire les requêtes API.

Conclusion

Ces caractéristiques constituent l'épine dorsale des fonctionnalités de Laravel Cashier. Comprendre l'étendue complète des méthodes disponibles et le comportement de leurs paramètres est crucial pour une mise en œuvre correcte. Consultez toujours la documentation officielle à côté de cette référence pour obtenir les informations les plus récentes.

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!

Déclaration:
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