Automated Action f2b2889ea1 Implement complete Stripe payment integration service
- Created FastAPI application with Stripe payment processing
- Added payment intent creation, retrieval, and webhook handling
- Implemented SQLite database with payments and payment_methods tables
- Set up Alembic for database migrations
- Added comprehensive API endpoints for payment management
- Configured CORS middleware for cross-origin requests
- Added health check and service information endpoints
- Created complete project documentation with setup instructions
- Integrated Ruff for code formatting and linting
2025-06-20 12:23:34 +00:00
2025-06-20 12:17:56 +00:00

Stripe Payment Integration Service

A FastAPI service for handling Stripe payments with complete payment processing capabilities.

Features

  • Create and manage Stripe payment intents
  • Process payments securely
  • Handle Stripe webhooks for payment status updates
  • Store payment records in SQLite database
  • RESTful API with automatic OpenAPI documentation
  • Health check endpoint

Environment Variables

You need to set the following environment variables:

STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key_here
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret_here

Installation

  1. Install dependencies:
pip install -r requirements.txt
  1. Run database migrations:
alembic upgrade head
  1. Start the development server:
uvicorn main:app --reload --host 0.0.0.0 --port 8000

API Endpoints

Base Endpoints

  • GET / - Service information
  • GET /health - Health check
  • GET /docs - Interactive API documentation
  • GET /redoc - Alternative API documentation

Payment Endpoints

  • POST /api/v1/payments/create-payment-intent - Create a new payment intent
  • GET /api/v1/payments/payment-intent/{payment_intent_id} - Get payment intent details
  • GET /api/v1/payments/payment/{payment_intent_id} - Get payment record from database
  • POST /api/v1/payments/webhook - Handle Stripe webhooks

Usage Example

Create a Payment Intent

curl -X POST "http://localhost:8000/api/v1/payments/create-payment-intent" \
     -H "Content-Type: application/json" \
     -d '{
       "amount": 2000,
       "currency": "usd",
       "customer_email": "customer@example.com",
       "customer_name": "John Doe",
       "description": "Payment for services"
     }'

Response

{
  "client_secret": "pi_xxxxx_secret_xxxxx",
  "payment_intent_id": "pi_xxxxx",
  "amount": 2000,
  "currency": "usd",
  "status": "requires_payment_method"
}

Database Schema

The service uses SQLite with the following tables:

Payments Table

  • id - Primary key
  • stripe_payment_intent_id - Stripe payment intent ID
  • amount - Payment amount
  • currency - Payment currency
  • status - Payment status
  • customer_email - Customer email
  • customer_name - Customer name
  • description - Payment description
  • metadata - Additional metadata (JSON)
  • created_at - Creation timestamp
  • updated_at - Last update timestamp
  • is_webhook_processed - Webhook processing status

Payment Methods Table

  • id - Primary key
  • stripe_payment_method_id - Stripe payment method ID
  • customer_email - Customer email
  • type - Payment method type
  • card_brand - Card brand (for card payments)
  • card_last_four - Last four digits of card
  • is_default - Default payment method flag
  • created_at - Creation timestamp

Development

Code Formatting

The project uses Ruff for code formatting and linting:

ruff check .
ruff format .

Database Migrations

To create a new migration:

alembic revision --autogenerate -m "Description of changes"

To apply migrations:

alembic upgrade head

Webhook Configuration

Configure your Stripe webhook endpoint URL in the Stripe Dashboard:

  • URL: https://yourdomain.com/api/v1/payments/webhook
  • Events: payment_intent.succeeded, payment_intent.payment_failed

Security Notes

  • Always use HTTPS in production
  • Store Stripe keys securely as environment variables
  • Verify webhook signatures for security
  • Never expose secret keys in client-side code
Description
Project: Stripe Payment Integration Service
Readme 49 KiB
Languages
Python 97.4%
Mako 2.6%