Coarte lo que dice el catálogo, una vez, por la cantidad correcta

FixBillingService
Shipped
10 de agosto de 2026 a las 23:54 UTC
Author
Kamo
Commit
c54414c

Cinco defectos que movieron dinero real, más el sub-recurso IDOR debajo de ellos. Ciclos de facturación. Los precios ANUAL se enviaron a Stripe a la tarifa almacenada al mes un intervalo de AO, por lo que un plan sembrado como "$28/mo anual" facturó $28 una vez al año 12 veces. QUARTERLY y SEMI-ANNUAL mapeado a un intervalo MONTH y nunca efecto intervalo.cuenta, a pesar de un comentario afirmando lo contrario, facturando el completo la cantidad de período cada mes. BillingCycles ahora es el dueño de la conversión y los documentos los dos convenios de precios que la base de código tiene genuinamente: SuscripciónPlanPrice lleva una tasa por mes, ************* un total. Modelo de precios. Cada complemento se facturaba en cantidad = asientos, independientemente de su pricingModel, por lo que el complemento de almacenamiento de toda lana costó 25x en un org de 25 asiento, y porque Stripe rechaza una cantidad en un precio medido, incluyendo que hizo el suscripción entera crea lanzamiento. Cantidad sigue el modelo: asientos para PER-SEAT, 1 para FLAT, ausente para USAGE-BASED, saltado por ONE-TIME. Planifica cambios. Las publicaciones de la consola crean () para "Change Plan"; crear () llamado Suscripción.crear incondicionalmente y sobrescribe el identificador almacenado, dejando el anterior Suscripción de Stripe en vivo y sin referencia facturada dos veces, para siempre. Es ahora modifica la suscripción existente cuando hay una. actualización() ganó el plan cambio había estado desechando silenciosamente, y reconcilia cada elemento de línea más bien que sólo los artículos[0], que habían dejado cantidades adicionales congeladas en cualquier momento El conteo estaba el día en que se abrió la suscripción. Autorización adicional. actualización() escribió addonCodes directamente del órgano de solicitud, el agujero exacto auto-grante create() se endurecía contra: un llamante de nivel GRATIS podría enviar "addonCodes":["MLOS"] - y dar el titular de la aplicación hipotecaria, sin facturar. Ambos caminos ahora pasan por resoluciónAddonCodes. Asientos. asignación () sólo preguntó si existía una fila UNASSIGNED, y las filas eran nunca destruyó cuando el conteo de asientos se encogió, así que un org que cortó 10 asientos a 3 podría volver a firmar los diez. Ahora comprueba la capacidad tanto en la nueva como en la rama de reactivación, se niega a emitir asientos en una suscripción caverdeada, y asegurarse de que SeatRows reclame ranuras de repuesto. Una suscripción de Stripe cancelada o no ahora lava sus licencias. El webhook escribió el estatus y se detuvo, así que los miembros mantener las características pagadas indefinidamente. Autorización. Demostrando la propiedad de la propiedad de "accountUid" era todo el cheque; manejadores entonces cargaron suscripciones y licencias por su propio identificador y nunca comparados, así que emparejándose de su propia cuenta id con un UUID extranjero canceló el pago de otra persona suscripción o revocó su asiento. Encuadernado centralmente en el interceptor por lo que las rutas añadidos más tarde están cubiertos por defecto. Añade las primeras pruebas sobre la conversión de precios, que no tenían ninguna.

All changes

Como lo que ves enviaste?

Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.

Arranzar gratis para siempreVer Precios