All Projects → holdenrehg-samples → sample_flask_stripe_integration

holdenrehg-samples / sample_flask_stripe_integration

Licence: other
Sample Application - Flask + Stripe Integration

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
Dockerfile
14818 projects
Mako
254 projects
CSS
56736 projects

mystripeapp

Sample Flask + Stripe application.

Tutorial and explanation written up on medium.


Getting setup

1. Update your hosts file

Update your /etc/hosts file by adding the following line:

0.0.0.0 mystripeapp.local

2. Get the code

Clone down the repository.

The details in this readme are assuming you clone down the repo as mystripeapp so you may experience issues or have to slightly alter commands if you clone it down as another directory name.

$ git clone https://github.com/holdenrehg/sample_flask_stripe_integration mystripeapp

3. Update the environment variables

There is a set of environment variables located under mystripeapp/utils/__init__.py that need to be updated before running the application

The only two environment variables that you should need to change to get the application up and running are the stripe token and the stripe product code.

def environment():
    """
    This is not how you would want to handle environments in a real project,
    but for the sake of simplicity I'll create this function.

    Look at using environment variables or dotfiles for these.
    """
    return {
        "app": {"name": "mystripeapp.local", "port": "5200", "secret": "my_super_secret_key"},
        "billing": {"stripe": {"token": "****", "product": "****"}},
        "database": {
            "provider": "mysql",
            "host": "mariadb",
            "port": "3306",
            "username": "stripeapp",
            "password": "stripeapp",
            "database": "stripeapp",
        },
    }

It's also information for you to add your public stripe key to the javascript on the register form. See the mystripeapp/ui/views/auth/register.html file.

// Create a Stripe client.
var stripe = Stripe('****');

Running the application

Start the application

$ cd mystripeapp
$ docker-compose up

Migrate the database

Make sure to leave the application running before migrating the database:

$ docker-compose exec app flask db upgrade

Access the application

You'll be able to access at http://mystripeapp.local:5200 .


Testing the application manually

You can create an account using fake Stripe cards found at https://stripe.com/docs/testing . Use these on the http://mystripeapp.local:5200/register registration form.

Running automated tests

$ python3 setup.py test --container $(docker ps -q --filter name=mystripeapp_app)
$ python3 setup.py test --container $(docker ps -q --filter name=mystripeapp_app) --no-coverage

Useful commands

Since we are running the application with docker, here are some useful commands to know:

# Run a command inside of the app container
$ docker exec -it $(docker ps -q --filter=mystripeapp_app) {command}

$ docker exec -it $(docker ps -q --filter=mystripeapp_app) ipython3
$ docker exec -it $(docker ps -q --filter=mystripeapp_app) bash
$ docker exec -it $(docker ps -q --filter=mystripeapp_app) flask init db

While developing you'll often need some simple knowledge of the docker-compose commands such as:

$ docker-compose stop
$ docker-compose restart
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].