1. 程式人生 > >傳送簡訊驗證碼(天翼開放平臺)

傳送簡訊驗證碼(天翼開放平臺)

此文章使用天翼開發平臺(模板簡訊)介面

這裡寫圖片描述

API請求地址:

http://api.189.cn/v2/emp/templateSms/sendSms

響應格式:

POST

請求引數:

引數名 必須 型別 說明
app_id true string 應用ID,開發者建立應用時,天翼開放平臺會為應用自動分配此ID,開發者進入”管理中心”,在“應用詳情”中可檢視app_id。
access_token true string 訪問令牌,是呼叫平臺能力介面的通行證,可通過呼叫”令牌介面”獲得。
acceptor_tel true string 接收方號碼,不支援0打頭的號碼
template_id true string 簡訊模板ID,到簡訊模板申請頁面檢視
template_param true obejct 模板匹配引數,引數格式為(json物件字串): {引數名:引數值,引數名:引數值}
timestamp true string 時間戳,格式為:yyyy-MM-dd HH:mm:ss
sign true string

請求引數示例:

POST data:

acceptor_tel=13123185312
&template_id=91000001&template_param={"日報":"nihao","晚報":"nidao","url":"www.baidu.com"}&app_id=418839000000031xxx&access_token=c49fabf158e25985ed1284a75716a9b9137067210xxxx&timestamp=2013-09-06+16%3A07%3A42

響應結果:

引數名 型別及範圍 說明
res_code string 同步結果程式碼,返回0表示成功,其它值標識失敗,後續在定義
res_message string 成功返回:Success;錯誤返回:錯誤資訊
identifier string 成功返回:簡訊唯一標識;錯誤返回:返回空

響應引數說明:

res_code:同步結果程式碼,返回0表示成功,其它值標識失敗,後續在定義
res_message:成功返回:Success;錯誤返回:錯誤資訊
identifier:成功返回:簡訊唯一標識;錯誤返回:返回空

響應結果示例:

JSON

{
    "res_code": "0",
    "res_message": "Success",
    "identifier": "000000001"
}

令牌介面:

請求地址:

https://oauth.api.189.cn/emp/oauth2/v3/access_token

承載協議:

HTTPS

請求方式:

POST
引數名 必選 型別 說 明
grant_type true string 此值必須為“client_credentials”
app_id true string 應用註冊時分配的應用ID
app_secret true string 申請應用時分配的應用金鑰
state false string 用於跟蹤呼叫狀態。在響應訊息中將會原封不動的返回該值
scope false string 許可權列表,保留欄位,預設為空

請求範例:CC授權模式下的UIAT訪問令牌獲取

使用POST方法傳參:

grant_type=client_credentials&
app_id=1234567890&
app_secret=abcdefghijk

成功應答範例:返回UIAT訪問令牌

Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"USER_INDEPENDENT_ACCESS_TOKEN",
"expires_in":9999,
“res_code”:0,
“res_message”:”Success”
}

失敗應答範例:

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
          “res_code”:10009,
          “res_message”:”Access denied”
}
以上都是天翼開發平臺的一些文件幫助說明

下面是令牌介面與簡訊傳送介面程式碼

令牌介面

public class AccessToken {
    //介面
    private static final String ACCESSTOKEN_URL = "https://oauth.api.189.cn/emp/oauth2/v3/access_token";

    //此值必須為“client_credentials”
    private static final String GRANT_TYPE="client_credentials";

    //應用註冊時分配的應用ID
    private static final String APP_ID="這裡是你申請的APPID";

    //申請應用時分配的應用金鑰
    private static final String  APP_SECRET="這裡是你申請的應用ID";

    // 用於跟蹤呼叫狀態。在響應訊息中將會原封不動的返回該值
    private static String state = "";

    // 許可權列表,保留欄位,預設為空
    private static String scope = "";

