How aniketkr112/nexupay works
Nexupay is a merchant-facing payment service: merchants create payment requests, initiate UPI attempts, and can query payment status; the service coordinates bank processing and records outcomes. Separate workflows manage merchant credentials, refunds, and payment webhooks, with scheduled recovery for uncertain payment/refund outcomes and webhook delivery. The graph reflects sampled service and transaction code plus subsystem names in the tree; the README is unreadable, and controller wiring not shown in sampled sources is not asserted.
Main entry points: PaymentAttemptTransactionService.java Attempt transaction · PaymentWebhookService.java Webhook delivery · PaymentRecoveryService.java Payment recovery · BankService.java Bank service
Components 28
Merchant identity
- Merchant API
payment-service/src/main/java/com/nexupay/payment/merchant/controller/MerchantController.java - Merchant service
payment-service/src/main/java/com/nexupay/payment/merchant/service/MerchantService.java - Merchant repository
payment-service/src/main/java/com/nexupay/payment/merchant/repository/MerchantRepository.java - Credential repository
payment-service/src/main/java/com/nexupay/payment/credential/repository/ApiCredentialRepository.java - API authentication
payment-service/src/main/java/com/nexupay/payment/security/ApiAuthenticationFilter.java - Redis auth cache
payment-service/src/main/java/com/nexupay/payment/security/cache/RedisAuthenticationCacheService.java
Payment processing
- Payment API
payment-service/src/main/java/com/nexupay/payment/payment/controller/PaymentController.java - Payment service
payment-service/src/main/java/com/nexupay/payment/payment/service/PaymentService.java - Payment repository
payment-service/src/main/java/com/nexupay/payment/payment/repository/PaymentRepository.java - Checkout API
payment-service/src/main/java/com/nexupay/payment/payment/controller/CheckoutController.java - Checkout service
payment-service/src/main/java/com/nexupay/payment/payment/service/CheckoutServiceImpl.java - Attempt API
payment-service/src/main/java/com/nexupay/payment/paymentattempt/controller/PaymentAttemptController.java - Attempt transaction
payment-service/src/main/java/com/nexupay/payment/paymentattempt/service/transaction/PaymentAttemptTransactionService.java - Attempt repository
payment-service/src/main/java/com/nexupay/payment/paymentattempt/repository/PaymentAttemptRepository.java - Payment recovery
payment-service/src/main/java/com/nexupay/payment/paymentattempt/service/PaymentRecoveryService.java
Refund processing
- Refund API
payment-service/src/main/java/com/nexupay/payment/refund/controller/RefundController.java - Refund service
payment-service/src/main/java/com/nexupay/payment/refund/service/RefundServiceImpl.java - Refund processing
payment-service/src/main/java/com/nexupay/payment/refund/service/transaction/RefundProcessingTransactionService.java - Refund repository
payment-service/src/main/java/com/nexupay/payment/refund/repository/RefundRepository.java - Refund scheduler
payment-service/src/main/java/com/nexupay/payment/refund/scheduler/RefundScheduler.java
Bank and delivery
- Bank service
payment-service/src/main/java/com/nexupay/payment/bank/service/BankService.java - Webhook scheduler
payment-service/src/main/java/com/nexupay/payment/payment/scheduler/PaymentWebhookScheduler.java - Webhook delivery
payment-service/src/main/java/com/nexupay/payment/payment/service/PaymentWebhookService.java - Webhook repository
payment-service/src/main/java/com/nexupay/payment/payment/repository/PaymentWebhookRepository.java
Other components
- Merchant
- Redis
- Bank
- Merchant webhook
Connections 20
- Merchant → Merchant API: manages account
- Merchant service → Merchant repository: reads and writes
- Merchant service → Credential repository: creates credentials
- API authentication → Redis auth cache: checks cache
- Redis auth cache → Redis: reads and writes
- Payment service → Payment repository: checks and saves
- Payment recovery → Attempt repository: loads attempts
- Payment recovery → Bank service: checks status
- Payment recovery → Attempt transaction: finalizes attempt
- Attempt transaction → Payment repository: locks and reads
- Attempt transaction → Attempt repository: reads and saves
- Attempt transaction → Merchant repository: loads merchant
- Attempt transaction → Webhook repository: saves webhook
- Refund processing → Bank service: submits or looks up
- Refund processing → Refund repository: saves refund
- Bank service → Bank: bank operations
- Webhook scheduler → Webhook delivery: dispatches delivery
- Webhook delivery → Payment repository: loads payment
- Webhook delivery → Webhook repository: saves delivery state
- Webhook delivery → Merchant webhook: posts notification