中国电信天翼开放平台自定义短信验证码和模板短信demo

自定义短信验证码

package com.ffcs.sms;

import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.TreeMap;

import com.ffcs.util.HttpInvoker;
import com.ffcs.util.RandomUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import open189.sign.ParamsSign;
/**
 * 下发自定义短信验证码DEMO
 *
 */
public class SendSMSRandcode
{
 public static String APP_ID = "";//应用ID------登录平台在应用设置可以找到
 public static String APP_SECRET = "";//应用secret-----登录平台在应用设置可以找到
 public static String ACCESS_TOKEN = "";//访问令牌AT-------CC模式,AC模式都可,推荐CC模式获取令牌
 public static String RANDCODE = RandomUtil.randomFor6();//自定义验证码
 /**
  * 1 获取信任码token get提交
  * 2自定义短信验证码下发 post提交
  * @param userPhone 下发手机号
  * @return
  * @throws Exception
  */
 
 
 //第一步根据app_id,app_secret获取令牌接口
  private static String getAccess_Token() throws Exception {
   Gson gson = new Gson();
      String postUrl = "https://oauth.api.189.cn/emp/oauth2/v3/access_token?grant_type=client_credentials&app_id="
          + APP_ID + "&app_secret=" + APP_SECRET;
      String resJson1 = HttpInvoker.httpPost(postUrl, null, null);
      System.err.println(resJson1);
      Map<String, String> map1 = gson.fromJson(resJson1,
     new TypeToken<Map<String, String>>() {
     }.getType());
      return map1.get("access_token").toString();
    }
   
  
  
 private static String sendSms(String userPhone) throws Exception {
  
  ACCESS_TOKEN=getAccess_Token();
  System.err.println(ACCESS_TOKEN);
  Date date = new Date();
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String timestamp = dateFormat.format(date);
  System.err.println(timestamp);
  TreeMap<String, String> paramsMap = new TreeMap<String, String>();
  paramsMap.put("app_id", APP_ID);
  paramsMap.put("access_token", ACCESS_TOKEN);
  paramsMap.put("timestamp", timestamp);
  
  String getUrl = "http://api.189.cn/v2/dm/randcode/token?app_id=" + APP_ID
    + "&access_token=" + ACCESS_TOKEN 
    + "&timestamp="+URLEncoder.encode(timestamp,"UTF-8") 
    + "&sign="+ParamsSign.value(paramsMap, APP_SECRET);
  System.out.println(getUrl);
  String resJson = HttpInvoker.httpGet(getUrl,null);
  System.err.println(resJson);
  Gson gson = new Gson();
  Map<String, String> map = gson.fromJson(resJson, new TypeToken<Map<String, String>>() {}.getType());
  System.out.println(map.get("token"));//获取信任码
  
 
 
  //-----------------------------------------------------------
  TreeMap<String, String> paramsMap1 = new TreeMap<String, String>();
  paramsMap1.put("app_id", APP_ID);
  paramsMap1.put("access_token", ACCESS_TOKEN);
  paramsMap1.put("timestamp", timestamp);
  paramsMap1.put("token", map.get("token").toString());
  paramsMap1.put("randcode", RANDCODE);  
  paramsMap1.put("phone", userPhone);
  paramsMap1.put("exp_time", "20");
  String postUrl = "http://api.189.cn/v2/dm/randcode/sendSms";
  System.out.println(map.get("token"));
  String postEntity = "app_id="+APP_ID
        + "&access_token="+ACCESS_TOKEN
        + "&token=" + map.get("token").toString()
              + "&phone=" + userPhone
              + "&randcode=" + RANDCODE               
              + "&exp_time=2"
              + "&timestamp="+ URLEncoder.encode(timestamp, "UTF-8") 
              + "&sign="+ParamsSign.value(paramsMap1, APP_SECRET);
  System.out.println(postEntity);   
  String resJson1 = HttpInvoker.httpPost(postUrl,null,postEntity);
  Map<String,String> map2=gson.fromJson(resJson1, new TypeToken<Map<String, String>>() {}.getType());
  System.out.println(resJson1);
  String result=map2.get("identifier").toString();
  System.out.println(resJson1);
  return result;
 }
  public static void main(String[] args) throws Exception {
   
   try {
     String result=sendSms("1583456732");
     System.out.println(result);
   }finally{
  }
}
  
}

/*
最后返回参数:
短信标识码:"identifier":"no2337"
unix时间戳  :"create_at":"1435569920"
 */

模板短信

package com.ffcs.sms;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.ffcs.util.HttpInvoker;
import com.ffcs.util.RandomUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

