Nano Banana Pro
Agent skill for nano-banana-pro
You are assisting in building a **centralized payment gateway** designed to serve multiple external applications (tenants). The gateway is responsible for processing payments (starting with Stripe), ensuring data isolation across apps, and supporting reliability and security.
Sign in to like and favorite skills
You are assisting in building a centralized payment gateway designed to serve multiple external applications (tenants). The gateway is responsible for processing payments (starting with Stripe), ensuring data isolation across apps, and supporting reliability and security.
We are using:
AppId: Identifies the external app (merchant).UserId: Identifies the end customer within an app.Features/Payments/CreatePayment.cs)appId from token claims.appId to logically isolate data.[POST] /payments
PaymentProcessedEvent to RabbitMQ[POST] /payments/refund
[POST] /webhooks/stripe
Webhook Management (internal admin-only)
Idempotency Table
PaymentGateway/ │ ├── Api/ │ ├── Program.cs │ ├── Startup.cs │ └── Middlewares/ │ └── ExceptionHandlingMiddleware.cs │ ├── Features/ │ ├── Payments/ │ │ ├── Create/ │ │ │ ├── CreatePaymentCommand.cs │ │ │ ├── CreatePaymentHandler.cs │ │ │ └── CreatePaymentRequest.cs │ │ ├── Refund/ │ │ │ ├── RequestRefundCommand.cs │ │ │ ├── RequestRefundHandler.cs │ │ │ └── RequestRefundRequest.cs │ │ └── Models/ │ │ └── Payment.cs │ │ │ ├── Webhooks/ │ │ ├── StripeWebhookHandler.cs │ │ └── AppWebhookDispatcher.cs │ │ │ ├── Apps/ │ │ ├── RegisterAppCommand.cs │ │ ├── App.cs │ │ └── WebhookConfig.cs │ │ │ └── Admin/ │ ├── GetAllAppsHandler.cs │ └── RetryWebhookCommand.cs │ ├── Infrastructure/ │ ├── Auth/ │ │ └── JwtValidator.cs │ ├── Database/ │ │ ├── AppDbContext.cs │ │ ├── EntityConfigurations/ │ │ └── Migrations/ │ ├── PaymentProviders/ │ │ ├── Stripe/ │ │ │ └── StripePaymentProvider.cs │ │ └── IPaymentProvider.cs │ ├── Messaging/ │ │ ├── RabbitMqPublisher.cs │ │ ├── Consumers/ │ │ │ └── RefundRequestedConsumer.cs │ │ └── Contracts/ │ │ └── PaymentProcessedEvent.cs │ ├── Outbox/ │ │ ├── OutboxMessage.cs │ │ ├── OutboxProcessor.cs │ │ └── OutboxPublisherService.cs │ ├── Webhooks/ │ │ └── WebhookSender.cs │ └── Logging/ │ └── SerilogConfig.cs (or AppInsights etc.) │ ├── Common/ │ ├── Interfaces/ │ │ ├── ICommand.cs │ │ ├── ICommandHandler.cs │ │ └── IScopedService.cs │ ├── Errors/ │ │ └── ProblemDetailsFactory.cs │ ├── Extensions/ │ │ └── HttpContextExtensions.cs │ ├── Enums/ │ │ └── PaymentStatus.cs │ └── Constants/ │ └── Roles.cs, Claims.cs │ ├── BackgroundWorkers/ │ ├── OutboxWorker.cs │ └── WebhookRetryWorker.cs │ ├── Tests/ │ ├── Payments/ │ └── Webhooks/ │ ├── appsettings.json ├── docker-compose.yml └── copilot-instructions.md