Repetir um evento webhook cuja primeira tentativa morreu, e recusar um que o SDK não pode ler
Uma reivindicação perdedora em uma linha não processada sempre respondeu 500, então um evento cuja primeira tentativa falhou (uma corrida de restrição única den...
Apenas uma carga falhada começa dunning, e Stripe deve concordar antes de dunning atua
fatura.finalizado carrega status=aberto com um valor devido para cada fatura auto-carregada antes da cobrança é tentado, ea fatura o manipulador iniciou o relóg...
A guarda de reconstrução do mesmo compromisso nunca poderia disparar, e a verificação de digestão falhou em abrir
Ambas as proteções contra um destacamento que não coloca nada estavam inertes, então o gasoduto relatou dois empregos verdes enquanto as cápsulas permaneceram n...
Uma linha de catálogo que nomeie um aplicativo que esta compilação não pode resolver não está à venda
ServiceTypeConverter parou de jogar em um ID de aplicativo desconhecido e começou a resolvê-lo a nulidade, que é o que um serviço deve fazer — o enum navios den...
Um preço que Stripe nunca ouviu falar é uma falha, não um silêncio
O reconciliador comparou preços mapeados com o catálogo e retornou cedo sempre que nada foi mapeado. Assim, o catálogo ganhou um termo desde os preços foram cri...
Carregar o que a tela diz, e recusar em vez de fingir
Uma auditoria do console Plans & Billing contra chaves live Stripe encontrou a costura entre a tela e Stripe quebrado em todas as direções de uma vez, e silenci...
Prove a implantação por digest, não por tag
O commit anterior para `set image' sendo um no-op silencioso. Isto afirma que resultado: após o lançamento, a tag é resolvida para uma digest As cápsulas em exe...
A reconstrução do mesmo commit não implantou nada e relatou sucesso
A imagem é marcada com o commit SHA, então reconstruir o mesmo commit produz uma referência de imagem idêntica. `kubectl set image` então não muda nada, o A imp...
Deixe um lançamento terminar o que o velho pod estava fazendo
Implantes substituiu o único pod de cada serviço com nada para pegar os pedidos em Voo. Três configurações, aplicadas em toda a frota: - preStop dorme 10s ante...
Stop offering the internal platform-owner plan for sale
listPlansForMarket filtered on isActive alone, and active is not the same as on the menu. OWNER_UNLIMITED ("Platform Owner — Internal") is active, carries no pr...
O org da plataforma não é fechado pelo seu próprio catálogo
A plataforma org foi dito "Requer o KamoPBX Hosting add-on" por conta própria Tela do servidor de telefone, para um add-on que publica. Possui o catálogo plano...
Examine o e-mail de compartilhamento. pacote de repositório de faturamento
@EnableJpaRepositórios lista explicitamente pacotes, então MailboxBillingDayRepository foi invisível e o serviço recusou-se a começar imediatamente — apanhados ...
Fechar a revisão final do Webhook idempotence gap BL0
Encontrar 1 (Critical): uma reivindicação de perda de um evento de Stripe redimido provou que existia uma linha, não que a tentativa anterior terminou. A alegad...
Não criar chave efêmera por tentativa de Stripe
Segunda revisão (Relatório 17) considerou que "isto é uma criação?" é necessário, mas Não é suficiente. A questão que importa: pode este assunto legitimamente s...
As chaves pertencem apenas ao Stripe, não às mutações
Revisão da Fase 1 (Relatório 15) considerou a Critical: uma idempotência estável chave em uma atualização/cancel/attach/detach não é uma salvaguarda, é um bug. ...
Fazer cada Stripe escrever idempotent, e falhar a compilação em um novo sem uma chave
Um tempo- limite de soquete em uma gravação Stripe que realmente teve sucesso é indistinguível, do nosso lado, daquele que não o fez; sem chave de idempotência ...
Persistir a bandeira processada com o dinheiro escrito, não antes dele
markProcessed foi REQUIRES NOV, por isso comprometi- o dinheiro do manipulador escreve ainda não foram comprometidos no exterior suspenso transacção. JpaTransac...
Parar de vender add-ons o plano escolhido já inclui
O catálogo sempre registrou quais add-ons um plano pacotes, em **************************** — Negócios e transporte empresarial videoconferência, assistente de ...
Tamanho da cápsula acima de seu próprio teto de pilha JVM [skip ci]
A imagem inicia a JVM com -XX:MaxRAMPercentagem=70 -XX:+ Sempre PreTouch, assim o heap sozinho pode tomar 70% do limite do recipiente e pré-toque mantém cada co...
Cancelar para a cobrança futura e nada mais
Cancelar não toma mais uma bandeira "imediata", e nenhuma rota voltada para o cliente pode perguntar para um. Passando- o true terminou a assinatura no mesmo di...
Parar o envio de uma credencial compartilhada como padrão de configuração
A senha compartilhada da plataforma foi criada como o retorno para DB PASSWORD e MINIO ROOT PASSWORD, então ele viveu neste repo e na imagem construída, bem com...
Pare de revogar o acesso de faturamento de um membro ao adicioná- los em outro lugar
add() apagou a linha do membro em qualquer outra conta para satisfazer uma única global que já não existe. Adicionar alguém a uma segunda conta de faturamento a...
Deixe um sub-org alcançar a conta que paga por ele
ContaAssinatura deliberadamente separa o ordenante da organização cuja os membros consomem os assentos, e contas auto-provisionadas sentam-se no nível superior ...
Cobrar o que o catálogo diz, uma vez, para a quantidade certa
Cinco defeitos que todos moveram dinheiro real, mais o IDOR sub-recurso abaixo deles. Ciclos de faturamento. Os preços anuais foram enviados à Stripe à taxa de...
Verificar o modo deus contra a base de dados, não um cabeçalho forjado
ContaOrgScopeInterceptor curto-circuito cada org e membro verificar o cabeçalho X-God-Mode-Active e cópias de proxy de faturamento do kamo-internal que cabeçalh...
SQL somente para barataDB que o PostgreSQL rejeita
BarataDB soletra o tipo de texto STRING; PostgreSQL e YugabyteDB usam TEXTO. 25 moldes através de consultas nativas ainda emitiam CAST(x AS STRING) e ::STRING, ...
Dar a cada organização um limite real de transação
ArmazenamentoSnapshotSweep.catchUp transportado @Transactional(REQUIRES NEW) e foi chamado do mesmo feijão. Spring aplica @Transactional através de um proxy, en...
Forçar o auto- ou proprietário em uma conta, não apenas o limite de org
Seguimento do portal cross-org, agora que a regra é decidida: dentro de uma organização você pode gerenciar sua própria conta de faturamento, e um proprietário ...
Pare uma organização de chegar a outra organização de faturamento
/api/billing/accounts examina sua listagem pelo cabeçalho X-Org-Id, mas cada rota abaixo /{accountUid} pegou o id diretamente do caminho e nunca verificou quem ...
Resposta "é este vendível" do catálogo de aplicativos, não o enum
Disponibilidade tornou-se editável pelo operador em tempo de execução, então derivando-o do ServiceType.getStage() significa A publicação da MLOS em Apps e Recu...
Validar códigos adicionais antes que eles possam conceder um aplicativo
active addon codes foi escrito diretamente do corpo da requisição. Isso foi inofensivo enquanto nada lia. a coluna, mas agora é uma entrada de autorização: um c...
Ocultar aplicativos não lançados do catálogo de planos e faturamento
* * *************esergue a conta onde um cliente escolhe o que subscrever, por isso não deve oferecer um produto ainda na lista Não Disponível — a mesma regra d...
Mantenha o is-prefix no PlatformAccountSummary também
Mesmo perigo Lombok/Jackson como PlatformOrgRow: isTopLevel() perde seu `é` on serialização, então o DTO colocar `topLevel`/`platformProduct` no fio enquanto o ...
Mantenha o is-prefix no fio para o produto éTopLevel/isPlatform
Lombok gera isTopLevel() para um campo `booleano isTopLevel` e Jackson tira o prefixo `is`, então o endpoint ao vivo foi serialização `topLevel` e `platformProd...
Declare os correspondentes de segurança explicitamente para que o serviço possa iniciar
O serviço não foi implantado desde 2026-07-03; cada cápsula desde então caiu antes do contexto carregado: Este método não pode decidir se estes padrões são pad...
Endureça o download do kubectl contra a saída flácida [skip ci]
dl.k8s.io sobre a saída do corredor diminui intermitentemente no meio da transferência: curl: (56) OpenSSL SSL read: a descriptografia falhou ou o mac de regist...
Serialize Long IDs como strings para parar a perda de precisão org-id
Os IDs de Org são valores do CockroachDB unique rowid() que excedem o JS Max Safe Integer. BillingService foi serializá-los como JSON bruto números, então kamo-...
Registo de repositórios de sinais para o bean de apresentação de contadores
EsignMeterSubmissionService needs EsignUsageRecordRepository, but @EnableJpaRepositórios não escanearam com.kamo.z.shared.esign.repos, então o contexto falhou a...
Preços adicionais retrodimensionados com um medidor de faturamento
Stripe (>= 2025-03-31.basil) rejeita o legado use type+aggregate usage modelo medido ('preços medidos devem ser apoiados por metros'), então USAGE BASED add-on ...
Adicionar @JsonProperty to is*-prefixed boolean DTO fields
Lombok gera is-getters isXxx() para campos booleanos chamados isXxx. Jackson tira o principal 'é' de is-getters e serializa-los como 'xxx' em vez de 'isXxx', as...
Incluir contas-alvo de subscrição na lista de org
listForOrg agora também retorna contas cujas assinaturas visam o Pedido de org — não apenas as contas directamente detidas por ele. No multi-org modelar a conta...
Usem o código de identificação. getter primitivo
isOrganizaçãoO proprietário é um booleano primitivo no TeamMember, então o Lombok... o acessor gerado é isOrganizaçãoOwner() não getIsOrganizaçãoOwner(). Corrig...
Expor assinatura comercial em GET /assinaturas/atual
Quando não existir uma linha de espelhos Stripe, resolva o comércio ativo de org AssinaturaRecord (por exemplo, subvenções COMP), incluem pagamentoMétodo e Cara...
Resolver administrador de plataforma TeamMember sem instância frágil de
Como o que vês no transporte?
Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.