import requests
import uuid
FLOWLIX_API_KEY = "fl_test_sk_abc123def456"
def create_payment(amount, currency, card, customer=None, description=None, metadata=None):
"""Create a Direct API payment."""
idempotency_key = str(uuid.uuid4())
payload = {
"amount": amount,
"currency": currency,
"card": card,
}
if customer:
payload["customer"] = customer
if description:
payload["description"] = description
if metadata:
payload["metadata"] = metadata
response = requests.post(
"https://api.flowlix.eu/v1/payments",
headers={
"Authorization": f"Bearer {FLOWLIX_API_KEY}",
"Content-Type": "application/json",
"Idempotency-Key": idempotency_key,
},
json=payload,
)
if response.status_code == 201:
payment = response.json()
print(f"Payment succeeded: {payment['id']}")
return payment
error = response.json()["error"]
if error["type"] == "card_error":
print(f"Card declined: {error['decline_code']} - {error['message']}")
elif error["type"] == "invalid_request_error":
print(f"Invalid request: {error['message']} (param: {error['param']})")
else:
print(f"Error: {error['type']} - {error['message']}")
return None
# Usage
payment = create_payment(
amount=4999,
currency="eur",
card={
"number": "4242424242424242",
"exp_month": 12,
"exp_year": 2027,
"cvc": "314",
},
customer={
"email": "jenny@example.com",
"first_name": "Jenny",
"last_name": "Rosen",
"country": "DE",
"phone": "+491234567890",
"address": "100 Main St",
"city": "Berlin",
"zip": "10115",
},
description="Order #1234",
metadata={"order_id": "ord_1234"},
)