senti-beta / integrations /flutterwave.py
joseph njoroge kariuki
Deploy Senti AI to Hugging Face Spaces
021e065
import time
import requests
class FlutterwaveIntegration:
"""
Pan-African payment processing.
Works in: Nigeria, Ghana, South Africa,
Kenya, Uganda, Tanzania, Rwanda, and more.
"""
BASE_URL = "https://api.flutterwave.com/v3"
def __init__(self, secret_key: str):
self.secret_key = secret_key
self.headers = {
"Authorization": f"Bearer {secret_key}",
"Content-Type": "application/json"
}
def initiate_payment(
self,
amount: float,
currency: str,
customer_email: str,
customer_phone: str,
description: str,
redirect_url: str
) -> dict:
payload = {
"tx_ref": f"senti_{int(time.time())}",
"amount": amount,
"currency": currency,
"redirect_url": redirect_url,
"customer": {
"email": customer_email,
"phone_number": customer_phone,
"name": "Senti Customer"
},
"customizations": {
"title": "Senti Payment",
"description": description,
"logo": "https://senti.ai/logo.png"
}
}
try:
response = requests.post(
f"{self.BASE_URL}/payments",
json=payload,
headers=self.headers,
timeout=10
)
return response.json()
except Exception as e:
return {"status": "error", "message": str(e)}
def get_transaction_status(
self, transaction_id: str
) -> dict:
try:
response = requests.get(
f"{self.BASE_URL}/transactions/{transaction_id}/verify",
headers=self.headers,
timeout=10
)
return response.json()
except Exception as e:
return {"status": "error", "message": str(e)}
def get_supported_countries(self) -> list:
return [
"NG", "GH", "ZA", "KE", "UG",
"TZ", "RW", "ZM", "CM", "CI"
]