- Shipped
- June 10, 2026 at 4:24 AM UTC
- Author
- Kamo
- Commit
- bc82e78
#4 metering: - EsignMeterSubmissionService (@Scheduled daily): aggregates API-origin EsignUsageRecords per org+period; first 40/period included, the rest submitted as Stripe MeterEvents. Idempotent via reportedToStripe + the usage-record UID as the MeterEvent identifier (Stripe-side dedupe). Resolves the meter event name from the addon's actual Stripe price **************** so it matches whatever meter the price is bound to (fixes the naming mismatch). #5 consumer checkout: - ConsumerCheckoutService: Stripe Checkout Session (mode=subscription) against the product root's plan price (+ metered overage line for Business); records the AccountSubscription (source PAID) + SubscriptionMember + AccountLicense on completion and invalidates entitlements. - ConsumerSessionResolver: authenticates the buyer by their own *** cookie via Redis (never a client-set org header). - ConsumerCheckoutController POST **************** - StripeWebhookService now handles checkout.session.completed. Additive/inert until a consumer subscribes; the live charge needs a real card.