精华内容
下载资源
问答
  • [榛子云短信的官网]http://smsow.zhenzikj.com/doc/java_sdk_doc.html) 根据提示,下载jar包或者添加maven依赖 注册一个账号,然后在我的应用可以看到自己的AppID和AppSecret 然后就可以用啦 `public String...

    [榛子云短信的官网]http://smsow.zhenzikj.com/doc/java_sdk_doc.html)

    • 根据提示,下载jar包或者添加maven依赖
    • 注册一个账号,然后在我的应用可以看到自己的AppID和AppSecret
    • 然后就可以用啦
    package verify;
    
    import java.util.HashMap;
    import java.util.Random;
    
    import com.zhenzi.sms.ZhenziSmsClient;
    
    public class SendVarifyCode {
    
    //	@Test
    //	public void a() {
    //		SendVarifyCode sendVarifyCode = new SendVarifyCode();
    //		sendVarifyCode.send();
    //	}
    
    	public String send(String telCode) {
    		String apiUrl = "https://sms_developer.zhenzikj.com";
    		String appId = "你的应用名";
    		String appSecret = "你的密钥";
    		ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
    		HashMap<String, String> params = new HashMap<>();
    		String code = getVerifyCode();
    		System.out.println(code);
    		params.put("message", "验证码为: " + code);
    		params.put("number", telCode);
    		System.out.println(telCode);
    		try {
    			String result = client.send(params);
    			//在控制台打印短信发送的结果(手机号是否正确,是否发送成功)
    			System.out.println(result);
    			//返回验证码以便后来验证
    			return code;
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			System.out.println("还是失败了");
    			return "失败啦";
    		}
    
    	}
    //产生四位数的手机验证码
    	private static String getVerifyCode() {
    		String ch = "1234567890";
    		String result = "";
    		Random random = new Random();
    		for (int i = 0; i < 4; i++) {
    			int index = random.nextInt(ch.length());
    			char c = ch.charAt(index);
    			result += c;
    		}
    		return result;
    
    	}
    
    }
    
    

    在html中使用,我使用的dwr调用Java类在客户端进行

    		var code;
    		var message;
       		function sendMessage(){
       			var telCode=document.getElementById("recipientphone").value;
       			alert("已发送验证码,请查收,您的手机号为"+telCode);
       			sendVarifyCode.send(telCode,callback);
       		}
       		function callback(data){
       			//alert(data);
       			code=data;
       		}
       		function check(){
       			message=document.getElementById("message").value;
       			if(code==message){
       				alert("验证码输入正确即将跳转");
       				return true;
       			}
       			else{
       				alert("验证码错误");
       				return false;
       			}
       		}
    

    然后就可以收到短信啦,这个也是收费的,不过它好便宜的,0.037一条哈哈哈

    展开全文
  • 实测榛子云短信平台短信接收速度

    千次阅读 2018-07-16 11:57:21
    身份效验几乎是每个网站与APP必走的流程,无论是在APP注册还是支付认证中,短信验证码都需要经过商家后台,短信平台,运营商服务器,在无数线路中穿梭,最后才到达客户手机上,正因为“路途遥远”,各家短信服务商...

    这是属于移动互联网的时代,用户为什么要选择你的产品,你的产品如何突破同行的围剿,产品的体验度怎样提高,一个富有生命力的产品应该是怎样的?

    身份效验几乎是每个网站与APP必走的流程,无论是在APP注册还是支付认证中,短信验证码都需要经过商家后台,短信平台,运营商服务器,在无数线路中穿梭,最后才到达客户手机上,正因为“路途遥远”,各家短信服务商短信的到达率都是参差不齐的。

         “短信到达速度慢、收不到”等问题是摆在互联网企业面前的问题,解决这个问题就等于间接提升了产品的体验度,有利于企业的长久发展。

    下面来使用一个用于营销的短信通道:

    视频地址:

    https://v.youku.com/v_show/id_XMzcyNjAyNjI4MA==.html?spm=a2h3j.8428770.3416059.1


    【 安居客】8秒91

    【滴滴打车】5秒75

    【高雅眼镜】4秒67

    【瓜子二手车】8秒84

    【兼职猫】15秒62

    【榛子云短信】4秒32

     虽然榛子云短信与高雅眼镜同样是4秒多,但是二者是有很大区别的,我们的测试使用的是营销通道。而非营销通道,比如: 短信验证码、服务通知等。

    我们知道,营销短信要比服务类的短信发送量大得多,一般都是每次几万、十几万条发送,通过队列,无论是运营商还是服务商处理上都要有一定延时。所以,我猜榛子云短信的服务短信一般在3秒左右。这个速度还是相当快的。

    从以上APP短信验证码测试的结果可以看出,收到的短信时间各自不同,有的3秒多,有的10秒多,为啥会有这么大的差距?

    在请教业内资深人士和查阅相关资料后,小编大致得出了一个结论,决定短信验证码的到达速度首先是码号,如1065/123/10690等,然后,就是服务器网络架构、平台发送机制、短信通道质量,这些就与短信验证码服务商的资质和服务水平紧密挂钩了。

    展开全文
  • 首先,讲之前先声明,我是使用的榛子云云短信服务平台,觉得比较好用,充值20块钱就可以有540条验证短消息,一条短信消息约3分钱左右。而且对于个人开发者比较友好,提供了个人开发者和组织机构两种方式,博主是使用...

    上干货,简单粗暴三步骤,搞定。

    1.在项目中引入榛子云的jar包。

    查看最新版本的榛子云的jar包地址

    <dependency>
    	  <groupId>com.zhenzikj</groupId>
    	  <artifactId>zhenzisms</artifactId>
    	  <version>2.0.2</version>
    </dependency>

    2.编写发送验证码和验证验证码的工具类,博主这里已经把完整代码贴入,直接复制粘贴即可使用.(需要引入fastjson和lombok)。

    package com.salong.myself.sms;
    
    import com.alibaba.fastjson.JSONObject;
    import com.zhenzi.sms.ZhenziSmsClient;
    import lombok.Data;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    
    import java.io.Serializable;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    /**
     * @author Salong
     * @date 2021/3/10 18:37
     * @Email:salong0503@aliyun.com
     */
    @Configuration
    public class zhenziSMS {
    
        @Value("${sms.apiUrl}")
        //访问路径(个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com)
        private String apiUrl;
    
        /*
         *注册账号,进入榛子云短信平台用户中心,打开应用管理,我的应用,
         *即可看到默认有个应用名称为云短信体验的应用,输入对应的appId和appSecret
         *需要先充值至少20块钱,一条验证码短信预计3分钱左右
         */
        @Value("${sms.appId}")
        private String appId;
    
        @Value("${sms.appSecret}")
        private String appSecret;
    
        //设置过期时间
        @Value("${sms.timeOut}")
        private Integer timeOut;
    
        //设置验证码长度
        @Value("${sms.codeLength}")
        private Integer codeLength;
    
        private ZhenziSmsClient client;
    
    
        @Bean
        public ZhenziSmsClient initSMS() {
            if (client == null) {
                client = new ZhenziSmsClient(apiUrl, appId, appSecret);
                return client;
            }
            return client;
        }
    
        //查询榛子云剩余当前账户可发验证码短信条数
        public Integer checkBalance() throws Exception {
            String balance = client.balance();   //{"code":0,"data":537}
            isSendSuccess isSendSuccess = JSONObject.parseObject(balance, isSendSuccess.class);
            return (int)isSendSuccess.getData();
        }
    
        //生成验证码和验证码id
        private Map<String, Object> createVerificationCode() {
            HashMap<String, Object> map = new HashMap<>();
            //这个是榛子云短信平台用户中心下的短信管理的短信模板的模板id
            //todo 这个模板id需要自己去平台查看自己的模板id并修改
            map.put("templateId", "3966");
            //生成验证码
            int pow = (int) Math.pow(10, codeLength - 1);
            String verificationCode = String.valueOf((int) (Math.random() * 9 * pow + pow));
            //随机生成messageId,验证验证码的时候,需要携带这个参数去取验证码
            String messageId = UUID.randomUUID().toString();
            map.put("messageId", messageId);
            String[] templateParams = new String[2];
            //两个参数分别为验证码和过期时间
            templateParams[0] = verificationCode;
            templateParams[1] = String.valueOf(timeOut);
            map.put("templateParams", templateParams);
            return map;
        }
    
        //发送验证码(如果params的success为true,则发送成功,则需要把params中的messageId和验证码存起来,验证验证码的时候用到)
        public Map<String, Object> sendMessage(String phoneNumber,String clientIp) throws Exception {
            Map<String, Object> params = createVerificationCode();
            //发送手机目标(number字段不可修改)
            params.put("number", phoneNumber);
            //防止一个客户端多次刷验证码,防刷专用,这个clientIp只是个防刷标记,
            // 不一定是客户端ip,也可以是客户端登录的账号,或者能鉴权的属性
            if (StringUtils.isNotBlank(clientIp)){
                params.put("clientIp",clientIp);
            }
            String result = client.send(params);
            isSendSuccess success = JSONObject.parseObject(result, isSendSuccess.class);
            if (success.getCode() == 0) {
                params.put("success",true);
            }else {
                params.put("success",false);
            }
            return params;
        }
    
        //验证短信验证码,传入缓存中存入的messageId和验证码
        public boolean checkMessage(String messageId, String cacheCode) throws Exception {
            String result = client.findSmsByMessageId(messageId);
            Verification verification = JSONObject.parseObject(result, Verification.class);
            if (verification.getCode() == 0) {
                //取到了数据,开始验证码是否正确
                String veificationCode = verification.getData().getMessage();
                int index = veificationCode.indexOf("验证码:");
                String code = veificationCode.substring(index + 4, index + 4 + codeLength);
                //验证验证码
                if (!code.equals(cacheCode)) {
                    return false;
                }
                //验证时间是否过期
                Date createTime = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss").parse(verification.getData().getCreateTime());
                long spent = new Date().getTime() - createTime.getTime();
                if (spent / (1000 * 60) > timeOut) {
                    return false;
                }
            } else {
                return false;
            }
            return true;
        }
    
        //向榛子云发送验证码请求时候,榛子云返回的报文,code=0为成功
        //实例:{"code":0,"data":"发送成功"}
        @Data
        static class isSendSuccess implements Serializable {
            private Integer code;
            private Object data;
        }
    
        //验证验证码的时候,榛子云返回的报文
        //实例:{"code":0,"data":{"message":"验证码:33356,2分钟内有效,请勿泄漏给他人使用。","appName":"云短信体验","createTime":"2021-03-10 19:24:19","status":"success","toNumber":"15871770252","messageId":"123"}}
        @Data
        static class Verification implements Serializable {
            private Integer code;
            private Message data;
        }
    
        @Data
        static class Message implements Serializable {
            private String message;
            private String appName;
            private String createTime;
            private String status;
            private String toNumber;
            private String messageId;
        }
    }
    

    3.在springboot的yml启动文件中加入以下代码。

    sms:
      apiUrl: https://sms_developer.zhenzikj.com
      appId: XXXXX
      appSecret: XXXXXXXXXXXXXXXXXXX
      timeOut: 3
      codeLength: 6

    解释一下各个参数,

    其中,apiUrl是 访问路径(个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com)

    timeOut是验证码几分钟过期,codeLength是验证码的长度。

    appId和appSecret获取如下:

    4.调用,直接通过Autowired自动装配即可使用。

    5.最后平台做设置,为了避免人为恶意刷验证码,可在榛子云的平台我的应用后面的详情进行编辑,如下图。

    展开全文
  • 对比了一下阿里、互亿无线的短信包,这个平台是最便宜的,接收速度也很快。 附上测试代码 package com.dirk.demo; import com.zhenzi.sms.ZhenziSmsClient; import java.util.HashMap; import java.util.Ma...

    榛子云首页

    榛子云接口文档

    有了这两个链接,稍微懂点java就会操作了,简单的很。

    对比了一下阿里云、互亿无线的短信包,这个平台是最便宜的,接收速度也很快。

    附上测试代码

    package com.dirk.demo;
    
    import com.zhenzi.sms.ZhenziSmsClient;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @author Dirk
     * @create 2020-03-15 9:02
     */
    public class PhoneMsgTest {
    
        public static void main(String[] args) throws Exception {
            /**
             * apiUrl为请求地址
             *  个人开发者使用https://sms_developer.zhenzikj.com
             *  企业开发者使用https://sms.zhenzikj.com
             */
            ZhenziSmsClient client = new ZhenziSmsClient("https://sms_developer.zhenzikj.com", "自己的AppId", "自己的AppSecret");
    
            /**
             *  参数名称    必选  类型      描述
             *  message	    是	string	短信内容
             *  number	    是	string	接收者手机号码
             *  messageId	否	string	messageId即该条短信的唯一标识, 不能重复
             *  clientIp	否	string	客户端IP,需要与应用设置中的”客户IP限额“配合使用,主要防止用户恶意刷短信
             */
            Map<String, String> params = new HashMap<String, String>();
            params.put("message", "验证码为: 1123");
            params.put("number", "15373606106");
    
            //发送短信
            String result = client.send(params);
            //查看余额,查看当前剩余短信条数
            String balance = client.balance();
    
            System.out.println("result = " + result);
            System.out.println("balance = " + balance);
    
        }
    
    }
    

    测试结果

    展开全文
  • 榛子云短信vs阿里云等各家短信平台

    千次阅读 2018-07-10 21:31:04
    榛子云短信vs阿里云等各家短信平台一般情况下我们选择短信平台时主要根据以下几点:1. 通道资源, 好的通道资源可以提供稳定的、高效的发送成功率,对于营销短信还需要提供高并发以及稳定的吞吐量。榛子云短信使用的...
  • 一、注册榛子云短信平台用户 ①注册地址:http://smsow.zhenzikj.com/ ②充值,做个人测试的话十块钱足够啦!可以发送280条 ③进入应用管理下的我的应用里边查看AppId以及AppSecret,下面的步骤会用到 二、下载SDK...
  • 运营田田:小李啊,我们这个活动页面要加个输手机号的框,用户输完手机号后才能领,最好能有个短信验证码,这样就不担心被薅羊毛了,这个能现在马上做好吗?  开发小李:。。。 客户张老板:小李啊,我们要经常给...
  • 榛子云短信发送验证码

    千次阅读 2019-05-17 14:07:27
    下载榛子云jar包 代码 @RequestMapping(value="ZhenziDx",method=RequestMethod.POST) @ResponseBody public Object ZhenziDx(HttpSession session,@RequestParam("number")String number) { ...
  • 最近使用榛子云短信平台开发,如果没有充值的话,试用只能一条,超过试用条数将会报错,出现发送验证码失败,而如果返回代码为114,即就是你输入的短信内容有【】或[]去掉就好 ...
  • 使用榛子云短信服务

    2020-04-24 17:50:57
    1.导入依赖 <dependency> <groupId>com.zhenzikj</groupId> <artifactId>zhenzisms</artifactId> <version>1.0.4</version>...2.榛子云短信的登录网址 ...
  • 案例使用的是使用的榛子云短信服务器:http://smsow.zhenzikj.com/ 1.注册 注册成功之后有两个参数,程序中需要用到的 2.项目搞起来 2.1 maven包 <!-- 短信验证榛子云 --> <dependency> <...
  • 复制一些参数和更改短信模板 三个参数 appId,appSecret,templateId 然后短信模板中的{1},{2}参数是后面程序中传入的 controller代码 import cn.hutool.json.JSONObject; import ...
  • 注意:要实现发送短信需要短信模板,提交给官方审核通过才能使用。 由于官方给出的小demo使用的是servlet进行业务处理,并且未连接数据库,由于使用的是SSM框架,所以需进行转换。 目录结构: @Controller @...
  • 如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口。 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html 下载下来是jar文件,需要将jar发布到本地的maven仓库中, 在...
  • 最近在用Java实现发送邮件,发送手机短信,手机验证码的功能,已经基本实现了,所以在这里总结一下。 首先,用Java实现这两个功能并不是特别困难,因为各大服务已经提供的现有的API,我们自己调用即可。 对应Java...
  • 榛子云的官网:http://smsow.zhenzikj.com/ ,最低充值10R = 270条 运行环境:Win10 x64 、VS2015 注册登录之后,先去下载C#的SDK:(我这里用的是C#的) 下载完后就是一个dll,名字是 ZhenziSms.dll,把这个...
  • 关于Python云片网注册之后查看官方文档API说明:详细代码请见我的Github欢迎来给我点star:https://github.com/chaoboliu/Send-Verification-Codeyuny ...关于Python榛子云注册之后查看官方文档API说明...
  • 本文讲述下榛子云短信采用手动发送短信时如何替换模板变量。 榛子云短信的模板定义非常灵活,只要保证模板与导入文件的一致即可,举例说明一下。 模板变量格式采用${xxx},比如模板: 恭喜您,注册成功,用户名${...
  • 作为一个老牌的短信平台,在移动互联网时代下,既在转型重新创业,也在扶持新创业者,与广大创业者一起“大众创业万众创新”实现共赢! 来源:  http://smsow.zhenzikj.com/news/detail/32.html  
  • 刚刚接入了一下榛子云短信的短信验证功能,用于注册或者特使登录的短信验证。smsow.zhenzikj.com 官网两分钟申请测试账号,赠送了100条测试短信。android使用java的jar包即可开发jar下载: smsow.zhenzikj....
  • 1、榛子云短信注册:http://sms_developer.zhenzikj.com/zhenzisms_user/register.html 2、
  • 人们常说千里之堤,毁于蚁穴,看起来微不足道的事情,能够做到不遗巨细,滴水不漏同样能够成就极致,这就是榛子云短信的信念,团队创立的切入点是看似微小的短信服务,但是目前行业的痛点却是不胜枚举:在服务方面,...
  • 榛子云短信,作为技术型公司,男女比率失衡严重,男生靠技术,女生靠口才,这样的搭配我们每月能创下几千万的短信订购量。”现在社会变了,程序猿技术男越来越多,也越来越精,女生的职场适应能力和工作能力也越来越...
  • 一、短信接入平台的主要流程 ...阿里服务器申请的短信服务,node.js 框架 express 应用 var client = new Core({ accessKeyId: "", //短信接入的id accessKeySecret: "", //短信平台接入的密钥 endpoint:

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 236
精华内容 94
关键字:

榛子云短信平台