騰信短信接口實例


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.Net;
using System.IO;
 
// newtonsoft json 模塊請自行到 http://www.newtonsoft.com/json 下載
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
 
namespace SMSDemo
{
class SmsSender
{
int sdkappid;
string appkey;
string url = "https://yun.tim.qq.com/v3/tlssmssvr/sendsms";
 
public SmsSender(int sdkappid, string appkey)
{
this.sdkappid = sdkappid;
this.appkey = appkey;
}
 
public void sendMsg(string nationCode, string phoneNumber, string content)
{
JObject data = new JObject();
JObject tel = new JObject();
tel.Add("nationcode", nationCode);
tel.Add("phone", phoneNumber);
data.Add("msg", content);
string sig = stringMD5(appkey + phoneNumber);
data.Add("type", "0"); // 默認為單發
data.Add("sig", sig);
data.Add("tel", tel);
data.Add("extend", ""); // 根據需要添加,一般保持默認
data.Add("ext", ""); // 根據需要添加,一般保持默認
string msgString = JsonConvert.SerializeObject(data);
Console.WriteLine(msgString);
 
try
{
// 發送 POST 請求
Random rnd = new Random();
int random = rnd.Next(1000000) % (900000) + 1000000;
string wholeUrl = url + "?sdkappid=" + sdkappid + "&random=" + random;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(wholeUrl);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] requestData = Encoding.UTF8.GetBytes(msgString);
request.ContentLength = requestData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(requestData, 0, requestData.Length);
requestStream.Close();
 
// 接收返回包
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
string retString = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
Console.WriteLine(retString);
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
 
private static string stringMD5(string input)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] targetData = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(input));
return byteToHexStr(targetData);
}
 
// 將二進制的數值轉換為 16 進制字符串,如 "abc" => "616263"
private static string byteToHexStr(byte[] input)
{
string returnStr = "";
if (input != null)
{
for (int i = 0; i < input.Length; i++)
{
returnStr += input[i].ToString("x2");
}
}
return returnStr;
}
 
static void Main(string[] args)
{
// sdkappid 和 appkey 請根據開放者申請的填寫,下面的是無效的
SmsSender sender = new SmsSender(1234567890, "1234567890");
// 發送手機號以及發送內容請根據實際情況調整,特別是內容需要匹配模板
sender.sendMsg("86", "13012345678", "驗證碼 1234");
}
}

}

 

 

 

 

 

1 協議說明
協議     HTTP POST
編碼格式     UTF8
URL     舉例:https://yun.tim.qq.com/v3/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx
接口說明     給用戶發短信驗證碼、短信通知,營銷短信(內容長度不超過450字)。
注:sdkappid請填寫您在騰訊雲上申請到的,random請填成隨機數。
2 請求包體

包體為json字符串,參數如下:

{
    "tel": {  
            "nationcode": "86", //國家碼
            "phone": "13788888888" //手機號碼
      },
    "type": "0", //0:普通短信;1:營銷短信(強調:要按需填值,不然會影響到業務的正常使用)
    "msg": "你的驗證碼是1234", //驗證碼,utf8編碼    
    "sig": "fdba654e05bc0d15796713a1a1a2318c", //app憑證,具體計算方式見下注
    "extend": "", //可選字段,默認沒有開通(需要填空)。通道擴展碼,
      //在短信回復場景中,騰訊server會原樣返回,開發者可依此區分是哪種類型的回復
    "ext": "" //可選字段,不需要就填空。用戶的session內容,騰訊server回包中會原樣返回
}

注:
1、"msg"字段需要匹配審核通過的模板內容
如果您的模板是"你的驗證碼是{1}",則"msg"字段可賦值為:"你的驗證碼是xxxx"。(其中"xxxx"為下發的驗證碼)
如果您有多個短信簽名,請將需要的短信簽名放在短信內容前面
例如您有"【騰訊科技】","【騰訊雲】"兩個簽名,但是想以"【騰訊雲】"簽名發送短信,
則"msg"字段可賦值為:"【騰訊雲】你的驗證碼是xxxx"。(其中"xxxx"為下發的驗證碼)
如果是海外手機,則不要攜帶短信簽名。
2、"extend"字段的配置請聯系騰訊雲短信技術支持
3、"sig"字段 為appkey + phone字段的 md5值,c++ 示例代碼如下:

string strPhone = "13712345678";
string strAppkey = "dffdfd6029698a5fdf4"; //sdkappid對應的appkey,需要業務方高度保密
string sig = md5(strAppkey + strPhone); //將strAppkey和 strPhone拼接后再求md5

3 應答包體

{
    "result": "0", //0表示成功(計費依據),非0表示失敗
    "errmsg": "", //result非0時的具體錯誤信息
    "ext": "some msg", //用戶的session內容,騰訊server回包中會原樣返回
    "sid": "xxxxxxx", //標識本次發送id
    "fee": 1 //短信計費的條數
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM