Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/supabase-community/flutter-stripe-payments-with-supabase-functions


https://github.com/supabase-community/flutter-stripe-payments-with-supabase-functions

Last synced: 5 days ago
JSON representation

Awesome Lists containing this project

README

        

# Flutter Stripe Payments with Supabase Functions

This is a Flutter example app, showing how to process payments with Supabase Functions for authenticated customers.

![Demo gif](./demo.gif)

## Setup

### Create new Supabase project

- [Create a new Supabase project](https://app.supabase.io/)
- Navigate to the [Auth settings](https://app.supabase.io/project/_/auth/settings) and turn off the toggle next to "Enable email confirmations". (Note: this is only for testing. In production please enable this setting!)
- Navigate to the [SQL Editor](https://app.supabase.io/project/_/sql) and run the SQL from the [schema.sql](./schema.sql) file.

### Setup env vars

- Set up env vars for Supabase Functions:
- `cp .env.example .env`
- Fill in your Stripe API keys from https://stripe.com/docs/development/quickstart#api-keys
- Set up env vars for the Flutter app:
- open `app/config.dart`
- Fill in your _public_ Supabase keys from https://app.supabase.io/project/_/settings/api
- Fill in your _public_ Stripe keys from https://stripe.com/docs/development/quickstart#api-keys

### Supabase Functions

Supabase Functions are written in TypeScript, run via Deno, and deployed with the Supabase CLI. Please [download](https://github.com/supabase/cli#install-the-cli) the latest version of the Supabase CLI, or [upgrade](https://github.com/supabase/cli#install-the-cli) it if you have it already installed.

- Generate access token and log in to CLI
- Navigate to https://app.supabase.io/account/tokens
- Click "Generate New Token"
- Copy newly created token
- run `supabase login`
- Input your token when prompted
- Link your project
- Within your project root run `supabase link --ref your-project-ref`

### Develop locally

- Run `supabase start` (make sure your Docker daemon is running.)
- Run `supabase functions serve --env-file .env payment-sheet`
- NOTE: no need to specify `SUPABASE_URL` and `SUPABASE_ANON_KEY` as they are automatically supplied for you from the linked project.
- Run the Flutter app in a separate terminal window:
- `cd app`
- `flutter run`
- Make some test moneys 💰🧧💵
- Stop local development
- Kill the "supabase functions serve watcher" (ctrl + c)
- Run `supabase stop` to stop the Docker containers.

### Deploy

- Set up your secrets
- Run `supabase secrets set --from-stdin < .env` to set the env vars from your `.env` file.
- You can run `supabase secrets list` to check that it worked and also to see what other env vars are set by default.
- Deploy the function
- Within your project root run `supabase functions deploy payment-sheet`

## 👁⚡️👁

\o/ That's it, you can now invoke your Supabase Function via the [`supabase-js`](https://www.npmjs.com/package/@supabase/supabase-js) and [`supabase-dart`](https://pub.dev/packages/supabase) client libraries. (More client libraries coming soon. Check the [supabase-community](https://github.com/supabase-community#client-libraries) org for details).

For more info on Supabase Functions, check out the [docs](https://supabase.com/docs/guides/functions) and the [examples](https://github.com/supabase/supabase/tree/master/examples/edge-functions).