Moibe's picture
Dos eventos acreditan correctamente
2817194
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
@app.get("/")
def start():
return {f"Status":"Deployed"}
@app.post("/webhook")
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"}