Spaces:
Running
Running
import time | |
import stripe | |
from fastapi import FastAPI, Request, Header | |
import sulkuPypi | |
import globales | |
import herramientas | |
app = FastAPI() | |
string_key = globales.llave | |
# This is a terrible idea, only used for demo purposes! | |
app.state.stripe_customer_id = None | |
def start(): | |
return {f"Status":"Deployed"} | |
async def webhook_received(request: Request, stripe_signature: str = Header(None)): | |
webhook_secret = globales.webhook | |
data = await request.body() | |
print("Construyendo el evento:") | |
try: | |
event = stripe.Webhook.construct_event( | |
payload=data, | |
sig_header=stripe_signature, | |
secret=webhook_secret | |
) | |
# print("Evento construido...") | |
# print(event) | |
# print("Evento impreso") | |
except Exception as e: | |
print("Excepción es: ", e) | |
try: | |
event_data = event['data']['object'] | |
except Exception as e: | |
print("Excepción-183 es: ", e) | |
event_type = event['type'] | |
print("Voy a imprimir el event type:") | |
print(event_type) | |
print("Sucedido a las: ", herramientas.imprimeTime()) | |
if event_type == 'checkout.session.completed': | |
print("Checkout Session completado.") | |
print("Status:") | |
print(event_data['status']) | |
print("Payment Method Options:") | |
print(event_data['payment_method_options']) | |
print("Cantidad de elementos:") | |
print(len(event_data['payment_method_options'])) | |
#Si hay un elemento que es card abona inmediatamente. | |
#Si no, por ahora ignora. | |
if len(event_data['payment_method_options']) > 0: #Si es mayor que cero checa si existe card. | |
print("Ancho del contenido de card: ") | |
if len(event_data['payment_method_options']["card"]) > 1: #Si el contenido de card es mayor de uno, si existe y puedes finalmente procesar el pago. | |
cus_id = event_data['customer'] | |
print("Customer directo:", cus_id) | |
imagenes = event_data['metadata']['imagenes'] | |
print("Imágenes:") | |
print(imagenes) | |
herramientas.registrar_evento(cus_id, int(imagenes)) | |
if event_type == 'checkout.session.async_payment_succeeded': | |
print("Pago asíncrono completado.") | |
print("Checkout Session completado.") | |
print("Status:") | |
print(event_data['status']) | |
print("Payment Method Options:") | |
print(event_data['payment_method_options']) | |
print("Cantidad de elementos:") | |
print(len(event_data['payment_method_options'])) | |
cus_id = event_data['customer'] | |
print("Customer directo:", cus_id) | |
imagenes = event_data['metadata']['imagenes'] | |
print("Imágenes:") | |
print(imagenes) | |
herramientas.registrar_evento(cus_id, int(imagenes)) | |
else: | |
print(f'unhandled event: {event_type}') | |
return {"status": "success"} |