商务
合作
成蝶短信微信客服
微信客服:小蝶
成蝶短信微信客服
微信客服:小蝶

短信发送

发送前请申请短信签名和短信模板,并确保签名和模板已审核通过

接口说明

本接口主要适用于短信单发场景,特殊场景下可支持群发(最多可向1000个手机号码发送同样内容的短信)。

发送短信会根据发送量计费。

当您的验证码签名和通用签名名称相同时,系统默认使用通用签名发送短信。

请求参数

名称 类型 必填 描述 示例值
account string 用户account。 5U8ACWKBHX
phones string 接收短信的手机号码,多个号码英文,分隔,最大500个。 17777777777,18888888888
signName string 短信签名名称。
说明 必须是已添加、并通过审核的短信签名。更多短信签名规范,请参见 短信签名规范
淘宝
timestamp string Unix 时间戳,精确到毫秒值。 1682320089105
templateCode string 短信模板CODE。
说明 必须是已添加、并通过审核的短信模板。
SMS_14587434
templateParam string 短信模板变量对应的实际值。支持传入多个参数。 {"code":"张三","number":"1390000****"}
signature string 接口加密字段 MD5(account+timestamp+apiKey)
sendTime string 定时发送时间。 "sendTime":"201805241420"
outId string 外部流水扩展字段 abcdefgh

返回参数

名称 类型 描述 示例值
code Integer 请求状态码。
返回0代表请求成功。
其他错误码,请参见API错误码
0
msg string 状态码的描述。 发送成功
timestamp long Unix 时间戳。 1701418383599
bizId string 发送回执ID。 9006197469364984****

示例

正常返回示例

JSON格式


							

{

    "code": 0,

    "msg": "发送成功",

    "timestamp": 1701418383599,

    "bizId": "7330E9D0902111EEBFC769037CDE127F"

}

							

						

错误码

访问API错误码查看更多错误码。

DEMO

Java


							

 // 短信下发

String sendUrl = "https://api.cxdx.cn/api/send/sms";

Map<String, String> map = new HashMap();

// API账号

map.put("account", "N57***");

// 手机号

map.put("phones", "137******");

// 签名

map.put("signName", "签名");

// 模版编号

map.put("templateCode", "SPT_411651***");

// 模版变量

map.put("templateParam", "{\"name\":\"张三\",\"code\":\"123456\"}");

// 时间戳,当前毫秒值

String timestamp = String.valueOf(System.currentTimeMillis());

map.put("timestamp", timestamp);

//标准的MD5加密

String signature = SecretUtil.MD5(account + timestamp + apiKey);

map.put("signature", signature);



JSONObject js = (JSONObject) JSONObject.toJSON(map);

//发送请求

String body = cn.hutool.http.HttpUtil.post(sendUrl, js.toString(), 5000);

System.out.println(body);

							

						

PHP


							

const API_SEND_URL ='https://api.cxdx.cn/api/send/sms';//成蝶发送短信接口URL

const API_ACCOUNT = 'N57***'; //成蝶API账号

const API_KEY = '7383CC25C***'; //成蝶APIKEY



/**

*发送短信

*

*@paramstring $mobile手机号码

*@paramstring $msg短信内容

*/

public function sendSMS(){

    //接口参数

    $postArr = array(

        'account' => self::API_ACCOUNT,//成蝶API账号

        'phones' => '137******',//手机号码

        'signName' => '签名',//签名

        'templateCode' => 'SPT_411651***',//模板编号

        'templateParam' => '{"name":"张三","code":"123456"}',//模板变量

        'timestamp' => '1362662154211',//当前毫秒时间戳

        'signature' => md5(self::API_ACCOUNT + timestamp + self::API_KEY)

    );

    $result = $this->curlPost(self::API_SEND_URL, $postArr);

    return $result;

}

							

						

Node.JS


							

const http = require('http');



// 成蝶API账号

let account = "N57***";

// 手机号码

let phones = "137******";

// 签名

let signName = "签名";

// 模板编号

let templateCode = "SPT_411651***";

// 模板变量

let templateParam = "{\"name\":\"张三\",\"code\":\"123456\"}";

// 当前毫秒时间戳

let timestamp = "1362662154211";

// 标准MD5加密

let md5 = require('md5-node');

let signature = md5(account + timestamp + apiKey);





/* 发送短信方法 */

