腾讯云短信发送工具类

package cn.flyinke.jtest;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.HashKit;
import com.jfinal.kit.HttpKit;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Random;

public class QcloudSmsUtil {

    private static int sdkappid = 123;
    private static String appkey = "abc";
    private static String sign = "签名";
    private static String tplId = "123456";

    private static boolean sendMsg(String mobile, String content) {
        String url = "https://yun.tim.qq.com/v5/tlssmssvr/sendsms";
        Random random = new Random();
        long rnd = random.nextInt(999999) % (999999 - 100000 + 1) + 100000;
        long time = new Date().getTime()/1000;
        String wholeUrl = String.format("%s?sdkappid=%d&random=%d", url, sdkappid, rnd);
        String pnum = null;
        try {
            JSONObject data = new JSONObject();
            JSONObject tel = new JSONObject();
            tel.put("nationcode", "86");
            tel.put("mobile", mobile);

            List<String> params = Arrays.asList(content);
            String sig = getSign(appkey,rnd,time,mobile);

            data.put("tpl_id", tplId);
            data.put("sign", sign);
            data.put("sig", sig);
            data.put("params", params);
            data.put("tel", tel);
            data.put("time",time);
            data.put("extend", "");
            data.put("ext", "");

            String response = HttpKit.post(wholeUrl,data.toJSONString());
            JSONObject rsp = JSON.parseObject(response);
            if(rsp.getInteger("result") == 0){
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return false;
    }

    /**
     * sha256(appkey=5f03a35d00ee52a21327ab048186a2c4&random=7226249334&time=1457336869&mobile=13788888888)
     * = ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4
     * @param appkey
     * @param rnd
     * @param time
     * @param mobile
     * @return
     */
    private static String getSign(String appkey,long rnd,long time,String mobile){
        return HashKit.sha256(String.format("appkey=%s&random=%d&time=%d&mobile=%s",appkey,rnd,time,mobile));
    }

    public static void main(String[] args) {
        QcloudSmsUtil.sendMsg("","1234");
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 协议说明 协议 HTTP POST 编码格式 UTF8 URL 举例:https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx 接口说明 给用户发验证码、通知,营销(内容长度不超过450字)。 注:sdkappid请填写您在腾讯云上申请到的,random请填成随机数。 2 请求包体 包体为json字符串,参数如下: { "tel": { //如需使用国际电话号码通用格式,如:"+8613788888888" ,请使用sendisms接口见下注 "nationcode": "86", //国家码 "mobile": "13788888888" //手机号码 }, "type": 0, //0:普通;1:营销(强调:要按需填值,不然会影响到业务的正常使用) "msg": "你的验证码是1234", //utf8编码,需要匹配审核通过的模板内容 "sig": "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4", //app凭证,具体计算方式见下注 "time": 1457336869, //unix时间戳,请求发起时间,如果和系统时间相差超过10分钟则会返回失败 "extend": "", //通道扩展码,可选字段,默认没有开通(需要填空)。 //在回复场景中,腾讯server会原样返回,开发者可依此区分是哪种类型的回复 "ext": "" //用户的session内容,腾讯server回包中会原样返回,可选字段,不需要就填空。 } 注: 1、"msg"字段需要匹配审核通过的模板内容 如果您的模板是"你的验证码是{1}",则"msg"字段可赋值为:"你的验证码是xxxx"。(其中"xxxx"为下发的验证码) 如果您有多个签名,请将需要的签名放在内容前面 例如您有"【腾讯科技】","【腾讯云】"两个签名,但是想以"【腾讯云】"签名发送, 则"msg"字段可赋值为:"【腾讯云】你的验证码是xxxx"。(其中"xxxx"为下发的验证码) 2、"extend"字段的配置请联系腾讯云技术支持 3、sendisms接口,"tel"字段为国际电话号码通用格式,如:"+8613788888888" 4、"sig"字段根据公式sha256(appkey=$appkey&random=$random&time=$time&mobile=$mobile)生成 伪代码如下: string strMobile = "13788888888"; //tel的mobile字段的内容 string strAppKey = "5f03a35d00ee52a21327ab048186a2c4"; //sdkappid对应的appkey,需要业务方高度保密 string strRand = "7226249334"; //url中的random字段的值 string strTime = "1457336869"; //unix时间戳 string sig = sha256(appkey=5f03a35d00ee52a21327ab048186a2c4&random=7226249334&time=1457336869&mobile=13788888888) = ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4; 3 应答包体 { "result": 0, //0表示成功(计费依据),非0表示失败 "errmsg": "OK", //result非0时的具体错误息 "ext": "", //用户的session内容,腾讯server回包中会原样返回 "sid": "xxxxxxx", //标识本次发送id,标识一次下发记录 "fee": 1 //计费的条数 } 1.需要申请腾讯云的 appid 和 appkey  (详见 https://console.cloud.tencent.com/sms) 2.需要申请一个 签名+ 模版

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值