workspace extends ../models/models.dsl { name "Payment" description "Zoom in on the payment functionality of the Sweetgreen digital ordering platform and in-store process." views { container digitalOrderingPlatformSoftwareSystem "Container_Payment_Management" { title "Payment Management | System Diagram" description "System diagram for managing payments in the digital ordering platform" include customer gravy gravyDb payment-svc orderApp payment-svc-db stripe } dynamic digitalOrderingPlatformSoftwareSystem "Dynamic_Payment_Management_Add" { title "Payment Managemeng | Add Payement Method" description "System diagram for adding a payment method" customer -> orderApp "Enter credit card number in" orderApp -> payment-svc "Create Payment Method Setup Payment Intent" payment-svc -> gravy "Get user ID from" gravy -> gravyDb "Fetch user data from session" payment-svc -> stripe "Create Stripe customer" payment-svc -> payment-svc-db "Create record with Stripe reference" payment-svc -> stripe "Create Setup Intent" orderApp -> stripe "Confirm Setup Intent" orderApp -> payment-svc "Add payment metadata" payment-svc -> payment-svc-db "Update payment profile with metadata" } dynamic digitalOrderingPlatformSoftwareSystem "Dynamic_Payment_Management_Delete" { title "Payment Managemeng | Delete Payement Method" description "System diagram for deleting a payment method" customer -> orderApp "Select credit card to delete from" orderApp -> payment-svc "Delete payment by id from" payment-svc -> gravy "Get Customer ID from" gravy -> gravyDb "Fetch Customer data from session" payment-svc -> payment-svc-db "Get customer's payment profile from" payment-svc -> stripe "Get user's payment method list from" payment-svc -> stripe "Detach payment method from Stripe user" } dynamic digitalOrderingPlatformSoftwareSystem "Dynamic_Payment_Management_Edit" { title "Payment Managemeng | Edit Payement Method" description "System diagram for editing a payment method" customer -> orderApp "Select credit card to update from" orderApp -> payment-svc "Delete payment by id from" payment-svc -> gravy "Get Customer ID from" gravy -> gravyDb "Fetch Customer data from session" payment-svc -> payment-svc-db "Get customer's payment profile from" payment-svc -> stripe "Get user's payment method list from" payment-svc -> stripe "Detach payment method from Stripe user" } } }