sequenceDiagram participant User participant Payment Gateway participant Database participant Service User->>Service: Initiate Payment Service->>Payment Gateway: Send Payment Request alt Successful Payment Payment Gateway-->>Service: Confirm Payment Service->>Database: Record Payment Database-->>Service: Payment Recorded Service-->>User: Payment Success else External Payment Failed Payment Gateway-->>Service: Payment Failed Service-->>User: Payment Failed else Database Failure Service->>Database: Attempt to Record Payment Database-->>Service: Database Error Service-->>User: Unable to process payment end Service->>Database: Commit alt Rollback Required Database->>Database: Rollback Changes end