Recorren un evento webhook cuyo primer intento murió, y rechaza uno que el SDK no puede leer
Un reclamo perdedor en una fila sin procesar siempre respondió 500, por lo que un evento cuyo primer intento fracasó (una carrera de constorza única dentro de l...
Sólo una carga fallida comienza aburrido, y Stripe debe ponerse de acuerdo antes de los actos de dunning
factura.finalizado lleva el estado=abrir con una cantidad adeudada por cada factura autocargada antes de que se intente la carga, y la factura el encargado come...
El guardia del mismo compromiso-reconstruido nunca pudo disparar, y el chequeo de digestión falló abierto
Ambas protecciones contra un despliegue que no despliega nada fueron inertes, por lo que el oleoducto reportó dos empleos verdes mientras las vainas se quedaban...
Una fila de catálogos nombrando una aplicación que esta compilación no puede resolver no está a la venta
ServiceTypeConverter dejó de tirar un identificador de aplicaciones desconocida y comenzó a resolverla a null, que es lo que un servicio debe hacer en los barco...
Un precio de la que Stripe nunca ha oído oír es una falta, no un silencio
El conciliador comparó los precios de los precios con el catálogo y regresó temprano siempre que nada fuera mapeado. Así que un término que el catálogo había ga...
Carga lo que dice la pantalla, y rechaza en lugar de fingir
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 ve...
La tarifa de inicio de una plan, y la oferta en vivo, en el alambre
PlanDto llevaba sólo la tasa recurrente, por lo que cada superficie citando un plan cotizaba un precio el cliente no se cobraría: La cuota de inicio de KamoCRM ...
Un punto final detrás de la propia página del plan del cliente
GET /api/billing/self/plan responde todo /myplan renders: el plan, qué la organización puede realmente utilizar, el catálogo para comparar con los asientos, y s...
Deba el despliegue por digestión, no por etiqueta
El commit anterior se detiene la imagen de conjunto siendo un silencioso sinop. Esto afirma lo Resultado: después del despliegue, la etiqueta se resuelve a un c...
Una reconstrucción del mismo compromiso no desplegó nada y reportó éxito
La imagen está etiquetada con el commit SHA, por lo que reconstruir el mismo commit produce una referencia de imagen idéntica. "kubectl set image". entonces no ...
Billar la tarifa de arranque en ambas rutas a un plan, y registrar términos negociados
Dos rutas llegan al mismo plan y solo una de ellas iba a cobrar el nuevo cuota de inicio por asiento. Un pedido de venta a través de SubscriptionService, que nu...
Cierra cada barrido de movimiento de dinero, y dirige dos vainas
BillingService corrió una vaina y sus siete barridos programados fueron correctos sólo por ello. Ahí no es ShedLock en ninguna parte de esta plataforma, así que...
Deja que un rollo termine lo que la vieja vaina estaba haciendo
Los despliegues sustituyeron a la única cápsula de cada servicio sin nada para captar las solicitudes en vuelo. Tres ajustes, aplicados en toda la flota: - pre...
Deja de ofrecer el plan interno de plataforma-propior para la venta
listaPlansForMarket filtrado en isActive solo, y el activo no es el mismo que en el menú. OWNER-UNLIMITED ("Propietario de Platform interno") está activo, lleva...
Sirviar la oferta de running, y decir si un asiento es realmente PAID para
Añade GET /markets/-id-/promotion. No había manera de que una superficie de compra en la aplicación se hiciera a sabe que una oferta estaba funcionando en todo ...
Bill el mandato de tres años, y cotiza su tasa a la consola
BillingCycles gana TRIENNIAL, expresado a Stripe como tres años en lugar de Treinta y seis meses para que la renovación rastree el aniversario de la inscripción...
Líneas de perserva en el resumen de extensiones
La pestaña de extensiones del servidor telefónico mostraba la figura de toda la organización y nada más, por lo que un servidor KamoPBX vacío mostró "21 extensi...
La plataforma org no está ardada por su propio catálogo
A la plataforma se le dijo "Requiere el complemento KamoPBX Hosting" por su cuenta Pantalla de teléfono-servidor, para un complemento que publica. Es propietar...
Rechaza una suscripción a la empresa de autoservición
La empresa está negociada. Esconder el precio es presentación; este es el - frontera. Se rechaza una solicitud de nombre del plan Enterprise a menos que el que ...
Servicio telefónico de facturas por extensión
PricingModel.PER-EXTENSION, su propia clave de cantidad reservada, un alicador, un reconciliador nocturno, una puerta de eliminación y la API de resumen - el ge...
Escanear el paquete de repositorio de correo electrónico compartido.billing
EnableJpaReposiries lista los paquetes explícitamente, por lo que MailboxBillingDayRepository era invisible y el servicio se negó a empezar de plano. no por nin...
Reconstruir contra la actual biblioteca compartida de kamo
CI clones compartidos-lib a la hora de compilación de imágenes. Este servicio fue construido por última vez antes compartidas ganaron GMAIL-PERSONAL y OUTLOOK-P...
Bill e-mail por buzón, reconciliado cada noche
La cantidad es computarizado en el servidor bajo una clave reservada, un órgano de solicitud no puede llegar, y empujado a través de la ruta de enmienda existen...
Cierra la brecha de idempotencia web encontraba la revisión final de BL0
Encontrando 1 (crítico): una reclamación perdedora en un evento de Stripe entregado solamente había una fila probada, no que el intento anterior terminara. A re...
No teclear la clave por-a-tomoto por-tomoto Stripe crea
Revisión de la Ronda 2 (Ruling 17) encontrado "es esto un create?" es necesario, pero no es suficiente. La cuestión que importa: este tema puede legítimamente s...
Las llaves pertenecen a Stripe crea solamente, no a mutaciones
Revisión de la Ronda 1 (Ruling 15) encontró el Crídico: una idempotencia estable clave en una actualización/cancela/attach/detach no es una salvaguardia, es un ...
Haz que cada Stripe escriba idempotente, y falle la construcción sobre una nueva sin una llave
Un tiempo de espera en un Stripe escribir que realmente tuvo éxito es indistinguible, de nuestro lado, de uno que no lo hizo; sin un llave idempotencia el reini...
Comete la bandera procesada con el dinero escribir, no por delante de ella
markProcessed fue REQUIRES-NEW, por lo que cometió procesado=true mientras que el Los escritos de dinero del manejador seguían sin comprometerse en el exterior ...
Deve la biblioteca HQL analiza en el Hibernate este servicio realmente funciona
La biblioteca compartida de kamo se basa en Bota 3.3.4 / Hibernate 6.5; BillingService se ejecuta Bota 3.1.5 / Hibernate 6.2.13. Las propias pruebas HQL de la b...
Haz de un evento de rayas reproducido un no-operación
Añade BillingWebhookEventClaimService en su propio frijol, con REQUIRES-NEW encendido Cada método, y lo conecta en procesoEvent delante del interruptor de despa...
Pin la cabecera de la firma opcional y cubre las tres ramas de falla para las fugas corporales
Answer Stripe webhooks con el estado correcto y nunca se hace eco de una excepción
Pin kamo-shared-library 1.6.0
La biblioteca se trasladó a 1,6.0 mientras todos los consumidores se quedaron en 1.5.0. AC de consumo construye la biblioteca desde un clon fresco en un frío ./...
Deja de vender complementos que el plan elegido ya incluye
El catálogo siempre ha registrado qué complementos de un plan paquetes, en ******************* . Negocios y transporte empresarial videoconferencias, el asisten...
Publicar la conversión pagada para organizaciones rastreadas
Ambos caminos que estampan BillingSourceType.PAID ahora publican marketing.visitor.pagado, porque enganchar sólo uno pierde silenciosamente la mitad del tráfico...
Tamaño la vaina por encima de su propio techo de púrcim JVM [suelta ci]
La imagen comienza la JVM con -XX:MaxRAMPercentaje=70 -XX:-SiemprePreTouch, por lo que el solo puede tomar el 70% del límite de contenedores y pretocar mantiene...
Decide el acceso de la plataforma con el solucionador compartido
PlatformAdminSólo nombra la plataforma correcta que requiere (por defecto MANAGE-ORGANIZACIONES, que es de lo que se trata la superficie de la plataforma de est...
Llegar la fecha de renovación de la cobertura y las cargas útiles grupales
Ambas superficies informan ahora de la corrientePeriodEnd y cancelanAtPeriodEnd. La fecha es lo que una confirmación de cancelación en realidad necesita decir "...
Cancelación detiene futuras facturas y nada más
Cancelar ya no toma una bandera "inmediata", y ninguna ruta orientada al cliente puede pedir para uno. Pasando la verdad terminó la suscripción el mismo día mie...
Un plan por organización, un techo de 25 sesos y una forma de dejar de pagar
El plan es ahora una decisión a nivel de organización y nada más puede anularla. Dejar que un autopago o un gerente de grupo escojan sus propias lecturas como u...
Deje que el plan de un grupo sea cancelado, y deje de pagar dos veces por una persona
Tres huecos en lo que se envió último: Un grupo con un plan nunca podría ser eliminado. suscripción existe correcta, ya que la fila de grupo es lo único que ap...
Hacer que los grupos de facturación funcionen a extremo, y dejar de pagar por cuenta propia por nada
Un grupo ahora puede reunir a la gente, comprar un plan en la propia tarjeta de su gerente, y la mano sus asientos fuera. Nada de eso existía: las únicas operac...
Reconstruir contra la rebautizada mesa del grupo de pago
La entidad pasó de los grupos de facturación a los grupos de facturación después de que resultó El primero es una tabla heredada en vivo con una forma diferente...
Deja de enviar una credencial compartida como un defecto de configuración
La contraseña compartida de la plataforma fue horneada como la caída para DB-PASSWORD y MINIO-ROOT-PASSWORD, por lo que vivió en este repo y en la imagen constr...
Dile a la gente que su pago fracasó, y aguanta la suscripción
El dunning que no existía. invoice.payment.falleó una fila y devolvió: sin correo electrónico, sin bandera, sin cambio de estado, y Billing.email-serv-url fue c...
Deja que un miembro compre su propio asiento, y cierre un agujero de parámetro corporal
El autopago no tenía ruta dentro de la consola. Todo en la superficie de facturación es en forma de cuenta, ya debes tener una fila de AccountMember antes de lo...
Política de Org y grupos de facturación APIs
Quien dentro de una organización puede pagar a Kamo ahora es responsable y fijamente. Ambos las rutas son org-scoped y, por lo tanto, deliberadamente fuera /api...
Default de la org de objetivo de una nueva suscripción a la que llaman's
Una primera compra no tiene suscripción existente para copiar el objetivo de, y exigirlo incondicionalmente es lo que hizo crear uno de la consola imposible. Un...
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.