diff --git a/src/handlers/checkout.py b/src/handlers/checkout.py index 6fce316..91eec92 100644 --- a/src/handlers/checkout.py +++ b/src/handlers/checkout.py @@ -5,12 +5,14 @@ get_api_key, get_endpoint_secret, ) +from lib.queue import Queue from lib.errors import StripeException import stripe from lib.types import StripeCheckout db = Database(url=os.environ["DATABASE_URL"]) +queue = Queue(queue_url=os.environ["STRIPE_QUEUE_URL"]) stripe.api_key = get_api_key() @@ -24,8 +26,7 @@ def begin_fulfillment(session_id: str): if not should_process: return - # TODO: Place this event on the SQS queue for processing. - pass + queue.send({"id": checkout.id}) def process_webhook_request(payload: Any, signature: Any): diff --git a/src/handlers/fulfillment.py b/src/handlers/fulfillment.py index cc65283..b963961 100644 --- a/src/handlers/fulfillment.py +++ b/src/handlers/fulfillment.py @@ -1,3 +1,4 @@ +import json import os import requests @@ -19,6 +20,17 @@ stripe.api_key = get_api_key() +def handler(event: dict, context): + """ + Entry point invoked by SQS. Processes each record in the event, + which should contain a checkout session ID in its body. + """ + for record in event["Records"]: + body = json.loads(record["body"]) + checkout = StripeCheckout(id=body["id"]) + process_fulfillment(checkout) + + def process_fulfillment(checkout: StripeCheckout): """ Fulfills a successful checkout session.