coinbase-commerce-python icon indicating copy to clipboard operation
coinbase-commerce-python copied to clipboard

how to use in webhook with fastapi

Open galhadida80 opened this issue 2 years ago • 1 comments

galhadida80 avatar Jan 09 '23 12:01 galhadida80

Hey, you just need to expose and endpoint where your request payload is a Charge, something like below can help:

@app.post("/coinbase-payment")
async def coinbase_payment(request: Request) -> dict:
    """Handle Webhook Events from Coinbase Commerce"""
    payload = await request.body()
    signature = request.headers.get('X-CC-Webhook-Signature')
    try:
        # Validate the webhook payload and signature
        event = Webhook.construct_event(payload.decode(), signature, COINBASE_SECRET)
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

    # Handle specific event types
    if event.type == 'charge:confirmed':
        handle_charge_confirmed(event.data)
    elif event.type == 'charge:failed':
        handle_charge_failed(event.data)
    else:
        logging.info(f"Coinbase: Unhandled Event Type {event.type}")

    return JSONResponse(content={'status': 'success'})

ayushanand18 avatar Jan 06 '24 04:01 ayushanand18