by Lazy Sloth
Create Invoice with Stripe API
import os
import stripe
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import uvicorn
# Initialize Stripe API with the secret key
stripe.api_key = os.environ['STRIPE_SECRET_KEY']
app = FastAPI()
# CORS configuration to allow preflight requests with OPTIONS method
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allows all origins
allow_credentials=True,
allow_methods=["*"], # Allows all methods
allow_headers=["*"], # Allows all headers
)
class InvoiceItemData(BaseModel):
customer_email: str
description: str
Created: | Last Updated:
Introduction to the Create Invoice with Stripe API Template
Welcome to the Create Invoice with Stripe API template! This template is designed to help you seamlessly integrate Stripe's invoicing capabilities into your application. With this template, you can create and manage invoices, allowing users to generate payment requests and process payments with ease. The backend is set up to handle the creation of Stripe customers and invoices, while the frontend includes a JavaScript function to post data to the backend and redirect users to the payment page. Before you begin, ensure you have a valid Stripe API key, as it is essential for the app's operation.
Clicking Start with this Template
To get started with this template, click on the "Start with this Template" button. This will pre-populate the code in the Lazy Builder interface, so you won't need to copy, paste, or delete any code manually.
Initial Setup: Adding Environment Secrets
Before testing the app, you'll need to set up an environment secret for the Stripe API key:
- Log in to your Stripe account and navigate to the API section to find your secret key.
- In the Lazy Builder interface, go to the Environment Secrets tab.
- Create a new secret with the key
STRIPE_SECRET_KEY
and paste your Stripe secret key as the value.
Test: Pressing the Test Button
Once you have set up your environment secret, press the "Test" button. This will deploy the app and launch the Lazy CLI. The Lazy platform handles all deployment aspects, so you don't need to worry about installing libraries or setting up your environment.
Entering Input
After pressing the "Test" button, if the app requires any user input, the Lazy App's CLI interface will prompt you to provide the necessary information. Follow the instructions in the CLI to enter any required input.
Using the App
After deployment, Lazy will provide you with a dedicated server link to use the API. If you're using FastAPI, Lazy will also provide a link to the API documentation. You can use these links to interact with your app and test the endpoints.
Integrating the App
To integrate the backend with your frontend or another service, you can use the provided JavaScript snippet. Here's how to do it:
- Include the JavaScript function in your HTML/JS file.
- Replace
LAZY_BACKEND_URL
with the URL provided by Lazy after deployment. - Call the
createInvoiceAndRedirect
function with the customer's email, invoice description, and amount to create an invoice and redirect the user to the payment page.
Here's the JavaScript snippet you can use:
<script><br>
async function createInvoiceAndRedirect(customerEmail, description, amount) {<br>
try {<br>
const response = await fetch('LAZY_BACKEND_URL/create-invoice', {<br>
method: 'POST',<br>
headers: {<br>
'Content-Type': 'application/json',<br>
},<br>
body: JSON.stringify({<br>
customer_email: customerEmail,<br>
description: description,<br>
amount: amount<br>
})<br>
});<br>
if (!response.ok) {<br>
throw new Error(
HTTP error! status: ${response.status});<br>
}<br>
const data = await response.json();<br>
window.location.href = data.invoice_url;<br>
} catch (error) {<br>
console.error('Could not create invoice:', error);<br>
alert('Error creating invoice. Please try again.');<br>
}<br>
}<br>
// Example usage:<br>
// createInvoiceAndRedirect('customer@example.com', 'Product Description', 1000);<br>
</script>
Remember to replace LAZY_BACKEND_URL
with the actual backend URL provided by Lazy. This code snippet will make a POST request to the backend, create an invoice, and redirect the user to the Stripe payment page.
By following these steps, you should now have a fully functional invoice creation and payment processing application integrated with Stripe, all set up and ready to go on the Lazy platform.