ente/web/apps/payments/README.md

97 lines
2.5 KiB
Markdown
Raw Normal View History

2024-04-04 09:45:50 +00:00
# Payments
2024-03-28 06:37:10 +00:00
Code that runs on `payments.ente.io`. It brokers between our services and
Stripe's API for payments.
2024-03-28 12:14:27 +00:00
## Development
2024-03-28 07:16:48 +00:00
There are three pieces that need to be connected to have a working local setup:
2024-04-03 08:03:42 +00:00
- A client app
- This web app
- Museum
2024-03-28 07:16:48 +00:00
### 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
```
2024-04-03 08:03:42 +00:00
2024-03-28 07:16:48 +00:00
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
2024-04-03 08:03:42 +00:00
use a set of (development) Stripe keys which can be found in
[Stripe's developer dashboard](https://dashboard.stripe.com).
2024-03-28 07:16:48 +00:00
Add the following to `web/apps/payments/.env.local`:
2024-03-28 07:16:48 +00:00
```env
VITE_ENTE_ENDPOINT = http://localhost:8080
VITE_STRIPE_US_PUBLISHABLE_KEY = stripe_publishable_key
2024-03-28 07:16:48 +00:00
```
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`
2024-04-03 08:03:42 +00:00
3. Update the `whitelisted-redirect-urls` so that it supports redirecting to the
locally running payments app.
2024-03-28 07:16:48 +00:00
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
2024-04-03 08:03:42 +00:00
whitelisted-redirect-urls:
- http://localhost:3000/gallery
- http://localhost:3001/desktop-redirect
- http://192.168.1.2:3001/frameRedirect
2024-03-28 07:16:48 +00:00
path:
success: ?status=success&session_id={CHECKOUT_SESSION_ID}
cancel: ?status=fail&reason=canceled
```
Make sure you have test plans available for museum to use, by placing them in
(say) `server/data/billing/us-testing.json`.
2024-03-28 07:16:48 +00:00
Finally, start museum, for example:
2024-04-03 08:03:42 +00:00
```sh
2024-03-28 07:16:48 +00:00
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.