Rerulați un eveniment webhook a cărui primă încercare a murit, și refuzați unul SDK nu poate citi
O cerere pierdută pe un rând neprocesat întotdeauna a răspuns la 500, deci un eveniment a cărui primă încercare nu a reușit (o cursă unică-constrângere în inter...
Doar o acuzaţie eşuată începe să dureze, iar Stripe trebuie să fie de acord înainte ca Dunning să acţioneze
factura.finalizat poartă statutul=deschis cu o sumă datorată pentru fiecare factura automată înainte de încercarea taxei și factura Manipulatorul a pornit ceasu...
Paznicul cu acelaşi motor nu a putut trage niciodată, iar verificarea digerării a eşuat
Ambele protectii impotriva unei implementari care desfasoara nimic nu au fost inerte, asa ca conducta a raportat două locuri de muncă verzi în timp ce capsulele...
Un rând catalog de numire o aplicație această clădire nu poate rezolva nu este de vânzare
ServiceTypeConverter a încetat să mai arunce pe o aplicație necunoscută id și a început să o rezolve la nul, care este ceea ce un serviciu trebuie să facă cata...
Un preţ de care nu a auzit niciodată Stripe e o greşeală, nu o tăcere
Conciliatorul a comparat prețurile cartografiate cu catalogul și s-a întors mai devreme Când nimic nu era cartografiat. Deci, un termen catalogul a câștigat de ...
Încărcați ceea ce spune ecranul, și refuză mai degrabă decât pretinde
Un audit al consolei Plans & Billing împotriva tastelor striptease live a găsit cusătura între ecran și dungă rupt în fiecare direcție la o dată, și tăcut în To...
Dovedește implementarea prin digerare, nu prin etichetă
Comitatul anterior se oprește imaginea setată Acest lucru afirmă rezultat: după lansare, eticheta este rezolvată la digerare la registru și capsulele de rulare...
O reconstrucţie a aceleiaşi comiteri nu a desfăşurat nimic şi a raportat succesul
Imaginea este etichetat cu comite SHA, astfel reconstruirea aceeași comite produce o referință a imaginii identică. Desfăşurarea nu este niciodată atins, statu...
Să terminăm ce făcea vechiul pod
Desfășurările au înlocuit singura capsulă a fiecărui serviciu cu nimic pentru a prinde cererile Zbor. Trei setări, aplicate în întreaga flotă: - PreStop doarme...
Nu mai oferi planul intern al proprietarilor de platforme de vânzare
listePlanuriForMarket filtrat pe isActive singur, și activ nu este același cu pe meniul. Proprietarul UNLIMITED ("Platform Owner Rânduri de preț și este public...
Platforma org nu este poartata de propriul catalog
Platformei i s-a spus "Requires the KamoPBX Hosting add-on" pe cont propriu ecran telefon-server, pentru o adăugare pe ea publică. Acesta detine catalogul de p...
Scanează e-mail-ul comun. pachet depozit facturare
@EnableJpaRepositorii listează pachetele explicit, deci MailboxBillingDayRepository a fost invizibil și serviciul a refuzat să înceapă pur și simplu nu printr-...
Închideți decalajul de idempotență al webhook-ului BL0
Găsirea 1 (Critical): o cerere de pierdere doar pe un eveniment cu dungi relivrate s-a dovedit că există un rând, nu că încercarea anterioară s-a încheiat. O re...
Nu tasta efemerul per-attempt Stripe crează
Runda 2 de revizuire (Ruling 17) găsit "este aceasta o creaţie?" este necesar, dar Nu este suficient. Întrebarea care contează: poate acest subiect În mod legit...
Cheile aparţin doar pe Stripe creează, nu pe mutaţii
Runda 1 de revizuire (Ruling 15) a găsit critic: o idepotență stabilă Cheia de pe o actualizare/cancel/ataşare/detaşare nu este o protecţie, este o eroare. Aces...
Face fiecare Stripe scrie idepotent, și nu construi pe unul nou fără cheie
Un timeout pe o Stripe scrie care de fapt a reușit este de nedeslușit, din partea noastră, de la unul care nu a făcut; fără un cheie idempotency retry creează u...
Comite steagul procesat cu scrierea banilor, nu înaintea lui
markProcessed was REQUIRES NEW, so it commised procesed=real while the Banii handler scrie au fost încă neangajat în exterior suspendat tranzacţie. JpaTransacti...
Nu mai vinde add-ons planul ales include deja
Catalogul a înregistrat întotdeauna care adaugă pe un pachet de plan, în Nu-ţi face griji. Afaceri și întreprinderi transporta conferinţe video, asistentul AI,...
Dimensiune pod deasupra propriului său plafon gramada JVM [skip ci]
Imaginea pornește JVM cu -XX:MaxRAMPercentage=70 -XX:+ Întotdeauna PreTouch, astfel încât numai grămada poate lua 70% din limita containerului și pre-touch păst...
Anularea încetează facturarea viitoare și nimic altceva
Anulați nu mai ia un steag "imediat," și nici o rută cu vedere la client nu poate cere pentru unul. Trecând cu adevărat a încheiat abonamentul în aceeași zi în ...
Opriți transportul unui credibil comun ca un implicit de configurare
Parola comună a platformei a fost coaptă ca rezervă pentru DB PASSWORD și MINIO ROOT PASSWORD, așa că a trăit în acest repo și în imaginea construită, precum și...
Nu mai revoca accesul unui membru la facturare atunci când le adaugă în altă parte
adăugaţi () şters rândul membrului pe orice alt cont pentru a satisface un unic global care nu mai există. Adăugând pe cineva la un al doilea cont de facturare ...
Lasă un suborg să ajungă la contul care îi plăteşte
ContAbonare în mod deliberat separă plătitorul de organizația a cărei membrii consumă locurile, iar conturile autoprovocate se află la nivel superior KamoCRM or...
Încărcați ceea ce catalogul spune, o dată, pentru cantitatea potrivită
Cinci defecte care toate mutat bani reali, plus IDOR sub-resursa sub ele. Cicluri de facturare. Preţurile anuale au fost trimise lui Stripe la rata de stocare ...
Verifica modul Dumnezeu împotriva bazei de date, nu un antet falsificat
AccountOrgScopeInterceptor scurtcircuitat fiecare org și membru verifica pe X-God-Mode-Active Header brut, și kamo-internal de facturare proxy copii care header...
CockroachDB-doar SQL care PostgreSQL respinge
CockroachDB scrie tipul de text STRING; PostgreSQL și YugabyteDB folosesc TEXT. 25 de mulaje de-a lungul interogărilor native încă emiteau CAST (x AS STRING) și...
Oferă fiecărei organizații o limită reală de tranzacție
StocareSnapshotSweep.catchUp efectuat @Transactional (REQUIRES NEW) și a fost numit de la matura() pe aceeași fasole. Primăvara se aplică @Transacţional printr-...
Forţează-te pe cont propriu, nu doar pe graniţa org
Urmărirea porții de inter-org, acum că regula este decisă: în interiorul unei organizații puteți gestiona propriul cont de facturare, și un proprietar de organi...
Opriți o organizație ajunge la o altă organizație facturare
/api/bilaring/conturi domeniul său de aplicare listarea sa de antetul X-Org-Id, dar fiecare rută de dedesubt / {accountuid} a luat ID-ul direct de la calea și n...
Răspunsul "este acest sellable" din catalogul aplicației, nu enum
Availability a devenit operator-editable la runtime, astfel încât derivă din ServiceType.getStage () înseamnă publicarea MLOS în aplicații și caracteristici lăs...
Validarea codurilor adiționale înainte ca acestea să poată acorda o aplicație
codul activ addon coduri a fost scris direct din organismul de cerere. Asta a fost inofensiv în timp ce nimic nu a citit coloana, dar este acum o intrare de aut...
Ascunde aplicațiile neeliberate din catalogul Plans & Billing
****************************************************************************************************************************************************************...
Păstrează prefixul pe numele de fir al platformeiAccountSummary
Același Lombok/Jackson hazard ca PlatformOrgRow: isTopNovel() își pierde poziția de pe serializarea, astfel încât DTO a pus Frontend declarat PlatformAccountTi...
Păstrează prefixul pe fir pentru isTopLevel/isPlatformProduct
Lombok generează esteTopNivel() pentru o isTop benzi prefixul În timp ce clientul citește - Nu. ă Clientul ar fi citit nedefinit: Insignele Platformei și Prod...
Declară în mod explicit meciuri de securitate astfel încât serviciul să poată începe
Serviciul nu a mai fost implementat de la 2026-07-03; fiecare capsulă de la prăbuşire înainte de contextul încărcat: Această metodă nu poate decide dacă aceste...
Harden download kubectl împotriva egress fulg [skip ci]
dL.k8s.io peste ieşirea alergătorului scade intermitent la mijlocul transferului: curl: (56) OpenSSL SSL read: decriptare eșuată sau înregistrare proastă mac ca...
Serializa ID-uri lungi ca siruri de caractere pentru a opri pierderea de precizie org-id
Id-uri Org sunt CockroachDB unic rowid () valori care depășesc JS Max safe integer. BillingService a fost serializarea-le ca JSON brut numerele, deci JSON.parse...
Abonamentul plătit elimină termenul limită de încercare (plătit înlocuiește procesul)
Înregistrează repertoriile pentru linia de depunere a contorului
EsignMeterSubmissionService needs EsignUsageRecordRepository, but @EnableJpaRepositorii nu au scanat com.kamo.z.shared.esign.repos, astfel încât contextul nu a ...
Înapoi la preţurile add-on cu un Billing Meter
Stripe (>=2025-03-31.basil) respinge utilizarea moștenită type+splay usage model contorizat ('preţurile măsurate trebuie să fie susţinute de metri), astfel încâ...
Adăugați @JsonProperty la este*-prefix boolean DTO câmpurile
Lombok generează isXxx() is-getters pentru câmpurile booleane numite isXxx. Jackson fâşii de plumb "este" de la ist-geters şi le serializează ca 'xxx' mai degra...
Include conturile care vizează subscrierea în lista org
listaForOrg returnează acum și conturile ale căror abonamente vizează Orga solicitată nu numai conturile deținute direct de aceasta. În multiorg model de cont p...
Utilizați Utilizator.getName().formatFull() în loc de a elimina getNameFull()
Foloseşte-te de asta. getter primitiv
isOrganizationOwner este un boolean primitiv pe TeamMember, deci Lombok- Accesor generat este isOrganizationOwner () not getIsOrganizationOwner (). Repara compi...
Expune abonamentul comercial pe GET / Abonamente / curent
Atunci când nu există nici un rând oglindă dungi, rezolva comerțul activ org AbonamentRecord (de exemplu, granturi COMP), include metoda de plată și caracterist...
Ca ceea ce vezi de transport maritim?
Fiecare dintre aceste actualizări aterizează automat în spațiul de lucru. Începe gratuit și urmăriți-l crească săptămână după săptămână.