package com.ruoyi.message.sms.provider.nhfy; import com.alibaba.fastjson2.JSON; import com.ruoyi.message.config.MessageProperties; import com.ruoyi.message.config.MtSmsConfig; import com.ruoyi.message.config.RootMessageProperties; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * MT消息发送工具类(SP 向行业汇聚平台提交 MT 消息)。 *
* 接口地址:{@code http://ip:port/submitsm};编码:UTF-8;鉴权算法:MD5。 *
* 迁移说明:原类为 {@code com.smartor.common.MtSubmitSmUtil}({@code @Component} + {@code @Value} 注入),
* 迁移后配置改为从 {@link MessageProperties} 读取(底层仍是同一批 configuration key),行为不变。
*/
@Slf4j
@Component
public class MtSubmitSmUtil {
private static final RestTemplate REST_TEMPLATE = new RestTemplate();
private final MessageProperties properties;
public MtSubmitSmUtil(MessageProperties properties) {
this.properties = properties;
}
/**
* 发送 MT 消息
*
* @param destAddr 目标号码
* @param content 短信内容
* @return 响应结果
*/
public Map
* 例:{@code MD5:95555:12345:2016-10-09 16:19:43}
*/
private static String buildHashHex(String accountName, String password, String date) throws Exception {
String plain = "MD5:" + accountName + ":" + password + ":" + date;
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(plain.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
/**
* 判断 MT 响应是否成功({@code result == "0"})
*/
public static boolean isSuccess(Map