const sendSms = (options) => { // option:发送提交的参数

    let params = JSON.stringify(options);

    post("https://api.cxdx.cn/api/send/sms", params);

}





/* 发送请求过程,可根据自身系统处理 */

function post(url, params) {

    let options = {

        protocol: "https:",

        hostname: host,

        port: 80,

        path: url,

        method: 'POST',

        headers: {

            "Content-Type": "application/json; charset=UTF-8",

        }

    };

    const req = http.request(options, res => {

        console.log(`返回信息: ${res.msg}`);

    });

    req.write(params);

    req.end();

}



/* 发送短信实例*/

sendSms({

    "account": account,

    "phones": phones,

    "signName": signName,

    "templateCode": templateCode,

    "templateParam": templateParam,

    "timestamp": timestamp,

    "signature": "signature"

});



							

						

Python


							

def send_sms():

    md5String = hashlib.md5((str(account + timestamp + apiKey)).encode(encoding='utf-8')).hexdigest()

    params = {

                'account': 'N57', //成蝶API账号

                'phones' : '137******', //手机号码

                'signName': '签名', //签名

                'templateCode': 'SPT_411651***', //模板编号

                'templateParam' : '{"name":"张三","code":"123456"}', //模板变量

                'timestamp' : '1362662154211', //当前毫秒时间戳

                'signature' : md5String //标准MD5加密

              }

    params=json.dumps(params)



    headers = {"Content-type": "application/json"}

    conn = httplib.HTTPConnection(host, port=port, timeout=30)

    conn.request("POST", sms_send_uri, params, headers)

    response = conn.getresponse()

    response_str = response.read()

    conn.close()

    return response_str

							

						

.Net


							

string account = "N57***";//成蝶API账号

string phones = "137******";//手机号码

string signName = "签名";//签名

string templateCode = "SPT_411651***";//模板编号

string templateParam = "{\"name\":\"张三\",\"code\":\"123456\"}";//模板变量

string timestamp = "1362662154211";//当前毫秒时间戳

//标准MD5加密

MD5 md5 = MD5.Create();

byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(account + timestamp + apiKey));

string signature = Convert.ToBase64String(s);



string postJsonTpl = "{\"account\":\"{0}\",\"phones\":\"{1}\",\"signName\":\"{2}\",\"templateCode\":\"{3}\",\"templateParam\":\"{4}\",\"timestamp\":\"{5}\",\"signature\":\"{6}\"}";

string jsonBody = string.Format(postJsonTpl, account, phones, signName, templateCode, templateParam, timestamp, signature);



string url = "https://api.cxdx.cn/api/send/sms";

string result =String.Empty;

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

httpWebRequest.ContentType ="application/json";

httpWebRequest.Method ="POST";

NetworkCredential admin_auth = new NetworkCredential("username", "password");

httpWebRequest.Credentials = admin_auth;

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))

        {

            streamWriter.Write(jsonBody);

            streamWriter.Flush();

            streamWriter.Close();

            HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()))

            {

                result = streamReader.ReadToEnd();

            }

        }

Console.WriteLine(result =);

							

						

Go


							

params := make(map[string]interface{})

params["account"] = "N57***" //成蝶API账号

params["phones"] = "137******" //手机号码

params["signName"] = "签名" //签名

params["templateCode"] = "SPT_411651***" //模板编号

params["templateParam"] = "{\"name\":\"张三\",\"code\":\"123456\"}" //模板变量

params["timestamp"] = "1362662154211" //当前毫秒时间戳

//标准MD5加密

data := []byte(account + timestamp + apiKey)

md5New := md5.New()

md5New.Write(data)

// hex转字符串

md5String := hex.EncodeToString(md5New.Sum(nil))

params["signature"] = md5String

bytesData, err := json.Marshal(params)

if err != nil {

    fmt.Println(err.Error() )

    return

}

reader := bytes.NewReader(bytesData)

url := "https://api.cxdx.cn/api/send/sms"  //短信发送URL

request, err := http.NewRequest("POST", url, reader)

if err != nil {

    fmt.Println(err.Error())

    return

}

request.Header.Set("Content-Type", "application/json;charset=UTF-8")

client := http.Client{}

resp, err := client.Do(request)

if err != nil {

    fmt.Println(err.Error())

    return

}

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

if err != nil {

    fmt.Println(err.Error())

    return

}



str := (*string)(unsafe.Pointer(&respBytes))

fmt.Println(*str)