diff --git a/src/main/java/zw/qantra/tm/domain/dtos/sms/SmsPopCampaignRequest.java b/src/main/java/zw/qantra/tm/domain/dtos/sms/SmsPopCampaignRequest.java new file mode 100644 index 0000000..23414af --- /dev/null +++ b/src/main/java/zw/qantra/tm/domain/dtos/sms/SmsPopCampaignRequest.java @@ -0,0 +1,19 @@ +package zw.qantra.tm.domain.dtos.sms; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SmsPopCampaignRequest { + private String name; + private String message; + private String sender_id; + @Builder.Default + private String contact_import_method = "manual"; + private String manual_contacts; +} \ No newline at end of file diff --git a/src/main/java/zw/qantra/tm/domain/services/NotificationService.java b/src/main/java/zw/qantra/tm/domain/services/NotificationService.java index 0112637..f59640c 100644 --- a/src/main/java/zw/qantra/tm/domain/services/NotificationService.java +++ b/src/main/java/zw/qantra/tm/domain/services/NotificationService.java @@ -12,16 +12,12 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import jakarta.mail.internet.MimeMessage; -import zw.qantra.tm.domain.dtos.sms.SmsApiResponse; -import zw.qantra.tm.domain.dtos.sms.SmsBatchRequest; -import zw.qantra.tm.domain.dtos.sms.SmsMessage; +import zw.qantra.tm.domain.dtos.sms.SmsPopCampaignRequest; import zw.qantra.tm.rest.RestService; import java.io.BufferedReader; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -import java.util.Collections; -import java.util.UUID; import java.util.stream.Collectors; @Service @@ -32,10 +28,10 @@ public class NotificationService { private final RestService restService; private final JavaMailSender emailSender; - @Value("${zss.sms.api.url}") - private String smsApiUrl; - @Value("${zss.sms.api.auth}") - private String smsApiAuth; + @Value("${sms-pop.url}") + private String smsPopUrl; + @Value("${sms-pop.apikey}") + private String smsPopApiKey; @Value("${sms.debug}") private Boolean smsDebug; @@ -108,28 +104,25 @@ public class NotificationService { return; } try { - SmsMessage smsMessage = SmsMessage.builder() - .reference(UUID.randomUUID().toString()) - .message(message) - .msisdn(to) - .build(); + String phoneNumber = to; + if (phoneNumber.startsWith("+")) { + phoneNumber = phoneNumber.substring(1); + } - SmsBatchRequest batchRequest = SmsBatchRequest.builder() - .batchReference(UUID.randomUUID().toString()) - .smsList(Collections.singletonList(smsMessage)) + SmsPopCampaignRequest campaignRequest = SmsPopCampaignRequest.builder() + .name("Velocity Payments") + .message(message) + .sender_id("Velocity") + .contact_import_method("manual") + .manual_contacts(phoneNumber) .build(); HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", smsApiAuth); + headers.set("Authorization", "Bearer " + smsPopApiKey); - SmsApiResponse response = restService.postWithExternalAuth( - smsApiUrl, - batchRequest, - headers, - SmsApiResponse.class - ); + restService.postAs(smsPopUrl, campaignRequest, headers, Object.class); - logger.info("SMS sent to {} - Status: {}, Result: {}", to, response.getStatus(), response.getResult()); + logger.info("SMS sent to {} via SMSPOP", to); } catch (Exception e) { logger.error("Failed to send SMS to {}: {}", to, e.getMessage(), e); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 65c3b44..f006aee 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -84,9 +84,10 @@ jobrunr.datasource.password= app.reports.storage-path=/srv/data/reports app.base-url=https://payapi.velocityafrica.net -zss.sms.api.url=https://secure.zss.co.zw/vportal/cnm/vsms/json/batch -zss.sms.api.auth=Basic UWFudHJhdGVjaDpVbUk3OUpwUDh3QTY= sms.debug=false +sms-pop.url=https://smspop.co.zw/api/campaigns +sms-pop.apikey=108|ypBpUtJGlPzelxJl2aySp672I9KKbyaQPtcxMPBrfb70be27 + cloudflare-token=cfut_U0qhvhzAATLqHQa9lad7oRmBmPoJ6n9uIoCBbNOWc9884f18 cloudflare-zone-id=378cea8e50c0d9a158816109b3b1fd8d \ No newline at end of file