接口说明
本接口主要适用于短信单发场景,特殊场景下可支持群发(最多可向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"
}
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)