/**
 * 模板短信DEMO
 *
 */
public class TemplateSms {
 public static String APP_ID = "";//应用ID------登录平台在应用设置可以找到
 public static String APP_SECRET = "";//应用secret-----登录平台在应用设置可以找到
 public static String ACCESS_TOKEN = "";//访问令牌AT-------CC模式,AC模式都可,推荐CC模式获取令牌
 public static String TEMPLATE_ID = "";//模板ID
 //模板参数
 public static String CUSTOMER= "XXXX";//param1客户
 public static String RANDCODE = RandomUtil.randomFor6();//param2验证码
 public static String EXP_TIME="2";//param3单位分钟

 //第一步根据app_id,app_secret获取令牌接口
   private static String getAccess_Token() throws Exception {
   Gson gson = new Gson();
      String postUrl = "https://oauth.api.189.cn/emp/oauth2/v3/access_token?grant_type=client_credentials&app_id="
          + APP_ID + "&app_secret=" + APP_SECRET;
      String resJson1 = HttpInvoker.httpPost(postUrl, null, null);
      System.err.println(resJson1);
      Map<String, String> map1 = gson.fromJson(resJson1,
     new TypeToken<Map<String, String>>() {
     }.getType());
      return map1.get("access_token").toString();
    }
   
  
 public static String sendSms(String tel) throws Exception {
  ACCESS_TOKEN=getAccess_Token();
  Date date = new Date();
  SimpleDateFormat dateFormat = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");
  String timestamp = dateFormat.format(date);
  System.err.println(timestamp);
  Gson gson = new Gson();
  Map<String, String> map = new HashMap<String, String>();
  //这里存放模板参数,如果模板没有参数直接用template_param={}
  map.put("param1", CUSTOMER);
  map.put("param2", RANDCODE);
  map.put("param3",EXP_TIME);

  String template_param = gson.toJson(map);
  System.out.println(template_param);
  String postUrl = "http://api.189.cn/v2/emp/templateSms/sendSms";
  
  String postEntity = "app_id=" + APP_ID + "&access_token="
    + ACCESS_TOKEN + "&acceptor_tel=" + tel + "&template_id="
    + TEMPLATE_ID + "&template_param=" + template_param
    + "&timestamp=" + URLEncoder.encode(timestamp, "utf-8");
  System.out.println(postUrl);
  System.out.println(postEntity);
  String resJson = "";
  String idertifier = null;
  Map<String, String> map2 =null;
  try {
   resJson = HttpInvoker.httpPost1(postUrl, null, postEntity);
   map2 = gson.fromJson(resJson,
     new TypeToken<Map<String, String>>() {
     }.getType());
   idertifier = map2.get("idertifier").toString();
  } catch (IOException e) {
   System.err.println(resJson);
   e.printStackTrace();
  } catch (Exception e) {
   System.err.println(resJson);
   e.printStackTrace();
  }
  System.err.println(resJson);
  return idertifier;
 }
 /*
  * 响应结果示例: { "res_code": "0", "res_message": "Success", "identifier":
  * "000000001" }
  */
 /**
  * @param args
  */
 public static void main(String[] args) {
  String result = "";
  try {
    result = sendSms("1585343432");
    System.out.println(result);
  }catch (Exception e) {
   e.printStackTrace();
  }
 }
}

具体程序代码见附件:

时间: 2024-11-05 19:39:39

中国电信天翼开放平台自定义短信验证码和模板短信demo的相关文章

关于中国电信天翼开放平台短信接口的一些使用

关于获取访问令牌的部分的说明: 天翼短信接口的开发文档链接:http://open.189.cn/index.php?m=content&c=index&a=lists&catid=62 实际上获取令牌非常简单,就是根据短信接口的说明把接口地址和要求的参数组装好,然后发送一个post请求,然后就能够获取到返回的json格式的字符串. 根据刚刚上面的短信接口开放文档说明,我们选择获取令牌最简单的方式,也就是文档里的"应用场合二", 应用场合二:在oAuth 2.0

中兴应用之星携手天翼开放平台:让APP开发更简单

日前,业内率先的APP开发平台运营商中兴应用之星与中国电信天翼开放平台达成战略合作.即广大用户通过天翼开放平台,可直接享受到应用之星提供的"APP开发服务". 应用之星.中兴通讯旗下优势品牌.多年来致力于APP开发.为用户搭建免费的在线应用开发平台.迄今,应用之星已为开发人员生成三万多款应用.为开发人员与普通用户创造巨大价值! 不懂技术,不会编程.也能高效便捷地制作APP,是应用之星的最大优势.近年来,移动互联网的发展如火如荼.为自己.为公司开发一款手机APP成为大众所需. 然后,技术