    public static String getAccessToken() {
        String accessToken = "";
        try {
            URL postURL = new URL(ACCESSTOKEN_URL);
            HttpURLConnection httpURLConnection = (HttpURLConnection) postURL.openConnection();
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setUseCaches(false);
            httpURLConnection.setInstanceFollowRedirects(true);
            httpURLConnection.setRequestProperty(" Content-Type ", " application/x-www-form-urlencoded ");

            String postEntity = "grant_type=" + GRANT_TYPE + "&app_id=" + APP_ID + "&app_secret=" + APP_SECRET;

            DataOutputStream out = new DataOutputStream(httpURLConnection.getOutputStream());
            out.writeBytes(postEntity);
            out.flush();
            out.close(); // flush and close
//        connection.connect();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
            StringBuilder sbStr = new StringBuilder();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                sbStr.append(line);
            }
            bufferedReader.close();
            httpURLConnection.disconnect();
            //獲取返回結果轉成json 解析獲取accesstoken值
            JSONObject resultJson =JSONObject.parseObject(new String(sbStr.toString().getBytes(), "utf-8"));
            String code=resultJson.get("res_code").toString();
            //成功 返回 O
            if("0".equals(code)) {
                accessToken = resultJson.get("access_token").toString();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return accessToken;
    }


//    public static void main(String[] agrs) {
//        AccessToken accessToken=new AccessToken();
//            System.out.println(accessToken.getAccessToken());
//    }
}

簡訊傳送

public class SendSms {

    //傳送驗證資訊請求地址
    private static final String SMS_URL = "http://api.189.cn/v2/emp/templateSms/sendSms";

    //應用ID,開發者建立應用時,天翼開放平臺會為應用自動分配此ID,開發者進入"管理中心",在“應用詳情”中可檢視app_id。
    private static final String APP_ID = "這裡是你申請的APPID";

    //簡訊模板ID,到簡訊模板申請頁面檢視
    private static final String TEMPLATE_ID="這裡是你申請的簡訊模板ID";

    //截至時間格式
    private static final String DATEFORMAT="yyyy-MM-dd HH:mm:ss";

    //訪問令牌,是呼叫平臺能力介面的通行證,可通過呼叫"令牌介面"獲得。
    private static String access_token = "";

    //接收方號碼,不支援0打頭的號碼
    private static String acceptor_tel = "";

    //模板匹配引數,引數格式為(json物件字串): {引數名:引數值,引數名:引數值}
    private static String template_param;

    //時間戳,格式為:yyyy-MM-dd HH:mm:ss
    private static String timestamp="";

    //引數簽名
    private static String sign="";


    /**
     * 傳送驗證碼,驗證碼有效時間3分鐘
     * @param nickName
     * @param tel
     * @return
     */
    public static String sendSMS(String nickName,String tel,int timeout) {

        JSONObject json=null;

        //令牌
        access_token = AccessToken.getAccessToken();
        //截至時間
        timestamp =getTimesTamp(timeout);

        //引數
        String code=createCode();
        template_param =setTemplateParam(nickName,code, timeout);
        //傳送手機號
        acceptor_tel =tel;
        StringBuffer sb = new StringBuffer();
        sb.append("acceptor_tel="+acceptor_tel);
        sb.append("&template_id=" + TEMPLATE_ID);
        sb.append("&template_param=" + template_param);
        sb.append("&app_id=" + APP_ID);
        sb.append("&access_token=" + access_token);
        sb.append("&timestamp=" + timestamp);
        try {
            URL postURL = new URL(SMS_URL);
            HttpURLConnection httpURLConnection = (HttpURLConnection) postURL.openConnection();
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setUseCaches(false);
            httpURLConnection.setInstanceFollowRedirects(true);
            httpURLConnection.setRequestProperty(" Content-Type ", " application/x-www-form-urlencoded ");

            DataOutputStream out = new DataOutputStream(httpURLConnection.getOutputStream());
            out.writeBytes(sb.toString());
            out.flush();
            out.close(); // flush and close
//        connection.connect();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
            StringBuilder sbStr = new StringBuilder();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                sbStr.append(line);
            }
            bufferedReader.close();
            httpURLConnection.disconnect();
           json=JSONObject.parseObject(new String(sbStr.toString().getBytes(), "utf-8"));
            json.put("code",code);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return json.toJSONString();
    }

