Scrolls — Subscribe to Win

Paul Frischknecht
4 min readApr 7, 2023

--

Building on the research I did for Coins — Pay to Win, I spent some hours in the last few weeks building a second Progressive Web App (also listed in Google Play Store) that accepts real world payments as an exercise. In this perhaps most trivial of all possible subscription based services, being subscribed allows you to perform exactly one more action than unsubscribed users: Say “I am here!” to indicate you are online. (Who isn’t… all the time…)

At the bottom of the page, a list of registered users is shown, showing the person that was here last first :) It indicates the amount of seconds since the user last pushed the button.

Subscribed State, using Stripe. The manage button works in the Google Play Store Android App & on the Web.

The visual design is again kept very simple and in the same pixelated style as the Coins app. It is of course fully responsive and works on any size of screen.

The main challenge was of course implementing the subscription functionality across two payment providers: Stripe and Google Play Billing.

Google again requires that if your app collects any kind of payments and offers a subscription service, you need to use their payment solution:

About Google Play’s billing system

Google Play’s billing system is a service that enables you to sell digital products and content in your Android app. You can use Google Play’s billing system to sell a one-time product or subscriptions on a recurring basis.[…]

Unless otherwise permitted by the Payments policy, purchases that require use of Google Play’s billing system include:

Digital items (such as virtual currencies, extra lives, additional playtime, add-on items, characters, or avatars);

Subscription services (such as fitness, game, dating, education, music, video, or other content subscription services); […]

Subscribed State, this time using Google Play Billing. The manage button works in the Google Play Store Android App & on the Web.
Managing the Google Play subscription. I am learning Spanish BTW.
Unsubscribed state in the Google Play Store Android app. Note that the app is legally required to take subscriptions only through Google Play Billing, even though technically we could redirect to Stripe as well.
Signing up for the subscription via Google Play Billing on Android.

It seems to be a common practice to allow users to use their subscriptions made on a different channel for the same service on any other channel. This is why you can subscribe in a webbrowser to most services (e.g. Netflix, Todoist…) but then still log in to the (native) app and use the premium features straight away.

In our case, this means that subscriptions can be made either via Google Play Billing in the app obtained from the Play Store or via Stripe when using the web app directly.

If a subscription is active, it is considered active from both channels/app versions.

When the subscription is active, you should of course be able to Manage the Subscription in order to unsubscribe. With Google Play Billing, users can even pause subscriptions for a while.

I will write another day about the challenges of integrating two quite radically different payment systems and coming up with and hopefully dealing correctly with all possible edge cases. For instance, if you are tempted to open the app in a browser and also open the native app, you can end up with two subscriptions, but the app will at least then also show you both “Manage Subscription” buttons in order to cancel them asap!

Please check it out and consider leaving a tip there ;) I can of course refund you the payment if you are kind enough to write me at paulfrischknecht@paulfrischknecht.ch I am also curious to hear whether you are interested in seeing the implementation behind this.

Here are the links

Thanks for reading, please consider following me on Medium & Happy Easter.

--

--