修复华为阿里云片短信的致命错误,该错误导致自定义模板id使用的还是配置文件中的ID

This commit is contained in:
wind 2023-04-10 21:13:55 +08:00
parent 203862a102
commit c1e0f23d00
3 changed files with 22 additions and 24 deletions

View File

@ -68,7 +68,7 @@ public class AlibabaSmsImpl implements SmsBlend {
SendSmsRequest sendSmsRequest = new SendSmsRequest(); SendSmsRequest sendSmsRequest = new SendSmsRequest();
String s = JSONObject.toJSONString(messages); String s = JSONObject.toJSONString(messages);
sendSmsRequest.setPhoneNumbers(phone) sendSmsRequest.setPhoneNumbers(phone)
.setTemplateCode(alibabaSmsConfig.getTemplateId()) .setTemplateCode(templateId)
.setTemplateParam(s) .setTemplateParam(s)
.setSignName(alibabaSmsConfig.getSignature()); .setSignName(alibabaSmsConfig.getSignature());
RuntimeOptions runtime = new RuntimeOptions(); RuntimeOptions runtime = new RuntimeOptions();
@ -108,7 +108,7 @@ public class AlibabaSmsImpl implements SmsBlend {
public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) { public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
SendBatchSmsRequest sendBatchSmsRequest = new SendBatchSmsRequest(); SendBatchSmsRequest sendBatchSmsRequest = new SendBatchSmsRequest();
sendBatchSmsRequest.setPhoneNumberJson(JSONObject.toJSONString(phones))//群发的手机号 sendBatchSmsRequest.setPhoneNumberJson(JSONObject.toJSONString(phones))//群发的手机号
.setTemplateCode(alibabaSmsConfig.getTemplateId())//模板id .setTemplateCode(templateId)//模板id
.setTemplateParamJson(JSONObject.toJSONString(messages))//消息内容 .setTemplateParamJson(JSONObject.toJSONString(messages))//消息内容
.setSignNameJson(alibabaSmsConfig.getSignature());//短信签名 .setSignNameJson(alibabaSmsConfig.getSignature());//短信签名
RuntimeOptions runtime = new RuntimeOptions(); RuntimeOptions runtime = new RuntimeOptions();

View File

@ -52,7 +52,7 @@ public class HuaweiSmsImpl implements SmsBlend {
list.add(entry.getValue()); list.add(entry.getValue());
} }
String mess = listToString(list); String mess = listToString(list);
String requestBody = HuaweiBuilder.buildRequestBody(config.getSender(), phone, config.getTemplateId(), mess, config.getStatusCallBack(), config.getSignature()); String requestBody = HuaweiBuilder.buildRequestBody(config.getSender(), phone, templateId, mess, config.getStatusCallBack(), config.getSignature());
Map<String,String> headers = new LinkedHashMap<>(); Map<String,String> headers = new LinkedHashMap<>();
headers.put("Authorization",Constant.HUAWEI_AUTH_HEADER_VALUE); headers.put("Authorization",Constant.HUAWEI_AUTH_HEADER_VALUE);
headers.put("X-WSSE",HuaweiBuilder.buildWsseHeader(config.getAppKey(), config.getAppSecret())); headers.put("X-WSSE",HuaweiBuilder.buildWsseHeader(config.getAppKey(), config.getAppSecret()));

View File

@ -27,21 +27,32 @@ public class YunPianSmsImpl implements SmsBlend {
private ForestConfiguration http; private ForestConfiguration http;
private static SmsResponse getSmsResponse(JSONObject execute) {
SmsResponse smsResponse = new SmsResponse();
smsResponse.setCode(execute.getString("code"));
smsResponse.setMessage(execute.getString("msg"));
smsResponse.setBizId(execute.getString("sid"));
if (execute.getInteger("code") != 0) {
smsResponse.setErrMessage(execute.getString("msg"));
}
smsResponse.setData(execute);
return smsResponse;
}
@Override @Override
@Restricted @Restricted
public SmsResponse sendMessage(String phone, String message) { public SmsResponse sendMessage(String phone, String message) {
Map<String, String> body = setBody(phone, message, null); Map<String, String> body = setBody(phone, message, null, config.getTemplateId());
return getSendResponse(body); return getSendResponse(body);
} }
@Override @Override
@Restricted @Restricted
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
Map<String, String> body = setBody(phone, "", messages); Map<String, String> body = setBody(phone, "", messages,templateId);
return getSendResponse(body); return getSendResponse(body);
} }
@Override @Override
@Restricted @Restricted
public SmsResponse massTexting(List<String> phones, String message) { public SmsResponse massTexting(List<String> phones, String message) {
@ -149,7 +160,7 @@ public class YunPianSmsImpl implements SmsBlend {
return str.toString(); return str.toString();
} }
private Map<String, String> setBody(String phone, String mes, LinkedHashMap<String, String> messages) { private Map<String, String> setBody(String phone, String mes, LinkedHashMap<String, String> messages, String tplId) {
LinkedHashMap<String, String> message = new LinkedHashMap<>(); LinkedHashMap<String, String> message = new LinkedHashMap<>();
if (mes.isEmpty()) { if (mes.isEmpty()) {
message = messages; message = messages;
@ -159,7 +170,7 @@ public class YunPianSmsImpl implements SmsBlend {
Map<String, String> body = new HashMap<>(); Map<String, String> body = new HashMap<>();
body.put("apikey", config.getApikey()); body.put("apikey", config.getApikey());
body.put("mobile", phone); body.put("mobile", phone);
body.put("tpl_id", config.getTemplateId()); body.put("tpl_id", tplId);
body.put("tpl_value", formattingMap(message)); body.put("tpl_value", formattingMap(message));
if (!config.getCallbackUrl().isEmpty()) body.put("callback_url", config.getCallbackUrl()); if (!config.getCallbackUrl().isEmpty()) body.put("callback_url", config.getCallbackUrl());
return body; return body;
@ -172,19 +183,6 @@ public class YunPianSmsImpl implements SmsBlend {
return headers; return headers;
} }
private static SmsResponse getSmsResponse(JSONObject execute) {
SmsResponse smsResponse = new SmsResponse();
smsResponse.setCode(execute.getString("code"));
smsResponse.setMessage(execute.getString("msg"));
smsResponse.setBizId(execute.getString("sid"));
if (execute.getInteger("code") != 0) {
smsResponse.setErrMessage(execute.getString("msg"));
}
smsResponse.setData(execute);
return smsResponse;
}
private SmsResponse getSendResponse(Map<String, String> body) { private SmsResponse getSendResponse(Map<String, String> body) {
Map<String, String> headers = getHeaders(); Map<String, String> headers = getHeaders();
AtomicReference<SmsResponse> smsResponse = null; AtomicReference<SmsResponse> smsResponse = null;