中国电信天翼开放平台自定义短信验证码和模板短信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();
  }
 }
}

具体程序代码见附件:

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1669714

时间: 2024-10-30 00:58:06

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

中国电信天翼开放平台南京开放日免费报名

继北京.上海开放日之后,中国电信 天翼开放平台新一期Open Day活动将于9月7号 下午在南京隆重举办.本次活动以"新能力.新服务,助力开发者快速成长"为主题,活动现场为亲临现场的开发者朋友悉心准备了"模板短信.话费充值.短地址"等运营商优势能力的基础介绍. 使用方法.应用场景演示,希望通过汇聚.提供源源不断的业内领先的优质能力.差异化服务,帮助广大开发者朋友们切实解决产品研发.运营中所遇到的问题.欢迎长三角地区的开发者朋友亲临现场,抓住移动互联网创业的大好契机,

天翼开放平台南京开放日启动翼明星成长计划

要说开放平台,中国电信天翼开放平台算是运营商中成长最快.最与移动互联网接轨.最活跃的开放平台.9月7日,由中国电信天翼开放平台主办.创业影院承办的天翼开放平台Open Day开放日于在南京成功举办,中国电信创新业务事业部合作拓展处处长孙燚,中国电信创新业务事业部陈新兴,天翼开放平台负责人李志猛,搜狐公司移动新媒体中心总经理岳建雄,百阅联合创始人叶逸飞,中华万年历联合创始人朱晓明作为本次活动嘉宾出席活动,吸引了南京当地近二百位开发者.创业者.498)this.w idth=498;' onmous

天翼开放平台打通天翼空间app发布渠道

C114讯 7月10日,中国电信 天翼开放平台(open.189.cn)对外发布成功打通天翼空间app发布专享渠道,在天翼空间应用专题频道开设"天翼开放平台应用专区",为来自天翼开放平台的app应用提供展示.下载的分发载体.据悉,凡是通过官网入驻天翼开放平台的app应用,均可获得被推荐或被选 送到该专区的机会,成功覆盖天翼空间1.3亿用户.App发布专区的开放是电信天翼开放平台为了扶持开发者创业积极推出的又一重要举措,自此,天翼开放平台完 成了"能力汇聚.API封装.能力嵌入

中电信天翼开放平台年度数据:API调用量破亿

[赛迪网讯]1月15日消息,新年伊始,中国电信天翼开放平台对外发布了2012年年度数据,包括全年API接口累计调用量1亿次,注册开发者1200余位, API开放接口200余个,合作应用620余个等内容.具体如下: 1亿 自2012年3月27日发布上线以来,随着业务运营的不断深入,天翼开放平台呈现规模化发展.截止12月31日,2012全年API开放接口的调用总量已经达到1亿,同比月度调用量,平均增幅达160%,仅2012年四季度API接口的调用量已实现7000万的规模,每日API调用峰值达280万

app创业迎商机:天翼开放平台贯通发布渠道

7月10日,中国电信 天翼开放平台对外发布成功打通天翼空间app发布专享渠道,在天翼空间应用专题频道开设"天翼开放平台应用专区",为来自天翼开放平台的app应用提供展示.下载的分发载体.据悉,凡是通过官网入驻天翼开放平台的app应用,均可获得被推荐或被选 送到该专区的机会,成功覆盖天翼空间1.3亿用户.498)this.w idth=498;' onmousewheel = 'javascript:return big(this)' height="405" alt

天翼开放平台亮相2013移动互联网国际研讨会

由工业和信息化部电信研究院和中国移动通信联合会联合主办,中国电信.中国移动.中国联通共同协办的"2013移动互联网国际研讨会(IMIC)"于12月3日在北京国际会议中心盛大开幕.本次会议以"4G时代的产业创新.融合与共赢"为主题, 围绕LTE产业发展.TD-LTE网络部署.移动互联网及技术演进和业务应用等内容,以发展.融合.商用的角度展开探讨.498)this.w idth=498;' onmousewheel = 'javascript:return big(th

【天翼开放平台】布局互联网金融 助力企业打通支付渠道

日前,中国电信翼支付与银联商务.通联支付和杉德银卡通等三家国内线下 POS 收单企业在北京签署战略合作协议.根据协议,中国电信负责翼支付用户发展, 丰富线下支付资金来源;银联商务.通联支付.杉德银卡通负责线下受理环境建设和维护,拓展消费商圈.通过本次合作,中国电信翼支付的 5000 万个人用户,将可在全国超过 50000 家商户使用翼支付刷手机或输入手机号码完成消费支付.中国电信翼支付与银联商务.通联支付.杉德银卡通一直有着密切的合作.在北京物美超市.西安华润万家.拉萨中石化加油站等场所,都可以

php天翼开放平台短信发送接口实现

 代码如下 复制代码 <?php // date_default_timezone_set('PRC'); //获取access_token $data = "app_id=x&app_secret=x&grant_type=client_credentials"; $ch = curl_init("https://oauth.api.189.cn/emp/oauth2/v2/access_token"); curl_setopt($ch,CU

天翼开放平台免费短信验证码接口使用实例_python

对于目前众多的验证码解决方案来说,这个API有着中国电信这个重量级的运营商为靠山,应该是比较靠谱的了,而且还是免费的.详细情况请参阅:http://open.189.cn 使用方式:#定义app_id和app_secretr = RandCode('app_id', 'app_secret')#支持平台的两种接口方式#方式1:自定义接收验证码的回调URLr.send('phone number', 'http://yourdomain/rand_code.php', '3')#方式2:自定义验证