利用阿里大于开发短信验证码
来源:互联网 发布:微软编程一小时官网 编辑:程序博客网 时间:2024/05/21 22:23
public class message{//公参static String serverUrl = "https://eco.taobao.com/router/rest"; //正式环境 static String appKey = "";//APP证书密钥 static String appSecret = ""; //app安全码 static String apiSendMethod = "alibaba.aliqin.fc.sms.num.send"; // 短信发送 static String apiQueryMethod = "alibaba.aliqin.fc.sms.num.query"; //短信发送记录查询 static String smsTemplateCode = "S"; //短信模板ID static String signName = ""; //短信签名 static String signHmac = "hmac"; //加密方式 static String signMd5 = "md5"; //加密方式 static String sign = null; // 全部参数的hmac或md5的校验码 static String mobiles = ""; //传入多个号码,以英文逗号分隔 static String smsParams = "{name:'xxx',code:'xx'}"; //给短信模版中的变量赋值 public static void main(String[] args) throws IOException, ApiException { TaobaoClient client = new DefaultTaobaoClient(serverUrl, appKey, appSecret); AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest(); Map<String, String> params = new HashMap<>(); params.put("app_key", appKey); params.put("format", "json"); params.put("method", apiSendMethod); params.put("rec_num", mobiles); params.put("sign_method", signHmac); params.put("timestamp", getTimeStamp()); params.put("v", "2.0"); params.put("sms_free_sign_name", signName); params.put("sms_param", smsParams); params.put("sms_template_code", smsTemplateCode); params.put("sms_type", "normal"); sign = signTopRequest(params, appSecret, signHmac); System.out.println(sign); //代理端口设置 System.setProperty("http.proxySet", "true"); System.setProperty("http.proxyHost",""); System.setProperty("http.proxyPort","8080");System.setProperty("https.proxyHost","");System.setProperty("https.proxyPort","8080"); req.setSmsType("normal"); req.setSmsFreeSignName(signName); System.out.println(smsParams); req.setSmsParamString(smsParams); req.setRecNum(mobiles); req.setSmsTemplateCode(smsTemplateCode); AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req); System.out.println(rsp.getBody()); } //时间戳 public static String getTimeStamp() { long curTime = new Date().getTime(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); return df.format(curTime).toString(); } public static String signTopRequest(Map<String, String> params, String secret, String signMethod) throws IOException { //检查参数是否已经排序 String[] keys = params.keySet().toArray(new String[0]); Arrays.sort(keys); //把所有参数名和参数值串在一起 StringBuilder query = new StringBuilder(); if (Constants.SIGN_METHOD_MD5.equals(signMethod)) { query.append(secret); } for (String key : keys) { String value = params.get(key); if (StringUtils.areNotEmpty(key, value)) { query.append(key).append(value); } } // 使用MD5/HMAC加密 byte[] bytes; if (Constants.SIGN_METHOD_HMAC.equals(signMethod)) { bytes = encryptHMAC(query.toString(), secret); } else { query.append(secret); bytes = encryptMD5(query.toString()); } // 第四步:把二进制转化为大写的十六进制 return byte2hex(bytes); } public static byte[] encryptHMAC(String data, String secret) throws IOException { byte[] bytes = null; try { SecretKey secretKey = new SecretKeySpec(secret.getBytes(Constants.CHARSET_UTF8), "HmacMD5"); Mac mac = Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); bytes = mac.doFinal(data.getBytes(Constants.CHARSET_UTF8)); } catch (GeneralSecurityException gse) { throw new IOException(gse.toString()); } return bytes; } public static byte[] encryptMD5(String data) throws IOException { return encryptMD5(data.getBytes(Constants.CHARSET_UTF8).toString()); } public static String byte2hex(byte[] bytes) { StringBuilder sign = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(bytes[i] & 0xFF); if (hex.length() == 1) { sign.append("0"); } sign.append(hex.toUpperCase()); } return sign.toString(); }}
1 0
- 利用阿里大于开发短信验证码
- 利用阿里大于发送短信验证码(java)
- 利用阿里大于进行短信验证
- java 基于阿里大于(阿里云短信通讯)开发短信验证码
- 使用阿里大于发送短信验证码
- 阿里大于手机注册短信验证码
- 阿里大于短信验证码配置
- 阿里大于短信验证码简单使用
- 阿里大于短信验证码简单使用
- 阿里大于短信验证码简单实现
- php阿里大于短信验证码发送
- 利用阿里大于实现java短信验证功能
- 阿里大于短信服务(短信验证码)
- 发送短信验证码到手机(阿里大于平台) java
- spring mvc 发送短信验证码功能 阿里大于
- php使用阿里大于短信平台发送验证码记录
- php版阿里大于短信发送验证码
- php版-阿里大于短信验证码服务教程
- 2016的学习总结
- Junit加载Spring容器作单元测试_添加事务回滚
- Android常见bug
- maven国内镜像
- Linux C:文件锁flock
- 利用阿里大于开发短信验证码
- Tomcat服务器启动闪退及卸载tomcat中部署的项目
- webdriver-悬浮菜单下拉框的处理
- 求助:仿真 Opencv谁做了
- 100亿数据1万属性数据架构设计
- 二维码生成
- 快速排序
- 商业智能 BI 未来发展的新趋势
- Android 网络本地显示图片Picasso优化封装使用