修复华为阿里云片短信的致命错误,该错误导致自定义模板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();
String s = JSONObject.toJSONString(messages);
sendSmsRequest.setPhoneNumbers(phone)
.setTemplateCode(alibabaSmsConfig.getTemplateId())
.setTemplateCode(templateId)
.setTemplateParam(s)
.setSignName(alibabaSmsConfig.getSignature());
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) {
SendBatchSmsRequest sendBatchSmsRequest = new SendBatchSmsRequest();
sendBatchSmsRequest.setPhoneNumberJson(JSONObject.toJSONString(phones))//群发的手机号
.setTemplateCode(alibabaSmsConfig.getTemplateId())//模板id
.setTemplateCode(templateId)//模板id
.setTemplateParamJson(JSONObject.toJSONString(messages))//消息内容
.setSignNameJson(alibabaSmsConfig.getSignature());//短信签名
RuntimeOptions runtime = new RuntimeOptions();

View File

@ -52,7 +52,7 @@ public class HuaweiSmsImpl implements SmsBlend {
list.add(entry.getValue());
}
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<>();
headers.put("Authorization",Constant.HUAWEI_AUTH_HEADER_VALUE);
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 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
@Restricted
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);
}
@Override
@Restricted
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);
}
@Override
@Restricted
public SmsResponse massTexting(List<String> phones, String message) {
@ -149,7 +160,7 @@ public class YunPianSmsImpl implements SmsBlend {
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<>();
if (mes.isEmpty()) {
message = messages;
@ -159,7 +170,7 @@ public class YunPianSmsImpl implements SmsBlend {
Map<String, String> body = new HashMap<>();
body.put("apikey", config.getApikey());
body.put("mobile", phone);
body.put("tpl_id", config.getTemplateId());
body.put("tpl_id", tplId);
body.put("tpl_value", formattingMap(message));
if (!config.getCallbackUrl().isEmpty()) body.put("callback_url", config.getCallbackUrl());
return body;
@ -172,19 +183,6 @@ public class YunPianSmsImpl implements SmsBlend {
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) {
Map<String, String> headers = getHeaders();
AtomicReference<SmsResponse> smsResponse = null;