diff --git a/web/apps/payments/README.md b/web/apps/payments/README.md index 568437afd..9e64a3900 100644 --- a/web/apps/payments/README.md +++ b/web/apps/payments/README.md @@ -1,6 +1,92 @@ Code that runs on `payments.ente.io`. It brokers between our services and Stripe's API for payments. +## Development / New + +There are three pieces that need to be connected to have a working local setup: + +- A client app +- This web app +- Museum + +### Client app + +For the client, let us consider the Photos web app (similar configuration can be +done in the mobile client too). + +Add the following to `web/apps/photos/.env.local`: + +```env +NEXT_PUBLIC_ENTE_ENDPOINT = http://localhost:8080 +NEXT_PUBLIC_ENTE_PAYMENTS_ENDPOINT = http://localhost:3001 +``` +Then start it locally + +```sh +yarn dev:photos +``` + +This tells it to connect to the museum and payments app running on localhost. + +> For connecting from the mobile app, you'll need to run museum on a local IP +> instead localhost. If so, just replace "http://localhost:8080" with (say) +> "http://192.168.1.2:8080" wherever mentioned. + +### Payments app + +For this (payments) web app, configure it to connect to the local museum, and +use a set of (development) Stripe keys which can be found in [Stripe's developer +dashboard](https://dashboard.stripe.com). + +Add the following to +`web/apps/payments/.env.local` + +```env +NEXT_PUBLIC_ENTE_ENDPOINT = http://localhost:8080 +NEXT_PUBLIC_STRIPE_US_PUBLISHABLE_KEY = stripe_publishable_key +``` + +Then start it locally + +```sh +yarn dev:payments +``` + +### Museum + +1. Install the [stripe-cli](https://docs.stripe.com/stripe-cli) and capture the + webhook signing secret. + +2. Define this secret within your `musuem.yaml` + +3. Update the `whitelisted-redirect-urls` so that it supports redirecting to + the locally running payments app. + +Assuming that your local payments app is running on `localhost:3001`, your +`server/museum.yaml` should look as follows. + +```yaml +stripe: + us: + key: stripe_dev_key + webhook-secret: stripe_dev_webhook_secret + whitelisted-redirect-urls: ["http://localhost:3001/gallery", "http://192.168.1.2:3001/frameRedirect"] + path: + success: ?status=success&session_id={CHECKOUT_SESSION_ID} + cancel: ?status=fail&reason=canceled +``` + +Finally, start museum, for example: + +``` +docker compose up +``` + +Now if you try to purchase a plan from your locally running photos web client, +it should redirect to the locally running payments app, and from there to +Stripe. Once the test purchase completes it should redirect back to the local +web client. + ## Development If you're running this to test out the payment flows end-to-end, please do a