Páginas Ativas e Vazios no diretório org da plataforma
A aba Organizações do console agora se divide em sub-tabs Ativos e Void. A organização nula é orgs.is active = FALSE (definido pelo vazio do SecurityService end...
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...
A taxa de inicialização de um plano, e a oferta ao vivo, no fio
PlanDto transportava apenas a taxa recorrente, de modo que cada superfície citando um plano citou um preço cliente não seria cobrado: a taxa de inicialização do...
Um ponto final atrás da página do próprio plano do cliente
GET /api/billing/self/plan responde tudo /myplan renders: o plano, o que o organização pode realmente usar, o catálogo para comparar, assentos e sua lista, arma...
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...
Bill a taxa de inicialização em ambas as rotas para um plano, e registrar termos negociados
Duas rotas alcançam o mesmo plano e apenas uma delas iria cobrar o novo Taxa de arranque por assento. Uma encomenda escrita através do serviço de assinatura, qu...
Fechem todas as buscas e executem duas cápsulas
BillingService correu um pod e suas sete varreduras programadas estavam corretas apenas por causa dele. Ali. é nenhum ShedLock em qualquer lugar nesta plataform...
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...
Servir a oferta de corrida, e dizer se um assento é realmente PAID para
Adiciona GET /markets/{id}/promoção. Não havia nenhuma maneira de uma superfície de compra no aplicativo para saber que uma oferta estava em andamento — o site ...
Contar o prazo de três anos, e citar a sua taxa para o console
BillingCycles ganha TRIENNIAL, expresso à Stripe como três ANOS em vez de trinta e seis meses para que a renovação acompanhe o aniversário de inscrição — a mesm...
Linhas por servidor no resumo das extensões
A aba extensões do servidor de telefone mostrou a figura de organização e nada mais, então um servidor KamoPBX vazio exibiu "21 extensões billable - $63.00 / mê...
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...
Recusar a subscrição da Enterprise
A Enterprise está negociada. Esconder o preço é apresentação; esta é a limite. Um pedido que nomeie o plano Enterprise é recusado, a menos que o chamador porçõe...
Bill telefone serviço pela extensão
PreçosModelo.PER EXTENSÃO, sua própria chave de quantidade reservada, um alocador, um reconciliador noturno, um portão de remoção e a API sumária - o gêmeo do t...
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 ...
Reconstruir contra a biblioteca do kamo- partilhada actual
CI clona compartilhamento de lib no tempo de construção da imagem. Este serviço foi construído pela última vez antes compartilhamento-lib ganhou GMAIL PERSONAL ...
Bill e-mail por caixa de correio, reconciliado durante a noite
Quantidade é computada pelo servidor sob uma chave reservada que um corpo de pedido não pode alcançar, e empurrado através do caminho emenda existente — assim S...
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...
Prove que a biblioteca HQL analisa no Hibernate este serviço é executado
builds kamo-shared-library on Boot 3.3.4 / Hibernate 6.5; BillingService runs Bota 3.1.5 / Hibernate 6.2.13. Os próprios testes HQL da biblioteca passam vacuous...
Fazer um evento Stripe repetido um no-op
Adiciona BillingWebhookEventClaimService em seu próprio feijão, com REQUIRES NOVO em todos os métodos, e fios-lo em processoEvento à frente do interruptor de de...
Pin o cabeçalho opcional da assinatura e cobrir todos os três ramos de falha para vazamentos do corpo
Biblioteca compartilhada com Pin kamo 1.6.0
A biblioteca mudou-se para 1.6.0 enquanto cada consumidor permaneceu no 1.5.0. IC do consumidor constrói a biblioteca a partir de um clone fresco em um frio ~/....
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 ...
Publicar a conversão paga para organizações rastreadas
Ambos os caminhos que selo BillingSourceType.PAID agora publicar marketing.visitor.pay, porque gancho apenas um silenciosamente perde metade do tráfego — Accoun...
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...
Decida o acesso à plataforma com o resolvedor compartilhado
@PlatformAdminSomente agora nomeia a plataforma certa que ela requer (por omissão para GESTÃO ORGANIZAÇÕES, que é sobre o que é a superfície da plataforma deste...
Transportar a data de renovação da cobertura e das cargas úteis do grupo
Ambas as superfícies agora reportam o PeriodEnd atual e o cancelamentoAtPeriodEnd. A data é o que uma confirmação de cancelamento realmente precisa dizer — "voc...
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...
Um plano por organização, um teto de 25 lugares Enterprise, e uma maneira de parar de pagar
O plano é agora uma decisão de nível de organização e nada mais pode sobrepujá-lo. Deixar um auto-pagador ou um gerente de grupo escolher suas próprias leituras...
Deixe o plano de um grupo ser cancelado, e pare de pagar em dobro por uma pessoa
Três lacunas no último envio: Um grupo com um plano nunca poderia ser removido. delete () recusa enquanto um live assinatura existe — correto, uma vez que a li...
Fazer os grupos de faturamento trabalhar fim a fim, e parar de cobrar auto-pagamento por nada
Um grupo agora pode reunir pessoas, comprar um plano no cartão de seu próprio gerente, e mão Os seus lugares fora. Nada disso existia: as únicas operações foram...
Reconstruir contra a tabela de grupos de pagamentos renomeada
A entidade mudou de billing groups para billing pay groups depois que ela saiu o primeiro é uma mesa de legado vivo com uma forma diferente. Este serviço ainda ...
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...
Diga às pessoas que o seu pagamento falhou, e manter a assinatura para baixo
O dunning que não existia. failure.payment failed escreveu uma linha e retornou: nenhum email, nenhuma bandeira, nenhuma alteração de estado, e billing.email-se...
Deixe um membro comprar seu próprio assento, e fechar um buraco corpo-parâmetro
O auto-pagamento não tinha rota dentro da consola. Tudo na superfície de faturamento é em forma de conta — você já deve ter uma linha ContaMembro antes de Plano...
Política de org e APIs de grupos de faturamento
Quem dentro de uma organização pode pagar Kamo é agora responsável e settable. Ambos as rotas são org-scoped e, portanto, deliberadamente fora /api/billing/acco...
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.