Files
booking_backend/payment/services.py
2026-04-10 20:51:43 -05:00

46 lines
1.3 KiB
Python

import uuid
from decimal import Decimal
from .models import PaymentRecord
def _generate_id(prefix):
return f"{prefix}_{uuid.uuid4().hex[:24]}"
def create_mock_payment_intent(*, booking, amount: Decimal, currency: str = "usd"):
payment = PaymentRecord.objects.create(
booking=booking,
stripe_payment_intent_id=_generate_id("pi_mock"),
amount=amount,
currency=currency,
status=PaymentRecord.Status.REQUIRES_PAYMENT,
)
client_secret = _generate_id("pi_secret_mock")
return payment, client_secret
def mark_payment_processing(payment):
payment.status = PaymentRecord.Status.PROCESSING
payment.save(update_fields=["status", "updated_at"])
return payment
def mark_payment_succeeded(payment):
payment.status = PaymentRecord.Status.SUCCEEDED
payment.stripe_charge_id = _generate_id("ch_mock")
payment.save(update_fields=["status", "stripe_charge_id", "updated_at"])
return payment
def mark_payment_failed(payment):
payment.status = PaymentRecord.Status.FAILED
payment.save(update_fields=["status", "updated_at"])
return payment
def mark_payment_refunded(payment):
payment.status = PaymentRecord.Status.REFUNDED
payment.save(update_fields=["status", "updated_at"])
return payment