java对接短信验证码功能,短信验证码开发

今天公司提出一个需求,要在现有项目上收集注册用户的真实手机号,由于之前没有接触过这一块,只能寻求度娘的帮助,经过一天的努力,终于完成了,现整理记录下已备查阅. 1 解决方案:在注册时要求用户进行手机验证.2 寻找短信供应商:由于对这一块不是太懂,大学同学推荐一家他们公司在用的给我.3 代码实现首先到互亿无线短信平台注册一个帐号,并登录到用户中心,选验证码模块下载接口文档,文档下载下来是一个压缩包,我们项目是用java的jsp开发的,直接找到目录DEMO/JSP 提示:开始之前先看一下官方对接说明

【源码分享】php怎样接入短信验证码,对接短信验证码接口

今天公司提出一个需求,要在现有项目上收集注册用户的真实手机号,由于之前没有接触过这一块,只能寻求度娘的帮助,经过一天的努力,终于完成了,现整理记录下已备查阅. 1 解决方案:在注册时要求用户进行手机验证.2 寻找短信供应商:由于对这一块不是太懂,大学同学推荐一家他们公司在用的给我.3 代码实现首先到互亿无线短信平台注册一个帐号,并登录到用户中心,选验证码模块下载接口文档,文档下载下来是一个压缩包,我们项目是用PHP开发的,直接找到目录DEMO/PHP/OOP 提示:开始之前先看一下官方对接说明文

短信验证码是什么?

随着互联网与手机的广泛应用,验证码这玩意儿已经和你我的生活形影相随,那么你能说的清楚什么是验证码吗?验证码是一种区分用户是计算机和人的公共全自动程序.网站发到你手机上的短信里面有一串数字那就是短信验证码一般是注册或者绑定手机用的. 短信验证码就是通过发送验证码到手机上,大型网站尤其是购物网站,都提供手机短信验证码功能,短信验证码平台保证用户的购物安全,验证用户的正确性.短信验证码是最有效的验证码系统,它是一种触发类短信应用.如你在购物时,登录成功后,需要要求你绑定手机号码,点击获取验证码这时会给

iOS开发——App集成短信验证码

无论是在网页上还是在客户端,每当我们进行注册的时候,往往会进行短信或者邮箱验证,这是一种不错的安全机制.对于用户体验来说,如果是在PC的网页上,用邮箱或者短信验证都比较方便:如果是在手机上,那么使用短信验证就比较方便.这篇博客我们将会在iOS应用中实现短信验证码的功能.实例demo我已经集成到  https://github.com/chenyufeng1991/iOS-Oncenote . 这里我将会使用mob 的短信验证码 SDK来开发.官网地址为: http://www.mob.com/#

Web项目中手机注册短信验证码实现的全流程及代码

最近在做只能净化器的后台用户管理系统,需要使用手机号进行注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 我们使用的是榛子云短信平台, 官网地址:http://smsow.zhenzikj.com 我是java开发者,后端使用了springMvc,前端用的是jsp + jquery 短信验证码实现流程 1.构造手机验证码,生成一个6位的随机数字串:2.使用接口向短信平台发送手机号和验证码,然后短信平台再把验证码发送到制定手机号上3.将手机号验证码.操作时间存入Session

短信验证码应该怎么选择?

什么是手机短信验证码? 手机验证码是一种安全保密的验证方法,一把是通过短信的方式发送到用户的手机上,并且在现如今这个科技时代,短信验证码已经广泛的使用在市场中,那么现在如今市场上哪一家短信验证码平台比较好呢?今天同创博远短信平台就为大家来进行一下分析. 首先我们来简单的介绍一下短信验证码在市场中的应用. 无论是注册还是登陆或者实在交易支付的领域中,短信验证码都是万无一失的一种检验方法,也是现如今很瘦欢迎的一种验证方法,各行各业各种网站app都使用短信平台验证码来进行短信验证码,这种验证方式成本低

Atitit. 破解 &#160;拦截 绕过 网站 手机 短信 验证码 &#160;方式 v2 attilax 总结

Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如要求拖动等21.3. 第三代验证码 手机验证码 短信验证码22. 短信验证码的原理23. 常用破解法23.1. 漏洞绕过法23.2. 手机 软件转发法23.3. 手机api法33.4. 默认万能密码法 测试维护万能验证码33.5. 网站服务器短信发出截获33.6. 配置文件法33.7. 前端源码截获