Skip to content

Commit

Permalink
Comments and small TF changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Mirch committed Sep 3, 2023
1 parent e97bf40 commit ee41b52
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 20 deletions.
2 changes: 0 additions & 2 deletions infrastructure/iam.tf
Expand Up @@ -65,8 +65,6 @@ data "aws_iam_policy_document" "finish_payment_policy_document" {
statement {
actions = [
"dynamodb:UpdateItem",
"dynamodb:Query",
"dynamodb:GetItem"
]
resources = [
aws_dynamodb_table.payments.arn,
Expand Down
2 changes: 0 additions & 2 deletions infrastructure/lambda.tf
Expand Up @@ -37,6 +37,4 @@ resource "aws_lambda_function" "finish_payment_lambda" {
STRIPE_WEBHOOK_SECRET = stripe_webhook_endpoint.successful_payments.secret
}
}

depends_on = [stripe_webhook_endpoint.successful_payments]
}
28 changes: 12 additions & 16 deletions src/finish_payment.rs
Expand Up @@ -16,6 +16,7 @@ async fn handler(
let signature = get_header(&event, SIGNATURE_HEADER_KEY)?;
let webhook_secret = std::env::var(STRIPE_WEBHOOK_SECRET).map_err(|e| e.to_string())?;

// getting the event body as a string
let event_body = match event.body() {
Body::Text(s) => s,
_ => {
Expand All @@ -31,26 +32,20 @@ async fn handler(
Error::from(format!("Error constructing webhook event: {e}"))
})?;

let payment_id = {
let metadata = match webhook_event.data.clone().object {
EventObject::Charge(charge) => charge.metadata,
_ => {
tracing::error!("Error getting metadata");
return Err(Error::from("Error getting metadata"));
}
};
metadata.get("payment_id").unwrap().to_string()
};

let charge_status = match webhook_event.data.object {
EventObject::Charge(charge) => charge.status,
// confirming that the event is a charge.
let charge = match webhook_event.data.object {
EventObject::Charge(charge) => charge,
_ => {
tracing::error!("Error getting charge status");
return Err(Error::from("Error getting charge status"));
tracing::error!("The event is not a charge");
return Err(Error::from("The event is not a charge"));
}
};

let payment_status = match charge_status {
// getting the payment id from the event's metadata
let payment_id = charge.metadata.get("payment_id").unwrap().to_string();

// matching our payment status to Stripe's charge status
let payment_status = match charge.status {
ChargeStatus::Succeeded => PaymentStatus::Completed,
ChargeStatus::Failed => PaymentStatus::Failed,
_ => {
Expand All @@ -59,6 +54,7 @@ async fn handler(
}
};

// updatig the payment status in the database
payments_repository
.update_payment_status(&payment_id, payment_status)
.await?;
Expand Down

0 comments on commit ee41b52

Please sign in to comment.