Add initial documentation for Merchant Services API including contract status service details

This commit is contained in:
masoodafar-web
2025-12-08 01:31:29 +03:30
parent 201915d8c5
commit 13a3489765
9 changed files with 2140 additions and 58 deletions
+39 -21
View File
@@ -15,7 +15,7 @@
- ✅ Phase 1-3, 5-6, 8, 10-12: **100% Complete**
- ✅ Phase 4 (Commission & Worker): **100% Complete** (✅ All MVP features + Hangfire + Email/SMS Notifications)
- ✅ Phase 10 (Withdrawal): **100% Complete** ✅ (Commands + Mock + Real Payment Gateway APIs)
- ✅ Phase 11 (Daya Loan Integration): **100% Complete** ✅ (Mock API ready, Real API integration when available)
- ✅ Phase 11 (Daya Loan Integration): **100% Complete** ✅ (Mock + Real API both fully implemented)
-**Phase 12 (Package Purchase System)**: **100% Complete** ✅ (All Commands + Migration created)
-**Phase 9 (Club Discount Shop)**: **100% Complete** ✅ (Entities + CQRS + Proto + Services + Migration)
@@ -1757,8 +1757,8 @@ dotnet ef database update
### ✅ Phase 11: Daya Loan Integration (100% Complete)
**Status**: ✅ Fully Implemented with Mock API - Real API Integration Pending
**Completion Date**: 2024-12-02
**Status**: ✅ Fully Implemented - Both Mock and Real API Complete
**Completion Date**: 2024-12-06 (Real API)
**Documentation**: [daya-loan-integration.md](./daya-loan-integration.md)
#### 🎯 Overview
@@ -1799,16 +1799,22 @@ dotnet ef database update
- Handles: API errors gracefully with logging
- ✅ `DayaLoanApprovedEventHandler` - Handle post-approval actions
- ✅ `IDayaLoanApiService` interface + implementations:
- ✅ `MockDayaLoanApiService` - For testing (currently active)
- ✅ `DayaLoanApiService` - Real API skeleton (to be completed)
- ✅ `MockDayaLoanApiService` - For testing/development
- ✅ `DayaLoanApiService` - **Real API fully implemented** (POST /api/merchant/contracts)
**Infrastructure Layer**:
- ✅ Database Migration: `20251201191716_AddDayaLoanIntegration`
- Creates: DayaLoanContracts table with indexes
- Adds: HasReceivedDayaCredit, DayaCreditReceivedAt to Users
- ✅ Service Registration in ConfigureServices.cs
- Currently: MockDayaLoanApiService (for development)
- Production: Ready to switch to DayaLoanApiService
- Conditional registration based on `DayaApi:UseMock` config
- Mock: `MockDayaLoanApiService` (for testing)
- Real: `DayaLoanApiService` with HttpClient configuration
- ✅ HttpClient Configuration:
- BaseAddress: https://testdaya.tadbirandishan.com
- Header: merchant-permission-key authentication
- Timeout: 30 seconds
- Handler Lifetime: 5 minutes
**WebApi Layer**:
- ✅ `DayaLoanCheckWorker` - Hangfire background job (fully implemented)
@@ -1840,29 +1846,41 @@ dotnet ef database update
- ✅ Hangfire Dashboard access configured
- ✅ Comprehensive logging for monitoring
#### ⚠️ Pending Components (Only Real API Integration)
#### ✅ Daya API Integration (100% Complete)
**Daya API Integration** (When API becomes available):
- ❌ Replace `MockDayaLoanApiService` with `DayaLoanApiService`
- ❌ API configuration in `appsettings.json`:
**Real API Implementation**:
- ✅ `DayaLoanApiService` fully implemented with:
- HTTP POST to `/api/merchant/contracts`
- Request model: `DayaContractsRequest` with NationalCodes list
- Response models: `DayaContractsResponse`, `DayaContractData`
- Status mapping: Persian descriptions → `DayaLoanStatus` enum
- "فعال شده (در انتظار تسویه)" → PendingReceive
- "تایید شده" → Received
- "رد شده" → Rejected
- Error handling with empty results fallback
- Multiple contracts per user: Takes latest by DateTime
- ✅ API configuration in `appsettings.json`:
```json
{
"DayaApi": {
"BaseUrl": "https://api.daya.ir",
"ApiKey": "YOUR_API_KEY_HERE"
"UseMock": false,
"BaseAddress": "https://testdaya.tadbirandishan.com",
"MerchantPermissionKey": "14752708$Db5Wk5h...",
"CacheDurationMinutes": 20
}
}
```
- HttpClient configuration with retry policies
- ❌ Real API authentication mechanism
- ❌ Production testing with real Daya service
- HttpClient configuration with authentication headers
- ✅ Timeout and handler lifetime configured
- ✅ JSON serialization with `System.Text.Json`
**Notes**:
- Core implementation is 100% complete and ready for production
- Worker runs successfully every 15 minutes
- Migration already applied
- All business logic tested with mock data
- **Only pending**: Switching from Mock to Real API when Daya service is ready
- ✅ **100% Complete** - Both Mock and Real API fully implemented
- Worker runs successfully every 15 minutes
- Migration already applied
- ✅ Real API tested with Daya test server
- ✅ Configurable Mock/Real switch via `DayaApi:UseMock` flag
- ✅ Production ready with proper error handling and logging
**Protobuf/gRPC Services** (Optional):
- ❌ Proto definitions for Daya commands