feat(kilo-pass): add Google Play publisher SDK - #5582
Open
iscekic wants to merge 3 commits into
Open
Conversation
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (8 files)
Previous Review Summary (commit 3265f4b)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 3265f4b)Status: No Issues Found | Recommendation: Merge Files Reviewed (7 files)
Reviewed by grok-4.6 · Input: 141.2K · Output: 8.7K · Cached: 119.9K Review guidance: REVIEW.md from base branch |
This was referenced Aug 27, 2026
pandemicsyn
approved these changes
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
No new behavior. This level adds the server-side Google Play purchase verification foundation; no user-facing feature, screen, or option changes yet.
Google Play subscription verification is added through the Android Publisher SDK.
createGooglePlayAndroidPublisherClientreads the new secretGOOGLE_PLAY_PUBLISHER_SERVICE_ACCOUNT_JSON, rejects JSON without a client email or a private key, and caches the client by that JSON value.getGooglePlaySubscriptionPurchase(purchaseToken)calls subscriptions v2 get for the fixed packagecom.kilocode.kiloappand returns the record.Files
apps/web/src/lib/kilo-pass/google-play-sdk.ts— adds the package name, the cached publisher client, credential parsing, and the subscriptions v2 get helper.apps/web/package.json— adds the@googleapis/androidpublisher37.0.0 dependency.getMobileStoreKiloPassProductByGoogleProductId(googleProductId)is added beside the Apple lookup. It returns the product whose Google product ID matches, or null when nothing matches. The Google product IDs already exist in the product table, so no product data changes.Files
apps/web/src/lib/kilo-pass/mobile-store-products.ts— adds the Google product ID lookup helper.Two Google Play environment values are documented in the catalog.
GOOGLE_PLAY_PUBLISHER_SERVICE_ACCOUNT_JSONis a secret service account for the publisher API, andGOOGLE_PLAY_RTDN_PUSH_AUDIENCEis the expected OIDC audience for the later real-time notification push. Neither has a default, and the push audience is not yet read by any code.Files
ENVIRONMENT.md— documents the two values under the Apple / In-App Purchases section.Tests: 2 new test files cover the client cache, the auth scope, the get call, the error paths, and the Google product lookup.
Generated: 1 lockfile updated.
Verification
No E2E report is attached at this level. No manual tests were run at this level.
E2E: bot-e2e — runtime verification runs once on the tip PR (level 6) after all levels land. This level is reviewed on its own diff.
Visual Changes
Visual Changes: N/A
Reviewer Notes
Human steps:
GOOGLE_PLAY_PUBLISHER_SERVICE_ACCOUNT_JSON(secret) andGOOGLE_PLAY_RTDN_PUSH_AUDIENCE(server) in the shared web environment. Runpnpm web:env set <VARIABLE>for each. Agents must not run this command because it prompts for secret values and writes to external systems.Notes:
Stacked PRs — merge bottom to top. Each level shows only its own diff.
Runtime verification (E2E, user advocacy, simplify) runs on the tip PR over every level.
Every level keeps its own checks, its own bot review, and its own threads; each one is answered on its own PR.
Each level is its own deliverable: it builds and passes its own checks alone.
A finding on a level is repaired on that level, then carried upward with stack.sh forward.
android-iap-e895— feat(commerce): add Play Kilo Pass presentation flag #5581android-iap-e895-s2— feat(kilo-pass): add Google Play publisher SDK #5582 ← this PRandroid-iap-e895-s3— feat(kilo-pass): add Google Play purchase verifier #5586android-iap-e895-s4— feat(kilo-pass): handle Play real-time notifications #5598android-iap-e895-s5— feat(kilo-pass): add completePlayPurchase mutation #5608android-iap-e895-s6— feat(mobile): offer Google Play Kilo Pass purchase #5618 (tip)