Ce projet montre comment intégrer Stripe Checkout dans une application FastAPI, le tout déployé via Docker et Docker Compose. L'objectif est de fournir une solution de paiement pour une borne de recharge de véhicule électrique.
Assurez-vous d'avoir les éléments suivants installés sur votre machine :
- Docker
- Docker Compose
- Python 3.6 ou version ultérieure (si vous souhaitez exécuter le projet sans Docker)
Stripe_IRVE/
├── app/
│ ├── main.py
│ ├── templates/
│ │ ├── index.html
│ │ ├── success.html
│ │ └── cancel.html
├── .env
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
Créez un fichier .env
à la racine du projet avec le contenu suivant :
STRIPE_PUBLIC_KEY=your_stripe_public_key
STRIPE_SECRET_KEY=your_stripe_secret_key
BASE_URL=http://localhost:8000
Remplacez your_stripe_public_key
et your_stripe_secret_key
par vos clés API Stripe.
Le fichier requirements.txt
contient les dépendances nécessaires pour exécuter l'application FastAPI avec Stripe :
fastapi
uvicorn
stripe
python-dotenv
jinja2
Le Dockerfile
contient les instructions pour créer l'image Docker de l'application FastAPI :
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.11
COPY ./requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
COPY ./app /app
COPY .env /app/.env
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
Le fichier docker-compose.yml
définit les services et les configurations pour exécuter l'application dans des conteneurs Docker :
version: '3.8'
services:
web:
build: .
ports:
- "8000:80"
env_file:
- .env
volumes:
- ./app:/app
Ce fichier contient le code principal de l'application FastAPI.
-
Importation des modules :
fastapi
,Request
,HTMLResponse
,RedirectResponse
: Modules nécessaires pour créer des routes et gérer les réponses HTTP.Jinja2Templates
: Utilisé pour rendre les templates HTML.stripe
: Bibliothèque Stripe pour gérer les paiements.os
,load_dotenv
: Modules pour gérer les variables d'environnement.
-
Initialisation de l'application :
app = FastAPI()
: Crée l'application FastAPI.templates = Jinja2Templates(directory="templates")
: Définit le répertoire des templates HTML.
-
Configuration de Stripe :
stripe.api_key = os.getenv("STRIPE_SECRET_KEY")
: Initialise la clé secrète Stripe.public_key = os.getenv("STRIPE_PUBLIC_KEY")
: Récupère la clé publique Stripe.base_url = os.getenv("BASE_URL")
: Récupère l'URL de base de l'application.
-
Routes de l'application :
@app.get("/")
: Route pour la page d'accueil, rend le templateindex.html
.@app.post("/create-checkout-session")
: Route pour créer une session de paiement Stripe et rediriger l'utilisateur vers la page de paiement Stripe.@app.get("/success")
: Route pour la page de succès après un paiement réussi, rend le templatesuccess.html
.@app.get("/cancel")
: Route pour la page d'annulation après un paiement annulé, rend le templatecancel.html
.
-
index.html
: Page d'accueil avec un formulaire pour initier un paiement. -
success.html
: Page affichée après un paiement réussi. -
cancel.html
: Page affichée après un paiement annulé.
-
Construire l'image Docker :
docker-compose build
-
Démarrer les services :
docker-compose up -d
Accédez à http://localhost:8000
pour voir la page de paiement Stripe en action.
Pour tester l'application, suivez ces étapes :
- Ouvrir le navigateur : Accédez à
http://localhost:8000
. - Démarrer une session de paiement : Cliquez sur le bouton "Checkout" pour initier une session de paiement.
- Compléter le paiement : Utilisez les informations de test Stripe pour compléter le paiement.
- Vérifier la redirection : Après le paiement, vous devriez être redirigé vers la page de succès. En cas d'annulation, vous serez redirigé vers la page d'annulation.
Ce projet montre comment intégrer Stripe Checkout avec FastAPI et Docker pour gérer les paiements en ligne de manière sécurisée et efficace. En suivant les instructions ci-dessus, vous pouvez facilement déployer cette solution et l'adapter à vos besoins spécifiques.
Ce fichier contient les informations sensibles comme les clés API Stripe et l'URL de base de votre application. Il est essentiel de ne pas inclure ce fichier dans votre contrôle de version pour des raisons de sécurité.
Ce fichier liste toutes les bibliothèques Python nécessaires à l'exécution de l'application, permettant à Docker d'installer automatiquement ces dépendances lors de la construction de l'image.
Le Dockerfile
contient les instructions nécessaires pour construire une image Docker de votre application. Il inclut les étapes pour copier les fichiers de l'application, installer les dépendances, et définir la commande de démarrage de l'application.
Ce fichier permet de définir et de gérer plusieurs conteneurs Docker en une seule commande. Ici, il configure le service web, mappe les ports, et définit le fichier .env
à utiliser.
- Initialisation : Importation des modules nécessaires et initialisation de l'application et des templates.
- Configuration de Stripe : Chargement des clés API Stripe à partir des variables d'environnement.
- Définition des Routes : Création des routes pour gérer l'affichage de la page d'accueil, la création de sessions de paiement, et les pages de succès et d'annulation.
index.html
: Contient le formulaire pour initier un paiement.success.html
etcancel.html
: Pages de redirection après le paiement, pour informer l'utilisateur du succès ou de l'annulation du paiement.
- Construire l'image Docker : La commande
docker-compose build
construit l'image Docker en utilisant leDockerfile
. - Démarrer les services : La commande
docker-compose up -d
démarre les services définis dansdocker-compose.yml
. - Accéder à l'application : En visitant
http://localhost:8000
, vous pouvez tester l'interface de paiement.