From 21e4ac512402508bb2ab57ebc705343bbfa3c233 Mon Sep 17 00:00:00 2001 From: Samir Boulahtit Date: Fri, 17 Apr 2026 23:04:22 +0200 Subject: [PATCH] =?UTF-8?q?docs(loyalty):=20update=20launch=20plan=20?= =?UTF-8?q?=E2=80=94=20Google=20Wallet=20already=20deployed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clarify Step 2: Google Wallet service account, Docker mount, and env vars are already deployed on Hetzner (per Step 25 of server setup doc). Only verification needed at deploy time. Add Step 9 (post-launch): Google Wallet production access request. Passes work in demo mode for test accounts at launch. Production approval is a Google console step (1-3 business days, no code changes). Google reviews the Issuer (platform), not individual merchants. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../loyalty/docs/production-launch-plan.md | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/app/modules/loyalty/docs/production-launch-plan.md b/app/modules/loyalty/docs/production-launch-plan.md index ccee779b..6d3be423 100644 --- a/app/modules/loyalty/docs/production-launch-plan.md +++ b/app/modules/loyalty/docs/production-launch-plan.md @@ -331,12 +331,16 @@ Everything below must be completed before going live. Items are ordered by depen - [ ] Verify: 20 rows created (5 templates × 4 locales) - [ ] Review EN email copy — adjust subject lines/body if needed via admin UI at `/admin/email-templates` -### Step 2: Deploy Google Wallet service account -- [ ] Place service account JSON at `~/apps/orion/google-wallet-sa.json` (app user, mode 600) -- [ ] Set `LOYALTY_GOOGLE_SERVICE_ACCOUNT_JSON=~/apps/orion/google-wallet-sa.json` in prod `.env` -- [ ] Set `LOYALTY_GOOGLE_ISSUER_ID=` in prod `.env` -- [ ] Restart app — verify no startup error (validator checks file exists) -- [ ] Verify: `GET /api/v1/admin/loyalty/wallet-status` returns `google_configured: true` +### Step 2: Google Wallet — already deployed, verify config +The Google Wallet integration is already deployed on the Hetzner server (see Step 25 of `hetzner-server-setup.md`): +- Service account JSON at `~/apps/orion/google-wallet-sa.json` ✅ +- Docker volume mount in `docker-compose.yml` (`./google-wallet-sa.json:/app/google-wallet-sa.json:ro`) ✅ +- Env vars set: `LOYALTY_GOOGLE_ISSUER_ID=3388000000023089598`, `LOYALTY_GOOGLE_SERVICE_ACCOUNT_JSON=/app/google-wallet-sa.json` ✅ +- Service account linked to Issuer with Admin role ✅ + +Verify after deploy: +- [ ] Restart app — confirm no startup error (config validator checks file exists) +- [ ] `GET /api/v1/admin/loyalty/wallet-status` returns `google_configured: true` ### Step 3: Apply database migrations - [ ] Run: `alembic upgrade heads` @@ -371,10 +375,11 @@ Follow the **Pre-Launch E2E Test Checklist** at the bottom of `user-journeys.md` - [ ] **Test 7:** Admin oversight (programs, merchants, analytics) - [ ] **Test 8:** Cross-location disabled behavior (separate cards per store) -### Step 7: Google Wallet real-device test +### Step 7: Google Wallet real-device test (demo mode) +Google Wallet currently works in **demo/test mode** — only your Google account and explicitly added test accounts can see passes. This is sufficient for launch testing. - [ ] Enroll a test customer on prod - [ ] Tap "Add to Google Wallet" on success page -- [ ] Open Google Wallet on Android device — verify pass renders +- [ ] Open Google Wallet on Android device — verify pass renders with merchant branding - [ ] Trigger a stamp/points transaction — verify pass auto-updates within 60s ### Step 8: Go live @@ -384,6 +389,15 @@ Follow the **Pre-Launch E2E Test Checklist** at the bottom of `user-journeys.md` - [ ] Enable the loyalty platform for production stores - [ ] Monitor first 24h: check email logs, wallet sync, expiration task +### Step 9: Google Wallet production access (can be done post-launch) +Passes in demo mode only work for test accounts. To make passes available to **all Android users**: +- [ ] Go to [pay.google.com/business/console](https://pay.google.com/business/console) → **Google Wallet API** → **Manage** +- [ ] Click **"Request production access"** +- [ ] Fill in: business name, website URL (`rewardflow.lu`), contact info, pass type (Loyalty) +- [ ] Upload 1-2 sample pass screenshots (e.g., Fashion Hub's card with their logo/colors). Google reviews the **Issuer** (your platform), not individual merchants — once approved, all merchants on the platform can issue passes. +- [ ] Wait for Google approval (typically 1-3 business days). They check pass design complies with [brand guidelines](https://developers.google.com/wallet/loyalty/brand-guidelines). +- [ ] Once approved: **no code or infra changes needed**. Same Issuer ID and service account, passes become visible to all Android users. + --- ## Post-Launch Roadmap