现在做的小程序,需要给客户手机发送短信验证码,用的是阿里云的短信平台
首先要搞好短信模板,签名之类的,这个就相当于发送的短信主体内容,其中验证码部分是我们自己定义的,这个要审核通过了才行
然后在下图,输入自己的手机号,选择模板,发送,
如果成功了,就点击查看API Demo
然后把其中的代码(不包含方法名),复制到自己需要调用短信接口的方法里
pom.xml文件中添加Maven依赖安装Alibaba Cloud SDK for Java
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
public CommonResult checkMoney(Long orderId, BigDecimal money, Integer type, String autograph, Integer check,String checkCode) {
boolean update=false;
OmsOrder omsOrder = omsOrderService.getById(orderId);
if (type == 1) {
//选择的是输入金额
if (money.compareTo(BigDecimal.ZERO) < 1) {
return CommonResult.failed("请输入正确的金额");
}
omsOrder.setMoney(money);
omsOrder.setCheckWay(0);
omsOrderService.updateById(omsOrder);
if (check == 1) {
//通过手机号验证,生成随机数,调用短信接口,发送成功返回,
// 返回随机数
int checkNum= (int) (Math.random()*9000+1000);
String memberPhone = omsOrder.getMemberPhone();
String num = String.valueOf(checkNum);
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "XXXXXX", "XXXXXXXX");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", memberPhone);
request.putQueryParameter("SignName", "徐氏天艺");
request.putQueryParameter("TemplateCode", "SMS_207960784");
request.putQueryParameter("TemplateParam", "{\"code\":"+num+"}");
//request.putQueryParameter("TemplateParam", "{\"code\":\"checkNum\"}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return CommonResult.success(num,"发送成功");
}
如上图,复制进来以后,首先是随机数生成四位数的验证码:然后下面把需要传递的参数传递给复制进来的短信接口:1、随机的验证码 2、需要发送的手机号
要注意的是:
1、传递验证码TemplateParam这个参数是json格式的,需要+来拼接传递的参数
2、传递手机号PhoneNumbers这个参数后面直接是手机号,不用引号
3、最重要的一点是accessKeyId和accessKeySecret,这两个getProfile的参数需要去掉尖括号<>,并且这两个参数很重要,需要保密,在购买短信服务时候就会有