```mermaid sequenceDiagram participant User as User participant Controller as Controller participant PaymentService as PaymentService participant Gateway as PaymentGateway participant DB as Database User ->> Controller: Initiate Payment Controller ->> PaymentService: Process Payment PaymentService ->> Gateway: Call Payment Gateway alt Successful Payment Gateway -->> PaymentService: Payment Success PaymentService ->> DB: Save Transaction DB -->> PaymentService: Transaction Saved PaymentService -->> Controller: Payment Processed Controller -->> User: Payment Successful else External Gateway Failure Gateway -->> PaymentService: Payment Failed PaymentService -->> Controller: Payment Failed Controller -->> User: Payment Failed else DB Failure Gateway -->> PaymentService: Payment Success PaymentService ->> DB: Save Transaction DB -->> PaymentService: DB Error PaymentService ->> Controller: Rollback Transaction Controller -->> User: Payment Failed end ```