日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

云之讯短信验证视频php,云之讯短信接口GO实现

發布時間:2023/12/20 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云之讯短信验证视频php,云之讯短信接口GO实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

將項目變量appId, accountSId和token使用自己的替換掉就可以了。

發送信息時直接調用函數SendSMS即可,傳入參數電話號碼,模板ID以及模板中參數。由于云之訊的參數是以逗號分隔的,所以參數值中不能有逗號,同時參數值也不能為空。

對于返回信息,如果返回碼為000000代碼信息發送成功,對于錯誤的返回碼以及返回碼的解釋,可具體云之訊官網。http://docs.ucpaas.com/doku.php?id=rest_error

package UcGoSdk

import (

"bytes"

"errors"

"crypto/md5"

"encoding/base64"

"encoding/json"

"fmt"

"io/ioutil"

"net/http"

"net/url"

"strconv"

"strings"

"time"

)

const (

softVersion = "2014-06-30"

baseUrl = "https://api.ucpaas.com"

appId = "appId"

accountSId = "accountSId"

token = "token"

)

var timestamp string

type UcPaaS struct {

TmplSMS templateSMS `json:"templateSMS"`

}

type templateSMS struct {

AppId string `json:"appId"`

TemplateId string `json:"templateId"`

PhoneNum string `json:"to"`

Param string `json:"param"`

}

type result struct {

Resp response `json:"resp"`

}

type response struct {

RespCode string `json:"respCode"`

Failure int `josn:"failure,omitempty"`

ReturnTmplSMS returnTmplSMS `json:"templateSMS"`

}

type returnTmplSMS struct {

CreateDate string `json:"createDate"`

SMSId string `json:"smsId"`

}

/**

* Name: initUc

* Description: Create the instance of UcPaaS

*/

func initUc(phoneNum, tempId string, params ...string) *UcPaaS {

curTime := time.Now().Format("20060102150405000")

intCurTime, _ := strconv.Atoi(curTime)

timestamp = strconv.Itoa(intCurTime)

catParam := ""

for index, param := range params {

if index == 0 {

catParam = param

} else {

catParam = catParam + "," + param

}

}

//param := verifyCode + "," + expireTime

return &UcPaaS{

TmplSMS: templateSMS{

AppId: appId,

TemplateId: tempId,

PhoneNum: phoneNum,

Param: catParam,

},

}

}

/**

* Name: getAuthorization

* Descriotion: 包頭驗證信息,使用Base64編碼(賬戶Id:時間戳)

*/

func (res *result) getAuthorization(accountSId string) string {

src := accountSId + ":" + timestamp

return base64.StdEncoding.EncodeToString([]byte(src))

}

/**

* Name: getSigParameter

* Description: 驗證參數,URL后必須帶有sig參數,sig= MD5(賬戶Id + 賬戶授權令牌 + 時間戳,共32位)(注:轉成大寫)

*/

func (res *result) getSigParameter(accountSId, token string) string {

sig := accountSId + token + timestamp

//獲取MD5

return strings.ToUpper(fmt.Sprintf("%x", md5.Sum([]byte(sig))))

}

/**

* Name: getResult

* @return respcode 000000表示發送成功

*

*/

func (res *result) getResult(url, dataType, method string, data []byte) {

resp := res.connection(url, dataType, method, data)

_ = json.Unmarshal([]byte(resp), res)

}

/**

* Name: connection

* @param url

* @param dataType

* @param method post或get

* @param body POST數據

* @return string

*/

func (res *result) connection(url, dataType, method string, data []byte) string {

mine := ""

if dataType == "json" {

mine = "application/json"

} else {

mine = "application/xml"

}

client := &http.Client{}

//Get data

req, err := http.NewRequest(method, url, bytes.NewBuffer(data))

if err != nil {

return err.Error()

}

req.Header.Add("Accept", mine)

req.Header.Add("Content-Type", (mine + ";charset=utf-8"))

req.Header.Add("Content-Type", "application/x-www-form-urlencoded")

req.Header.Add("Authorization", res.getAuthorization(accountSId))

req.Header.Add("Content-Length", strconv.Itoa(len(data)))

resp, err := client.Do(req)

defer resp.Body.Close()

if err != nil {

return ""

}

respBody, err := ioutil.ReadAll(resp.Body)

if err != nil {

return ""

}

return string(respBody)

}

/**

* Name:SendSMS

* Description: Send the text message.

* @param phoneNum: The phone number

* @param tempId: The message template id

* @param params... : The parameter list.

*/

func SendSMS(phoneNum, tempId string, params ...string) (respCode string, err error) {

var rs result

//初始化

uc := initUc(phoneNum, tempId, params...)

//獲取Url

resource := "/" + softVersion + "/Accounts/" + accountSId + "/Messages/templateSMS"

parseUrl, err := url.ParseRequestURI(baseUrl)

if err != nil {

return "", errors.New("請求地址出錯")

}

parseUrl.Path = resource

urlStr := fmt.Sprintf("%v?sig=%s", parseUrl, rs.getSigParameter(accountSId, token))

//獲取post數據

data, err := json.MarshalIndent(uc, "", " ")

if err != nil {

return "", err

}

//POST必須大寫

rs.getResult(urlStr, "json", "POST", data)

respCode = rs.Resp.RespCode

if respCode != "000000" {

return respCode, errors.New("發送驗證碼失敗。")

}

return "", nil

}

總結

以上是生活随笔為你收集整理的云之讯短信验证视频php,云之讯短信接口GO实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。