    //設定引數
    //這裡引數是你申請簡訊模板時候可以定義的引數
    //引數1 引數2 引數3 是我定義的引數
    //這裡分別是 使用者名稱 ,驗證碼,過期分鐘數
    private static String setTemplateParam(String nickName,String code,int timeOut){
        JSONObject param=new JSONObject();
        param.put("引數1",nickName);
        param.put("引數2",code);
        param.put("引數3",timeOut);
        return param.toJSONString();
    }


    //獲取截至時間
    private static String getTimesTamp(int timeout){
        Calendar nowTime = Calendar.getInstance();
        nowTime.add(Calendar.MINUTE, timeout);
       return new SimpleDateFormat(DATEFORMAT).format(nowTime.getTime());
    }

    //生成4位驗證碼
    private static String createCode() {
        int code=(int)(Math.random()*9000+1000);
        return code + "";
    }

//    public static void main(String [] args){
//        System.out.println(sendSMS("使用者名稱", "手機號碼", 過期時間數));
//    }

這就OK了

就寫這麼多吧,有什麼問題可以留言,下班了,今天要搬家.苦逼啊…….~.~!!

相關推薦

傳送簡訊驗證(開放平臺)

此文章使用天翼開發平臺(模板簡訊)介面 API請求地址: http://api.189.cn/v2/emp/templateSms/sendSms 響應格式: POST 請求引數: 引數名 必須 型別 說明

java整合阿里大於第三方平臺傳送簡訊驗證

閒話不多說,言歸正傳。今天我要分享的是利用阿里大魚實現網站和APP的簡訊驗證。 阿里大魚開放了很多的訊息通知服務,包括簡訊通知,語音通知等。 阿里大魚的簡訊傳送官方API:https://api.alidayu.com/doc2/apiDetail.htm?spm=a3142

js模擬支付寶傳送簡訊驗證&&&&簡訊倒計時

html <div class="pwdContent"> <div class="pwdBox"></div> <div class="pwdErrorPoint">請輸入數字!</div></div>js // 簡訊驗

1-22.如何傳送簡訊驗證之Laravel框架

簡訊驗證碼的應用場景: 應用場景:簡訊註冊  密碼找回  簡訊通知 場景一:註冊 場景二:賬號繫結手機號 場景三:登陸 簡訊實現原理: 發起請求  =》  簡訊API介面流程處理  =》接收結果 簡訊

傳送簡訊驗證 倒計時

