* fix: improve error handling in Stripe collectCard method - Add CollectCardFailure error code for better error categorization - Replace generic error with ErrorWithCode for consistent error handling - Add error mappings for common Stripe errors (customer not found, invalid API key, rate limit, etc.) - Include Stripe error message when available for better debugging - Follow the same pattern used in chargeCard method Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * fix: add CollectCardFailure to getHttpStatusCode mapping This ensures the error returns 400 instead of 500 when collectCard fails. Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * docs: add comments explaining ChargeCardFailure vs CollectCardFailure Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * refactor: simplify collectCard error handling Remove complex error mapping logic per code review feedback. Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * test: add CollectCardFailure to HTTP status code tests Co-Authored-By: benny@cal.com <sldisek783@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
45 lines
2.5 KiB
TypeScript
45 lines
2.5 KiB
TypeScript
export enum ErrorCode {
|
|
// Generic HTTP error codes for transport-agnostic error handling
|
|
Unauthorized = "unauthorized_error",
|
|
Forbidden = "forbidden_error",
|
|
NotFound = "not_found_error",
|
|
BadRequest = "bad_request_error",
|
|
InternalServerError = "internal_server_error",
|
|
|
|
// Domain-specific error codes
|
|
PaymentCreationFailure = "payment_not_created_error",
|
|
NoAvailableUsersFound = "no_available_users_found_error",
|
|
// Thrown when charging a card fails (e.g., insufficient funds, card declined during actual payment)
|
|
ChargeCardFailure = "couldnt_charge_card_error",
|
|
// Thrown when collecting/verifying a payment method fails (e.g., card setup failed during HOLD payment flow)
|
|
CollectCardFailure = "couldnt_collect_card_error",
|
|
RequestBodyWithouEnd = "request_body_end_time_internal_error",
|
|
AlreadySignedUpForBooking = "already_signed_up_for_this_booking_error",
|
|
FixedHostsUnavailableForBooking = "fixed_hosts_unavailable_for_booking",
|
|
RoundRobinHostsUnavailableForBooking = "round_robin_host_unavailable_for_booking",
|
|
EventTypeNotFound = "event_type_not_found_error",
|
|
BookingNotFound = "booking_not_found_error",
|
|
BookingSeatsFull = "booking_seats_full_error",
|
|
MissingPaymentCredential = "missing_payment_credential_error",
|
|
MissingPaymentAppId = "missing_payment_app_id_error",
|
|
NotEnoughAvailableSeats = "not_enough_available_seats_error",
|
|
AvailabilityNotFoundInSchedule = "availability_not_found_in_schedule_error",
|
|
CancelledBookingsCannotBeRescheduled = "cancelled_bookings_cannot_be_rescheduled",
|
|
UnableToSubscribeToThePlatform = "unable_to_subscribe_to_the_platform",
|
|
UpdatingOauthClientError = "updating_oauth_client_error",
|
|
CreatingOauthClientError = "creating_oauth_client_error",
|
|
BookingTimeOutOfBounds = "booking_time_out_of_bounds_error",
|
|
BookingConflict = "booking_conflict_error",
|
|
BookerLimitExceeded = "booker_limit_exceeded_error",
|
|
BookerLimitExceededReschedule = "booker_limit_exceeded_error_reschedule",
|
|
BookingNotAllowedByRestrictionSchedule = "booking_not_allowed_by_restriction_schedule_error",
|
|
RestrictionScheduleNotFound = "restriction_schedule_not_found_error",
|
|
EventTypeNoHosts = "event_type_no_hosts",
|
|
RequestBodyInvalid = "request_body_invalid_error",
|
|
PrivateLinkExpired = "private_link_expired",
|
|
BookerEmailBlocked = "booker_email_blocked",
|
|
BookerEmailRequiresLogin = "booker_email_requires_login",
|
|
InvalidVerificationCode = "invalid_verification_code",
|
|
UnableToValidateVerificationCode = "unable_to_validate_verification_code",
|
|
}
|