Because:
* Stripe's "basil" billing redesign — crossed by the acacia -> dahlia
API-version bump — reshaped the invoice, subscription, line-item,
discount, and payment-intent objects FxA relies on.
This commit:
* Pins `stripe` to 22.3.1 (from 17.4.0) and pins the apiVersion
'2026-06-24.dahlia' via a shared STRIPE_API_VERSION constant.
* Migrates every affected call site across the modern libs/payments/*
StripeClient stack and the legacy fxa-auth-server StripeHelper:
invoice.subscription -> parent.subscription_details.subscription,
invoice.payment_intent/charge -> payments[]/confirmation_secret,
subscription.current_period_* -> subscription-item level,
invoices.retrieveUpcoming -> invoices.createPreview, plus the basil
tax/discount/pricing reshape and the PromotionCode.coupon and branded
Decimal changes.
* Reads webhook-delivered invoices with a transitional dual-read (old +
new shapes) to survive the Stripe Dashboard API-version rollout window.
* Patches stripe to re-add the top-level `types` field it dropped as an
exports-only package, so the SDK resolves under TypeScript.
* Updates the hand-written Stripe factories and co-located specs and
fixtures to the new basil shapes.
Closes: PAY-3759