Design: Payment Handling System
In scope: Payment processing, status tracking, refund handling, transaction storage. Out of scope: User authentication, merchant onboarding, fraud detection.
Functional Requirements
Non-Functional Requirements
Jump into concepts and practice - no test required
Client | v API Gateway | v Payment Processor Service <--> Payment Gateway(s) | v Message Queue --> Refund Processor | v Database (Transactions) | v Cache (Payment Status) | v Notification Service | v Client
def process_payment(amount, card_info):
if not validate_card(card_info):
return "Invalid card"
if amount <= 0:
return "Invalid amount"
if not charge_card(card_info, amount):
return "Charge failed"
record_transaction(card_info, amount)
return "Payment successful"
process_payment(100, 'expired_card') if validate_card returns False for expired cards?validate_card returns False for expired cards, the first if condition triggers.