Skip to content

Add/fsbuilds google external linking - #2

Merged
FS-EricaB merged 3 commits into
mainfrom
add/fsbuilds-google-external-linking
Sep 22, 2026
Merged

FS-EricaB merged 3 commits into
mainfrom
add/fsbuilds-google-external-linking

Conversation

@FS-EricaB

Copy link
Copy Markdown
Collaborator

No description provided.

Live test against Google's real createexternaltransaction endpoint
(scripts/test-google-report.ts, added here) returned 200 OK with
transactionState: TRANSACTION_REPORTED and externalContentLinkDetails
echoed back unchanged. No code changes were needed - this was a
Google-side gap, now closed.
The README previously documented the whole reference app (deep link
handling, balance polling, secure payload generation, multi-platform
store providers, gameplay economy routes) as if this repo taught you how
to build a Steer Safe integration from scratch. It doesn't - it's an
extension of one. Reframed the base checkout/economy/deep-link mechanics
as prerequisites already assumed in place (pointing to FastSpring's Steer
Safe docs), and pulled the actual Google External Content Links client
and backend implementation - previously only in a separate technical
outline doc - directly into the README as its real substance.

Also dropped gameplay-economy route/AWS Lambda mentions as out of scope,
and corrected an unverified "1,200 QPM" rate-limit figure that contradicts
Google's current published quotas (3000 QPM default per bucket).
Drops the React Native subscription example (Native/) entirely - it
didn't implement Google steering and wasn't relevant to this build. Also
removes the CI workflow's rn-android-apk/rn-ios-xcodeproj targets, which
referenced the now-deleted paths and were reference-only, never meant to
be run.

Cleans up README references to My project (1)/ and docs/ - neither
actually exists in this repo, just leftover text from the dev repo's
README this was originally copied from. Also several voice/flow edits
and a handful of typo fixes (not style changes).
Copilot AI lite review requested due to automatic review settings September 22, 2026 20:40
@FS-EricaB
FS-EricaB merged commit 74a2c2e into main Sep 22, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Unresolved reporting, deduplication, retry, and probe failure-handling issues remain.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 High severity · 1 Medium severity · 1 Low severity

Open (3)
What changed in this PR

This PR narrows the example to Unity/UGS Google External Content Links reporting, adds a reporting probe, updates integration documentation, and removes the obsolete Native sample.

Changes:

  • Adds a standalone Google reporting probe.
  • Reworks Unity/UGS setup, reporting, testing, and security guidance.
  • Removes Native app/backend sources and CI targets.
