Maison >développement back-end >Tutoriel Python >Création de données de test Stripe en Python
Nous avons travaillé sur un nouveau cours sur les données IA pour montrer comment créer un chatbot IA en déplaçant les données de commerce électronique de Stripe vers PGVector exécuté sur Supabase, via le connecteur Airbyte PGVector pour créer des intégrations OpenAI, à l'aide des bibliothèques client OpenAI. pour ajouter la prise en charge du langage naturel dans une application. Il s'agit d'un modèle d'application de « pile de données intelligente » assez courant que beaucoup de nos clients mettent en œuvre. La source et la destination peuvent changer, mais le modèle (source de données > déplacer les données et créer des intégrations > magasin de données vectorielles > application Web avec OpenAI) reste le même.
Puisque nous travaillons sur un cours destiné aux utilisateurs, nous voulions rendre la configuration aussi simple que possible. Une grande partie de cela consistait à créer suffisamment de données de test dans Stripe afin qu'il y ait un ensemble de données raisonnable avec lequel le chatbot puisse interagir. Si vous avez déjà utilisé Stripe, vous savez qu'ils disposent d'un excellent bac à sable avec lequel vous pouvez expérimenter. Le seul problème est qu’il n’a pas d’échantillons de données préchargés.
Il existe quelques exemples d'ensembles de données que vous pouvez charger via la commande CLI luminaires. Mais, pour notre usage, ceux-ci ne répondaient pas à nos besoins. Nous voulions un ensemble de données plus large, et comme ce matériel sera utilisé en ligne et dans des ateliers, demander aux apprenants d'installer quelque chose, comme la CLI, sur leurs machines locales vous ouvre toute une série de complexités. Vous ne savez jamais quelle version du système d'exploitation l'utilisateur utilise, s'il dispose des autorisations appropriées pour installer des éléments, et bien plus encore. J'ai été brûlé trop de fois pour emprunter cette voie.
Heureusement, Stripe dispose également d'API fantastiques et d'un excellent client Python, ce qui signifie que nous avons pu créer rapidement un bloc-notes collaboratif permettant aux apprenants d'exécuter et d'insérer les données souhaitées.
Après avoir installé la bibliothèque Stripe via !pip install stripe et transmis une clé de test à l'aide des secrets de Google Collab, nous avons dû définir des noms aléatoires pour les clients et les produits. L'objectif était d'insérer une collection aléatoire de clients, de produits avec des prix différents et d'achats. De cette façon, lorsque nous posons au chatbot des questions telles que « qui a effectué l'achat le moins cher ? Combien ont-ils payé et qu'ont-ils acheté ? » il y avait suffisamment de données.
import stripe import random from google.colab import userdata stripe.api_key = userdata.get('STRIPE_TEST_KEY') # Sample data for generating random names first_names = ["Alice", "Bob", "Charlie", "Diana", "Eve", "Frank", "Grace", "Hank", "Ivy", "Jack", "Quinton", "Akriti", "Justin", "Marcos"] last_names = ["Smith", "Johnson", "Williams", "Jones", "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor", "Wall", "Chau", "Keswani", "Marx"] # Sample clothing product names clothing_names = [ "T-Shirt", "Jeans", "Jacket", "Sweater", "Hoodie", "Shorts", "Dress", "Blouse", "Skirt", "Pants", "Shoes", "Sandals", "Sneakers", "Socks", "Hat", "Scarf", "Gloves", "Coat", "Belt", "Tie", "Tank Top", "Cardigan", "Overalls", "Tracksuit", "Polo Shirt", "Cargo Pants", "Capris", "Dungarees", "Boots", "Cufflinks", "Raincoat", "Peacoat", "Blazer", "Slippers", "Underwear", "Leggings", "Windbreaker", "Tracksuit Bottoms", "Beanie", "Bikini" ] # List of random colors colors = [ "Red", "Blue", "Green", "Yellow", "Black", "White", "Gray", "Pink", "Purple", "Orange", "Brown", "Teal", "Navy", "Maroon", "Gold", "Silver", "Beige", "Lavender", "Turquoise", "Coral" ]
Ensuite, il était temps d'ajouter des fonctions pour chacun des types de données dans Stripe dont nous avions besoin.
# Function to create sample customers with random names def create_customers(count=5): customers = [] for _ in range(count): first_name = random.choice(first_names) last_name = random.choice(last_names) name = f"{first_name} {last_name}" email = f"{first_name.lower()}.{last_name.lower()}@example.com" customer = stripe.Customer.create( name=name, email=email, description="Sample customer for testing" ) customers.append(customer) print(f"Created Customer: {customer['name']} (ID: {customer['id']})") return customers # Function to create sample products with random clothing names and colors def create_products(count=3): products = [] for _ in range(count): color = random.choice(colors) product_name = random.choice(clothing_names) full_name = f"{color} {product_name}" product = stripe.Product.create( name=full_name, description=f"This is a {color.lower()} {product_name.lower()}" ) products.append(product) print(f"Created Product: {product['name']} (ID: {product['id']})") return products # Function to create prices for the products with random unit_amount def create_prices(products, min_price=500, max_price=5000): prices = [] for product in products: unit_amount = random.randint(min_price, max_price) # Random amount in cents price = stripe.Price.create( unit_amount=unit_amount, currency="usd", product=product['id'] ) prices.append(price) print(f"Created Price: ${unit_amount / 100:.2f} for Product {product['name']} (ID: {price['id']})") return prices # Function to create random purchases for each customer def create_purchases(customers, prices, max_purchases_per_customer=5): purchases = [] for customer in customers: num_purchases = random.randint(1, max_purchases_per_customer) # Random number of purchases per customer for _ in range(num_purchases): price = random.choice(prices) # Randomly select a product's price purchase = stripe.PaymentIntent.create( amount=price['unit_amount'], # Amount in cents currency=price['currency'], customer=customer['id'], payment_method_types=["card"], # Simulate card payment description=f"Purchase of {price['product']} by {customer['name']}" ) purchases.append(purchase) print(f"Created Purchase for Customer {customer['name']} (Amount: ${price['unit_amount'] / 100:.2f})") return purchases
Il ne restait plus qu'à exécuter le script et à spécifier la quantité de données dont nous avons besoin.
# Main function to create sample data def main(): print("Creating sample customers with random names...") customers = create_customers(count=20) print("\nCreating sample products with random clothing names and colors...") products = create_products(count=30) print("\nCreating prices for products with random amounts...") prices = create_prices(products, min_price=500, max_price=5000) print("\nCreating random purchases for each customer...") purchases = create_purchases(customers, prices, max_purchases_per_customer=10) print("\nSample data creation complete!") print(f"Created {len(customers)} customers, {len(products)} products, and {len(purchases)} purchases.") if __name__ == "__main__": main()
Une fois les données chargées dans notre Stripe Sandbox, leur connexion à Airbyte n'a pris que quelques minutes en utilisant Connector Builder pour mapper les points de terminaison de l'API aux flux pour chaque type de données et en configurant une tâche de synchronisation.
Problème résolu ! Notre script Collab Python permet à l'apprenant d'insérer très facilement des données de test dans Stripe. J'espère que cela sera utile à quelqu'un d'autre effectuant des tests similaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!