Overview
A partner app is an ordinary web app on your own server that Shainee opens inside a full-screen container, already knowing who the user is. You build the app and keep your own data; Shainee gives you sign-in, discovery and payments. You do not build a login screen.
What users see. They find your app by search, category or the Services grid, tap it, approve what you may see (first time only), and your page loads signed in.
What you receive. Your server learns a stable, private user id for your app only (sub) and, if the user approved it, their name. The id is different for every app, so two partners cannot match their users. You never get a password, phone number or email.
| Shainee provides | You provide |
|---|---|
| Account sign-up and login (email or phone, OTP, password) | A web app served over HTTPS, built mobile-first |
| A signed launch token, valid 60 seconds, usable once | A small backend that verifies that token and keeps your own sessions and data |
| Listing, search, categories, favourites, recent apps | An icon (one emoji), a name, a short description and search keywords |
| Consent screen and a way for users to revoke access | Your own business rules, data and support |
| Payments on CityPay's own checkout page, held in escrow until you release them to your sellers | Your sellers' wallet numbers, and a release when each order is delivered |
Rules that shape every design#
- Your page works only inside Shainee. Opened directly in a browser it must do nothing useful.
- Identity is proven by the server-to-server verify call, never by anything the browser claims.
- The browser never holds a secret. Your client secret stays on your server.
- Your app must still work after the session expires: the page repeats the handshake silently.
What you integrate with#
There is no SDK to install. The integration is a small HTTP contract:
| Piece | Where it is described |
|---|---|
| Three messages between your page and Shainee | Browser-side contract |
| Four routes on your server, and one call to ours | Server-side contract and the API reference |
| Working code in Node.js and Python | Complete server examples |
| Taking payments: one message from your page, a few calls from your server | Taking payments |