- Se descapó
- 6 de septiembre de 2026 a las 21:39 UTC
- Autor
- Kamo
- Compromit
- 5cfc969
Una auditoría de la consola Plans & Billing contra las llaves de la Franja en vivo encontró la costura entre la pantalla y Stripe roto en cada dirección a la vez, y silencioso en todos ellos. Ninguna organización había completado una suscripción de pago, así que cada uno de ellos habría disparado contra el primer cliente real. Lo que el CLIENTE se fue CHARGED La oferta anunciada nunca se aplicó. Las promociones eran un concepto de visualización: resuelto por PlanCatalogService, llevado al navegador, golpeado a través de la tarjetas de plan, contadas en el banner y luego se creó la suscripción sin cupón, sin descuento y sin código de promoción. Un gruñido para cualquiera de los tres Al otro lado del servicio no encontró nada. StripePromotionService refleja la vida promoción como un verdadero cupón de Stripe, con alcance.products al plan producto propio para que descuenta los asientos y NO los complementos que cabalgan a su lado, que es lo que **************** siempre ha hecho. El id de cupón codifica el porcentaje y la duración, por lo que editar el catálogo mentilla un nuevo cupón en lugar de reutilizar silenciosamente la vieja tasa. La cuota de puesta en marcha nunca se cobró. Ambos planes pagados llevan $99 por asiento, así que un El pedido de cinco asientos debe $495 antes de que se factú a un mes. calculaPrice lo cita, generar facturas de factura, ConsumerCheckoutService lo factura y este camino, el una organización realmente compra a través, la facturó en ninguna parte, por lo que el mismo plan Costó $495 menos dependiendo de la puerta por la que entrara el cliente. SetupFeeBiller lo publica como un artículo de factura pendiente antes de que se abra la suscripción, por lo que aterriza en esa suscripción es la primera factura, y le pide a SetupFees la cantidad de Se respeta el acuerdo negociado (WAIVED, FLAT, PER-SEAT-OVERRIDE). Una vez para el cuenta en primer orden, y por persona a medida que el equipo crece. Los precios de las rayas se habían desplazado a aproximadamente la mitad del catálogo. cortocircuitos en una asignación existente, por lo que un nuevo precio cambió todas las superficies excepto el cargo: Negocio cotizaba $119 y facturó $72. El único remedio era un endpoint de plataforma-admin que nadie había llamado. Compras ahora comprueban la asignación contra el catálogo y el nuevo punto antes de la facturación, y un barrido nocturno a la deriva a través de la finca. El conciliador aún se niega a mover a los suscriptores en vivo, porque se trata de una decisión comercial y no de reconciliación. Qué pasaría cuando se ha hecho realidad No se requirió ninguna tarjeta y ninguna fue recogida. Stripe abrió la suscripción con Nada que cargar, contestado, contestado, una respuesta normal, no una excepción. y todo lo que se llevó: la fila estaba estampada PAID, el juicio fue borradas, y se le dijo al cliente que su plan se actualizó sobre una suscripción Stripe borraría dentro del día. Una suscripción de pago requiere ahora un pago método, se abre con ******************* por lo que un decodificador tira y la transacción retrocede con el juicio intacto, y afirma un estado vivo Después. Comprar un plan sin asignar cada asiento de la organización. create() borrado cada licencia y reconstruirlos sin asignar, y nada puso a nadie de vuelta, incluyendo una compra que tuvo éxito. reequilibraSuscripción ya concilia filas de asientos en ambas direcciones, por lo que la eliminación nunca fue reconciliar nada; se ha ido. Un complemento sin precio de Stripe se concedió gratis. desiredItems logged "será no ser facturado" y continuó, mientras que el código por sí solo otorga la aplicación. Ahora se niega. Lo que el CUSTOMER estaba TOLD Cada negativa decía "Erroso de servidor interno". El servicio no tenía un servicio de ControllerAdvice, para que una docena cuidadosamente redactadas, frases con el cliente-configuradas - la negativa de la empresa, el techo del asiento, el buzón adicional de guardia se convirtió en el cuerpo por defecto de primavera. BillingExceptionHandler responde a 400 con el mensaje para una regla, 402 para decodificador, y una oración genérica más una referencia trazable para cualquier otra cosa, que nunca se hace eco. No se podía entregar ningún correo. DunningNotifier publicado en ************* que no existe; ahora llama /api/email/templates/send, que hace y está detrás de InternaAuthFilter, con el secreto compartido cableado a través de los manifiestos. Las plantillas aterrizan en kamo-shared-library 941c2421. Nada le dijo a un dueño que el proyecto de ley de su organización había fracasado. /self/alerts raised alertas sólo para el propio asiento y grupos de un miembro que manejan el sonido para un miembro, que no puede actuar, pero el dueño es exactamente quien puede. Alcance al propietario, así que el La regla original sigue teniendo para todos los demás. Enterprise tenía un precio firme. Sus términos se negocian y EnterprisePlanGuard rechaza cualquier petición de nombrándola, pero el catálogo servía 119/109/99 mientras que el El sitio público decía "Custom" - una compañía, dos respuestas. Llega ahora un plan de la CUSTOM sin tarifa y sin tarifa de configuración a menos que el llamante pueda venderlo. También: las cantidades adicionales están en el alambre, por lo que un borrador de consola puede comenzar de qué la suscripción en realidad se mantiene en lugar de de un mapa vacío que reinicia el almacenamiento bloques a uno en salvado. 282 pruebas existentes pasan; 15 añadidas que cubren la derivación del cupón, la tarifa de configuración incluyendo acuerdos negociados, y cómo es una negativa a un cliente.