File Summary
fsbuilds-google-external-linking/​Unity-UGS/​Backend/​scripts/​test-google-report.ts Adds the Google reporting probe; failed non-2xx responses currently exit successfully.
fsbuilds-google-external-linking/​README.md Updates integration guidance; contains stale links, concurrency, persistence, deduplication, and retry documentation issues.
fsbuilds-google-external-linking/​Native/​README.md Removes obsolete Native documentation.
fsbuilds-google-external-linking/​Native/​Backend/​tsconfig.json Removes obsolete backend configuration.
fsbuilds-google-external-linking/​Native/​Backend/​serverless.yml Removes obsolete deployment configuration.
fsbuilds-google-external-linking/​Native/​Backend/​package.json Removes obsolete backend dependencies.
fsbuilds-google-external-linking/​Native/​Backend/​app/​utils/​subscription.ts Removes obsolete subscription utility.
fsbuilds-google-external-linking/​Native/​Backend/​app/​utils/​login.ts Removes obsolete login utility.
fsbuilds-google-external-linking/​Native/​Backend/​app/​utils/​crypto.ts Removes obsolete crypto utility.
fsbuilds-google-external-linking/​Native/​Backend/​app/​handler/​webhook.ts Removes obsolete webhook handler.
fsbuilds-google-external-linking/​Native/​Backend/​app/​handler/​login.ts Removes obsolete login handler.
fsbuilds-google-external-linking/​Native/​Backend/​app/​handler/​getSubscription.ts Removes obsolete subscription handler.
fsbuilds-google-external-linking/​Native/​Backend/​app/​handler/​encode.ts Removes obsolete encoding handler.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​styles.js Removes obsolete app styles.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​services/​subscriptionService.js Removes obsolete subscription service.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​services/​storageService.js Removes obsolete storage service.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​services/​purchaseService.js Removes obsolete purchase service.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​services/​deviceService.js Removes obsolete device service.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​services/​authService.js Removes obsolete authentication service.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​services/​apiService.js Removes obsolete API service.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​README.md Removes obsolete app documentation.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​package.json Removes obsolete app dependencies.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​Podfile.properties.json Removes obsolete iOS configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​Podfile.lock Removes obsolete iOS dependency lockfile.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​Podfile Removes obsolete CocoaPods configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​Supporting/​Expo.plist Removes obsolete Expo configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​SplashScreen.storyboard Removes obsolete iOS splash screen.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​PrivacyInfo.xcprivacy Removes obsolete privacy manifest.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​noop-file.swift Removes obsolete Swift placeholder.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​main.m Removes obsolete iOS entry point.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​Info.plist Removes obsolete iOS metadata.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​Images.xcassets/​SplashScreenBackground.imageset/​Contents.json Removes obsolete splash asset.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​Images.xcassets/​SplashScreen.imageset/​Contents.json Removes obsolete splash asset.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​Images.xcassets/​Contents.json Removes obsolete asset catalog.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​Images.xcassets/​AppIcon.appiconset/​Contents.json Removes obsolete app icon configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​FSReactApp.entitlements Removes obsolete iOS entitlements.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​FSReactApp-Bridging-Header.h Removes obsolete bridging header.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​AppDelegate.mm Removes obsolete iOS app delegate.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp/​AppDelegate.h Removes obsolete iOS app delegate header.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp.xcworkspace/​contents.xcworkspacedata Removes obsolete workspace.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp.xcodeproj/​xcshareddata/​xcschemes/​FSReactApp.xcscheme Removes obsolete Xcode scheme.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​FSReactApp.xcodeproj/​project.pbxproj Removes obsolete Xcode project.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​.xcode.env Removes obsolete Xcode environment.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​ios/​.gitignore Removes obsolete iOS ignore rules.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​index.js Removes obsolete app entry point.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​components/​FastSpringCheckout.js Removes obsolete checkout component.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​app.json Removes obsolete Expo configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​App.js Removes obsolete app UI.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​settings.gradle Removes obsolete Android settings.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​react-settings-plugin/​src/​main/​kotlin/​expo/​plugins/​ReactSettingsPlugin.kt Removes obsolete Gradle plugin.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​react-settings-plugin/​build.gradle.kts Removes obsolete Gradle plugin configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​gradlew.bat Removes obsolete Gradle wrapper.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​gradlew Removes obsolete Gradle wrapper.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​gradle/​wrapper/​gradle-wrapper.properties Removes obsolete Gradle wrapper configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​gradle.properties Removes obsolete Android properties.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​build.gradle Removes obsolete Android build configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​values/​styles.xml Removes obsolete Android styles.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​values/​strings.xml Removes obsolete Android strings.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​values/​colors.xml Removes obsolete Android colors.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​values-night/​colors.xml Removes obsolete night colors.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​mipmap-anydpi-v26/​ic_launcher.xml Removes obsolete launcher icon.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​mipmap-anydpi-v26/​ic_launcher_round.xml Removes obsolete round launcher icon.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​drawable/​splashscreen.xml Removes obsolete splash resource.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​res/​drawable/​rn_edit_text_material.xml Removes obsolete input drawable.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​java/​com/​ollieinteractive/​fsreactapp/​MainApplication.kt Removes obsolete Android application class.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​java/​com/​ollieinteractive/​fsreactapp/​MainActivity.kt Removes obsolete Android activity.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​main/​AndroidManifest.xml Removes obsolete Android manifest.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​src/​debug/​AndroidManifest.xml Removes obsolete debug manifest.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​proguard-rules.pro Removes obsolete ProGuard rules.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​app/​build.gradle Removes obsolete Android app configuration.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​android/​.gitignore Removes obsolete Android ignore rules.
fsbuilds-google-external-linking/​Native/​App/​FSReactApp/​.gitignore Removes obsolete app ignore rules.
fsbuilds-google-external-linking/​.github/​workflows/​build.yml Removes obsolete React Native CI targets.
Files not reviewed (1)
  • fsbuilds-google-external-linking/Native/App/FSReactApp/ios/FSReactApp.xcworkspace/contents.xcworkspacedata: Generated file

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +304 to +307
// Wherever the webhook currently grants the entitlement, add:
if (!(await alreadyReported(externalTransactionToken))) {
await reportToGoogle(externalTransactionToken, order);
}

console.log('\n--- Response ---');
console.log(`Status: ${response.status} ${response.ok ? '(OK)' : '(rejected)'}`);
console.log(JSON.stringify(data, null, 2));
This project lives inside FastSpring's [fastspring-fsBuilds-examples](https://github.com/FastSpring/fastspring-fsBuilds-examples) repo, alongside other FSBuilds projects.

This project lives inside FastSpring's [fastspring-fsBuilds-examples](https://github.com/FastSpring/fastspring-fsBuilds-examples) repo, alongside other FSBuilds projects — standalone templates that show developers how to set up specific FastSpring integrations.
> **Note:** The reference vehicle is a POC Unity/UGS game, not an actively maintained SDK. This specific build does not cover raw Android/Kotlin. It reflects the FastSpring, Google Play, and Unity APIs as of its last update and may not account for later changes to any of the three. Check the linked documentation in [Related resources](#related-resources) for current behavior. See [Status and known issues](#status-and-known-issues) before assuming any single piece is production-ready as-is.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants