updating sms vendor

This commit is contained in:
2026-07-06 12:17:19 +02:00
parent a4d210393e
commit 220c19123f
3 changed files with 40 additions and 27 deletions

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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