最近做了阿里大于短信的功能,记录一下
创建应用,并记录下应用的KeyId 及 KeySecret
下载sdk
准备完毕,直接上代码
随便弄个 controller
@ApiOperation("阿里大于短信发送")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "query", name = "mobile", value = "mobile", required = true, dataType = "String")
})
@PostMapping("/GetAliDySms")
public JsonResult GetAliDySms(String mobile) {
try {
String smsParamString = "{\"code\":\"\",\"product\":\"xxxx\"}";
aliDySms.sendSms(mobile, "SMS_63355238", smsParamString);
return JsonResult.success("发送失败");
} catch (Exception e) {
// TODO: handle exception
LOG.error(e.getMessage());
return JsonResult.failMsg(e.getMessage());
}
}
AliDySms:
import com.modou.park.util.StringUtil;
import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
/**
* 阿里大于短信
* @author cdj
* @date 2018年8月3日 下午5:20:22
*/
@Component
public class AliDySms {
// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static final String accessKeyId = "xxxx";
static final String accessKeySecret = "xxxxxxxxxxxxxxxx";
static final String smsFreeSignName = "xxx";
private static String url = "https://eco.taobao.com/router/rest";
private static String smsType = "normal";
private static String extend = "";
@Autowired
JedisPool jedisPool;
@Autowired
StringRedisTemplate redisTemplate;
/**
* @param recNum 手机号
* @param smsTemplateCode 模板编号
* @param smsParamString 模板替换内容
*/
public void sendSms(String recNum, String smsTemplateCode, String smsParamString) {
TaobaoClient client = new DefaultTaobaoClient(url, accessKeyId, accessKeySecret);
AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
req.setExtend(extend);
req.setSmsType(smsType);
req.setSmsFreeSignName(smsFreeSignName);
req.setSmsParamString(smsParamString);
req.setRecNum(recNum);
req.setSmsTemplateCode(smsTemplateCode);
AlibabaAliqinFcSmsNumSendResponse rsp = null;
try {
rsp = client.execute(req);
System.out.println(rsp.getBody());
} catch (ApiException e) {
e.printStackTrace();
}
}
}
请求成功后打印出来的内容是:
{"alibaba_aliqin_fc_sms_num_send_response":{"result":{"err_code":"0","model":"387405734917910351^0","msg":"OK","success":true},"request_id":"6nua66akmrut"}}
收到短信内容为 :
【xxx】验证码7940,您正在注册成为xxxx用户,感谢您的支持!
可能会遇到一点点的小问题,不过总的来说是蛮简单的,具体的业务要特殊处理,这里只做发送功能。