docs(stripe): document real Stripe TEST-mode validation results
PHASE9_1_STRIPE_TEST_VALIDATION.md rewritten from BLOCKED to the real, proven results: a real Stripe TEST Checkout, a real TEST payment at the founder-approved $399 Founding Cohort price, a genuine signed webhook, the existing registration->enrollment conversion, a real duplicate-delivery proof, a real automated abandoned-checkout proof, a real refund with the non-cascade rule reconfirmed, full Stripe<->RootNode reconciliation IDs, and the one real defect found and fixed. STRIPE_INTEGRATION_RUNBOOK.md updated (real-Stripe local testing is no longer 'not yet exercised'; notes the no-sudo Stripe CLI install path and --api-key/--print-secret usage). WINTER_BREAK_LAUNCH_CHECKLIST.md: Stripe TEST validation checked, price checked ($399 launch / $449 retail per Chase directly), live-mode items correctly still unchecked. PHASE9_COMMERCE_AND_LAUNCH.md's Phase 9.1 addendum updated to reflect completion.
This commit is contained in:
@@ -72,27 +72,31 @@ To simulate a **failed payment** or **abandoned checkout**, use `eventType:
|
||||
at all; wait past `REGISTRATION_RESERVATION_TIMEOUT_MINUTES`, or lower it for a faster local
|
||||
test).
|
||||
|
||||
## Local testing against real Stripe TEST mode (once credentials exist)
|
||||
## Local testing against real Stripe TEST mode
|
||||
|
||||
Not yet exercised in this repo — no Stripe account/credentials have been provided as of Phase
|
||||
9.1 either (see `docs/PHASE9_1_STRIPE_TEST_VALIDATION.md` for the exact search performed and
|
||||
what's needed). Once they exist, `platform/test/stripe-integration-test.js` (added in Phase 9.1)
|
||||
automates most of the steps below — set `RUN_STRIPE_INTEGRATION_TEST=true` plus
|
||||
`STRIPE_SECRET_KEY`/`STRIPE_WEBHOOK_SECRET`/`OWNER_EMAIL`/`OWNER_PASSWORD` and run it; it refuses
|
||||
to run against a live-mode key and makes zero Stripe network calls unless explicitly enabled.
|
||||
Manually, or to understand what that script does:
|
||||
**Exercised for real in Phase 9.1** — a real Stripe TEST Checkout, a real TEST payment, a real
|
||||
signed webhook, and the full registration→enrollment conversion were all proven this way; see
|
||||
`docs/PHASE9_1_STRIPE_TEST_VALIDATION.md` for the full result and the one real defect it
|
||||
exposed and fixed. `platform/test/stripe-integration-test.js` automates most of the steps below
|
||||
— set `RUN_STRIPE_INTEGRATION_TEST=true` plus `STRIPE_SECRET_KEY`/`STRIPE_WEBHOOK_SECRET`/
|
||||
`OWNER_EMAIL`/`OWNER_PASSWORD` and run it; it refuses to run against a live-mode key and makes
|
||||
zero Stripe network calls unless explicitly enabled. Manually, or to understand what that script
|
||||
does:
|
||||
|
||||
1. Create (or use an existing) Stripe account, switch to **Test mode** in the dashboard.
|
||||
2. Copy the test-mode **Secret key** (`sk_test_...`) into `STRIPE_SECRET_KEY`.
|
||||
3. Install the [Stripe CLI](https://stripe.com/docs/stripe-cli) and run:
|
||||
3. Install the [Stripe CLI](https://stripe.com/docs/stripe-cli) (a prebuilt binary from
|
||||
https://github.com/stripe/stripe-cli/releases works with no `apt`/sudo needed — this is how
|
||||
Phase 9.1 installed it, to `~/.local/bin/stripe`) and run:
|
||||
```bash
|
||||
stripe login
|
||||
stripe listen --forward-to localhost:4200/api/webhooks/payment
|
||||
stripe listen --api-key sk_test_... --forward-to localhost:4200/api/webhooks/payment
|
||||
```
|
||||
The CLI prints a webhook signing secret (`whsec_...`) — set that as `STRIPE_WEBHOOK_SECRET`
|
||||
for the duration of the local session (it's ephemeral per `stripe listen` run; a real
|
||||
deployment instead creates a permanent webhook endpoint in the Stripe dashboard and uses ITS
|
||||
signing secret).
|
||||
No `stripe login` needed when passing `--api-key` directly (useful in a headless/agent
|
||||
session with no browser to complete an OAuth flow). The CLI prints a webhook signing secret
|
||||
(`whsec_...`) — set that as `STRIPE_WEBHOOK_SECRET` for the duration of the local session
|
||||
(it's ephemeral per `stripe listen` run; a real deployment instead creates a permanent
|
||||
webhook endpoint in the Stripe dashboard and uses ITS signing secret). Add `--print-secret`
|
||||
to retrieve just the secret without leaving the listener running.
|
||||
4. Set `PAYMENT_PROVIDER=stripe` and restart the API.
|
||||
5. Drive the checkout flow through steps 2-4 of `docs/WEBSITE_REGISTRATION_AND_CHECKOUT.md` — you
|
||||
now get back a REAL `checkout_url`. Open it in a browser and pay with a Stripe test card
|
||||
|
||||
Reference in New Issue
Block a user