 1、頁面樣式:基於bootstrap  1 <div class="form-group"> 2 <label class="col-md-4 control-label">手機號碼</

如何傳送簡訊驗證之laravel框架

​ 簡訊驗證碼的應用場景: 應用場景:簡訊註冊  密碼找回  簡訊通知 場景一:註冊 場景二:賬號繫結手機號 場景三:登陸 簡訊實現原理: 發起請求  =》  簡訊API介面流程處理  =》接收結果 簡訊平臺網址:http://www.

【Python web 開發】雲片網傳送簡訊驗證

傳送簡訊驗證碼 是要使用第三方服務的,運營商是不可能提供對外的個人傳送簡訊服務功能,我們本身也沒有能力去傳送驗證碼,雲片網是目前提供這種服務使用率較高的服務商之一 我們先來看下雲片網國內單條傳送簡訊的api    根據api 寫了一個指令碼,這個appkey 我還沒申請 如

網易雲傳送簡訊驗證java實現

首先,登陸網易雲信註冊賬號然後獲取自己的App Key與App Secret,這裡就不多說了,可以自行百度。 在服務端API中我們可以很容易的找到這段程式碼,這是用來加密用的(關於如何加密也可以找到) import java.security.MessageDiges

傳送簡訊驗證後60秒倒計時

jquery實現的傳送簡訊驗證碼後60秒倒計時功能,完整例項可到http://smsow.zhenzikj.com/doc/sdk.html 下載"註冊驗證碼"的demo。 直接下載:java版: http://smsow.zhenzikj.com/demo/download.html?

小程式開發 —— 傳送簡訊驗證獲取倒計時效果

在小程式開發過程中如何實現簡訊驗證碼功能呢? 主要有兩種方法: 一、 使用小程式的 wx.getPhoneNumber 介面獲取簡訊驗證碼 微信小程式提供了 wx.getPhoneNumber api

celery非同步任務傳送簡訊驗證

1.在專案中建立celery_tasks包 2.在celery_tasks目錄下建立config.py檔案,用於儲存celery的配置資訊 broker_url = "redis://127.0.0.1

python利用第三方模組,傳送簡訊驗證

對於初學者,如何利用第三方python開發包傳送簡訊驗證碼,下面是具體的實現和記錄過程! 環境:虛擬機器上centos7平臺,python3.7版本; 首先,申請賬號的部分就省略了  1. 獲得appid和appSecret 在"我的應用"-&

python3傳送簡訊驗證demo

對於初學者,如何利用第三方python開發包傳送簡訊驗證碼,下面是具體的實現和記錄過程! 環境:虛擬機器上centos7平臺,python3.7版本; 首先,申請賬號的部分就省略了  1. 獲得appid和appSecret 在"我的應用"-&

JS實現註冊登入傳送簡訊驗證動態顯示60S倒計時完整案例

通常在web專案中都會遇到賬戶註冊或者忘記密碼時需要傳送簡訊驗證碼的功能,雖然說這種功能很常見,但是實際開發過程中很多人還會遇到不少坑。筆者經過整理把最近專案中的用到的這個傳送簡訊驗證碼動態顯示60S倒計時的完整實現過程分享給廣大開發者朋友。 1、頁面傳送簡訊驗證碼的表

java 實現傳送簡訊驗證功能

如何使用java + maven的專案環境傳送簡訊驗證碼,本文使用的是榛子云簡訊 的介面。 1. 安裝sdk 下載地址: http://smsow.zhenzikj.com/doc/sdk.html 下載下來是jar檔案,需要將jar釋出到本地的maven倉庫中, 在c

java向手機號傳送簡訊驗證

需要下載這三個jar包   commons-logging-1.1.1.jarcommons-httpclient-3.1.jarcommons-codec-1.4.jar 點選sms註冊才可以用簡訊驗證碼 1.註冊完畢就需要登入 2.登入完畢需要檢視簡訊金鑰 &

java後臺呼叫簡訊介面,實現傳送簡訊驗證的控制層實現

1.設計:使用者填寫手機號,點選獲取驗證碼按鈕,controller層獲得所要傳送驗證碼的手機號,隨機生成六位數的驗證碼。呼叫傳送簡訊介面url向此手機號傳送驗證碼。注意:下面的程式碼採用的是雲信使的簡訊驗證碼介面,不同的驗證碼更換不同的url格式,即可。 `

傳送簡訊驗證沒有判斷圖形驗證是否正確,被攻擊,臨時用nginx限制ip訪問

在專案中,註冊頁面上傳送簡訊驗證碼沒有判斷圖形驗證碼是否正確,就傳送驗證碼了,結果被攻擊了,nginx的access.log看到訪問的ip,並將訪問過多的ip選擇出來,臨時用nginx限制ip訪問。後面修改程式碼,重新發版。 但是,對於套了一層 CDN 或代理的網站,通過

傳送簡訊驗證時的倒計時功能

this.show = false; const TIME_COUNT = 60; if (!this.timer) { this.co

微信小程式傳送簡訊驗證完整例項

微信小程式註冊完整例項,傳送簡訊驗證碼,帶60秒倒計時功能,無需伺服器端。效果圖:   程式碼: index.wxml <!--index.wxml--> <view class="container"> <view class='row'&g