From 1a0bb83c99e16e8dfd438c54e0dfa9c12a433b2c Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sat, 28 Feb 2026 04:01:45 +0330 Subject: [PATCH] feat: Enhance SMS verification with new token handling and update API key --- .../Common/Interfaces/IKavenegarService.cs | 7 +++- .../CreateNewOtpTokenEventHandler.cs | 6 +-- .../CreateNewOtpTokenCommandHandler.cs | 5 +-- .../Services/KavenegarService.cs | 39 ++++++++++++++++++- .../appsettings.Staging.json | 2 +- src/CMSMicroservice.WebApi/appsettings.json | 2 +- 6 files changed, 51 insertions(+), 10 deletions(-) diff --git a/src/CMSMicroservice.Application/Common/Interfaces/IKavenegarService.cs b/src/CMSMicroservice.Application/Common/Interfaces/IKavenegarService.cs index a8982bc..b0d841d 100644 --- a/src/CMSMicroservice.Application/Common/Interfaces/IKavenegarService.cs +++ b/src/CMSMicroservice.Application/Common/Interfaces/IKavenegarService.cs @@ -13,5 +13,10 @@ public interface IKavenegarService /// /// ارسال پیامک با قالب (VerifyLookup) /// - Task VerifyLookupAsync(string mobile, string token, string template = "Afrino"); + Task VerifyLookupAsync(string mobile, string token, string template = "OTP"); + + /// + /// ارسال پیامک با قالب و توکن دوم (VerifyLookup) — مثلاً برای قراردادها + /// + Task VerifyLookupAsync(string mobile, string token, string token2, string template); } diff --git a/src/CMSMicroservice.Application/OtpTokenCQ/EventHandlers/CreateNewOtpTokenEventHandlers/CreateNewOtpTokenEventHandler.cs b/src/CMSMicroservice.Application/OtpTokenCQ/EventHandlers/CreateNewOtpTokenEventHandlers/CreateNewOtpTokenEventHandler.cs index 9a571c4..e695a18 100644 --- a/src/CMSMicroservice.Application/OtpTokenCQ/EventHandlers/CreateNewOtpTokenEventHandlers/CreateNewOtpTokenEventHandler.cs +++ b/src/CMSMicroservice.Application/OtpTokenCQ/EventHandlers/CreateNewOtpTokenEventHandlers/CreateNewOtpTokenEventHandler.cs @@ -26,12 +26,12 @@ public class CreateNewOtpTokenEventHandler : INotificationHandler - public async Task VerifyLookupAsync(string mobile, string token, string template = "Afrino") + public async Task VerifyLookupAsync(string mobile, string token, string template = "OTP") { if (!_smsSettings.Enabled) { @@ -106,4 +106,41 @@ public class KavenegarService : IKavenegarService throw; } } + + /// + public async Task VerifyLookupAsync(string mobile, string token, string token2, string template) + { + if (!_smsSettings.Enabled) + { + _logger.LogInformation("SMS is disabled. Skipping VerifyLookup to {Mobile}", mobile); + return; + } + + if (_kavenegarApi == null) + { + _logger.LogWarning("⚠️ Kavenegar API not initialized, cannot send VerifyLookup"); + return; + } + + try + { + await Task.Run(() => + { + var result = _kavenegarApi.VerifyLookup( + receptor: mobile, + token: token, + token2: token2, + token3: "", + template: template); + + _logger.LogInformation("📱 VerifyLookup SMS sent to {Mobile} with template {Template} (token2), MessageId: {MessageId}", + mobile, template, result.Messageid); + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "❌ Kavenegar error sending VerifyLookup to {Mobile}: {Message}", mobile, ex.Message); + throw; + } + } } diff --git a/src/CMSMicroservice.WebApi/appsettings.Staging.json b/src/CMSMicroservice.WebApi/appsettings.Staging.json index c8e1395..470741b 100644 --- a/src/CMSMicroservice.WebApi/appsettings.Staging.json +++ b/src/CMSMicroservice.WebApi/appsettings.Staging.json @@ -44,7 +44,7 @@ "Sms": { "Enabled": true, "Provider": "Kavenegar", - "KavenegarApiKey": "497263626F32626A48685A6137524C4F78575A766E4C74694A556B79317648424964655030682B554545413D", + "KavenegarApiKey": "43676A4E786A6C50452F2F6252507939346A5145764B33566B456454374E657A614468706658656D6534593D", "Sender": "1000001110100" }, "DayaPayment": { diff --git a/src/CMSMicroservice.WebApi/appsettings.json b/src/CMSMicroservice.WebApi/appsettings.json index d4f558b..29d144a 100644 --- a/src/CMSMicroservice.WebApi/appsettings.json +++ b/src/CMSMicroservice.WebApi/appsettings.json @@ -51,7 +51,7 @@ "Sms": { "Enabled": true, "Provider": "Kavenegar", - "KavenegarApiKey": "497263626F32626A48685A6137524C4F78575A766E4C74694A556B79317648424964655030682B554545413D", + "KavenegarApiKey": "43676A4E786A6C50452F2F6252507939346A5145764B33566B456454374E657A614468706658656D6534593D", "Sender": "1000001110100" }, "DayaPayment": {