- Expédié
- 6 septembre 2026 à 21:39 UTC
- Auteur
- Kamo
- Commite
- 5cfc969
Un audit de la console Plans et Billing contre les clés rayées en direct a trouvé la couture entre l'écran et Stripe brisé dans chaque direction à la fois, et silencieux Tous. Aucune organisation n'avait jamais conclu d'abonnement payant, de sorte que tous les L'un d'entre eux aurait tiré sur le premier vrai client. CHARGE LE CLIENT CHARGÉ L'offre annoncée n'a jamais été appliquée. Les promotions étaient un concept d'affichage: résolus par PlanCatalogService, transporté vers le navigateur, frappé par le cartes de plan, décomptées dans la bannière - puis l'abonnement a été créé sans coupon, sans réduction et sans code de promotion. Un grep pour l'un des trois Au-delà du service, il n'a rien trouvé. StripePromotionService reflète l'habit promotion en tant que véritable coupon Stripe, portée avec l'application de l'article propre produit de sorte qu'il régne les sièges et PAS les ajouts qui les accompagnent à côté, C'est ce qui a toujours fait. Le coupon id code le pourcentage et la durée, donc l'édition du catalogue frappe un nouveau coupon au lieu de réutiliser silencieusement l'ancien taux. Les frais de démarrage n'ont jamais été facturés. Les deux plans payants portent 99 dollars par siège, donc a L'ordre de cinq places doit 495 dollars avant qu'un mois ne soit facturé. générer des factures de facture, ConsumerCheckoutService la facture - et cette voie, la Une organisation a en fait acheté, ne l'a facturé nulle part, donc le même plan coûte 495 dollars de moins selon la porte que le client a traversée. SetupFeeBiller le poste en tant que poste de facture en instance avant l'ouverture de l'abonnement, de sorte qu'il atterrit sur la première facture de cet abonnement, et demande SetupFees pour le montant de la sorte Un accord négocié (WAIVED, FLAT, PER-SEAT-OVERRIDE) est respecté. Une fois pour la compte sur le premier ordre, et par personne au fur et à mesure que l'équipe grandit. Les prix des rayures avaient dérivé à environ la moitié du catalogue. court-circuits sur une cartographie existante, donc un re-prix a changé chaque surface sauf Charge : Cours mensuel des entreprises, cotée à 119 dollars et facturée 72 dollars. Le seul recours était un Le point d'extrémité de plate-forme-admin personne n'avait appelé. Les achats vérifient maintenant la cartographie contre le catalogue et la repointe avant facturation, et un rapport de balayage nocturne dérive à travers le domaine. Le conciliateur refuse toujours de déménager des abonnés en direct, parce qu'il s'agit d'une décision commerciale plutôt que d'une réconciliation. Qu'est-ce qui a été accompli Aucune carte n'était requise et aucune n'a été récupérée. Stripe a ouvert l'abonnement avec Rien à facturer, il n'a été répondu qu'il était «-complet» - une réponse normale, pas une exception - et tout ce qui est en aval a été mis sur le marché: la rangée a été estampillée PAID, le procès était effacés, et le client a été informé que son plan avait été mis à jour sur un abonnement Stripe supprimerait dans la journée. Un abonnement payant nécessite désormais un paiement méthode, s'ouvre avec - donc un décodeur lance et la transaction revient à l'essai intacte et affirme un statut réel par la suite. Achat d'un plan non attribué à chaque siège de l'organisation. et les reconstruire sans être affectés, et rien n'a remis personne - y compris un achat qui a réussi. rééquilibreAbonnement déjà concilie les rangs de sièges dans Les deux directions, donc la suppression ne réconcilatéressait jamais quoi que ce soit; elle a disparu. Un add-on sans prix Stripe a été accordé gratuitement. souhaité ne pas être facturés" et poursuivi, tandis que le code à lui seul accorde l'application. Il est maintenant refuse. Ce que le client a-t-il dit Chaque refus se lisait comme suit : « Internal Server Error ». Le service n'avait pas de "ControllerAdvice", donc une douzaine de phrases soigneusement formulées, orientées vers le client - le refus de l'Entreprise, le plafond du siège, le protège-sert de l'envoi de courrier - est devenu la carrosserie par défaut de Spring. BillingExceptionHandler répond 400 avec le message d'une règle, 402 pour un décodeur, et une phrase générique plus une référence traçable pour toute autre chose, qui n'est jamais repris. Aucun courrier non rongé ne pourrait être livré. DunningNotifier posté à - qui n'existent pas; il appelle maintenant /api/email/templates/send, qui fait et est derrière InternalAuthFilter, avec le partage secret câblé à travers les manifestes. Les modèles atterrissent en kamo-shared-library 941c2421. Rien n'a dit à un propriétaire que le projet de loi de l'organisation avait échoué. n'alerte que pour le siège d'un membre et les groupes qu'ils gèrent - son pour un membre, qui ne peut pas agir, mais le propriétaire est exactement qui peut le faire. Porté à l'intention du propriétaire, de sorte que La règle initiale est toujours valable pour tous les autres. Les entreprises ont un prix ferme. Ses termes sont négociés et EnterprisePlanGuard refuse toute demande en la nommant, mais le catalogue a servi le 119/109/99 alors que Un site public a répondu "Custom" - une entreprise, deux réponses. Un plan CLIME arrive maintenant sans frais d'établissement, sauf si l'appelant peut effectivement le vendre. Aussi: les quantités d'insertion sont sur le fil, de sorte qu'un brouillon de console peut commencer par quoi l'abonnement tient effectivement plutôt qu'à partir d'une carte vide qui réinitialise le stockage bloque à un sauf. 282 cartes d'essai existantes; 15 cartes d'essai supplémentaires couvrant la dérivation des coupons, la redevance d'installation y compris les accords négociés, et à quoi ressemble un refus pour un client.