更新时间:2025-08-06 14:35:02
准备事项 | 说明 |
---|---|
完成企业认证+实名认证 | 根据运营商实名发送短信的要求,使用国内文本短信之前需要登录控制台完成企业认证 + 实名认证。否则无法报备签名以及使用。 |
API账号和密码 | 调用短信接口需要用到的账号和密码,获取的方式可查看控制台操作指引。 |
加白请求ip | 需要在控制台的"产品配置"目录下绑定您的服务器公网出口IP,否则我方接口将会拦截您的请求致使短信提交失败。配置方式可查看控制台操作指引,绑定IP能够有效防止盗发。 |
短信签名 | 完成签名申请并审核通过后,获取签名名称,含签名标识的括号:【】,使用未审核通过的签名,接口会拦截并报错。 |
短信模板ID | 完成模板申请并审核通过后,获取模板完整内容(含变量大小)。使用未审核通过的内容,验证码账号会默认拦截并报错,其他类型账号不会拦截报错,但会进入人工审核,由审核人员决定是否下发。 |
短信类型 | 短信格式 | 短信内容示例 |
---|---|---|
验证码短信 | 【短信签名】+ 正文(包含验证码文案) | 向用户手机发送: 【创蓝云智】您正在申请手机注册,验证码为:123456,5分钟内有效! |
通知短信 | 【短信签名】+ 正文 | 向用户手机发送: 【创蓝云智】尊敬的客户,您购买的会员卡已于11月29日正式到期。如您要继续使用,请于11月29日前及时续费或重新购买。 |
会员营销短信 | 【短信签名】+ 正文 + 退订语 | 向用户手机发送: 【创蓝云智】双十一重磅来袭,晚20点抢600送600!详见www.chuanglan.com拒收请回复R。 |
- 请求方式:json 格式封装的字符串,采用 post 方式提交请求
- Content-Type:application/json
- 编码格式:utf-8
- 请求地址:
https://smssh.253.com/msg/sms/v2/tpl/send
复制成功public String makeSignature(String md5Password, String timestamp, String nonce) { String str = generateStr(md5Password, timestamp, nonce); return HmacUtils.hmacSha256Hex(md5Password, str.replaceAll("\\s+", "")); } /** * 签名待处理的字符串拼接 */ public static String generateStr(String md5Password, String timestamp, String nonce){ String[] array = new String[] { md5Password, timestamp, nonce}; StringBuffer sb = new StringBuffer(); // 字符串排序 Arrays.sort(array); for (int i = 0; i < 3; i++) { sb.append(array[i]); } return sb.toString(); }
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|---|---|---|---|
X-QA-Hmac-Signature | String | 可选 | 使用上述加密鉴权时,传递makeSignature的结果,无需传递password。 不加密鉴权时,该Header填空字符串"",body里password必传。 | "nonce + md5Password(API密码的MD5的32位小写值)+ timestamp"(取决于排序结果) |
参数名称 | 类型 | 是否必传 | 描述 | 示例 |
---|---|---|---|---|
account | String | 是 | API 账号,登录控制台获取,获取方式请查阅控制台操作指引。 | "account":"N6000001" |
password | String | 否 | API 密码,未开启加密鉴权时则为必传,登录控制台获取,获取方式请查阅控制台操作指引。 | "password":"123456" |
nonce | String | 是 | 32位随机字符串 | "nonce":"2e6eceb5737b473284c930c8ef79090e" |
timestamp | String | 是 | 秒级时间戳 | "timestamp":"1631865523" |
phoneNumbers | String | 是 | 接收的手机号;多个手机号使用英文逗号间隔,一次不要超过 1000 个; | 批量群发"phoneNumbers":"15800000000,15300000000" |
templateParamJson | String | 否 | 变量参数值,变量模板必传。短信模板变量对应的实际值,JSON格式,参数个数与模版内变量个数一致, 且按照param1,param2,分别填充第一个变量,第二个变量,以此类增param3、param4等等。 - 示例: - 短信模板:尊敬的{s},恭喜您成功充值{s}元。 - templateParamJson:[{"param1":"张三","param2":"13"},{"param1":"李四","param2":"88"}] - 填充后的模板内容:尊敬的张三,恭喜您成功充值13元。 | "templateParamJson": "[{"param1":"张三","param2":"13"}, {"param1":"李四","param2":"88"}]" |
templateId | String | 是 | 模版Id,创建模板时返回的模板Id,可通过模板列表查询或登录控制台“模板管理”查看。 | "templateId":"1111111" |
signature | String | 否 | 短信签名,如果之前报备的模板没有选择关联签名,则为必传,自己带上签名, 25年7月起最新的模板报备中会选择关联签名,则可以不用传递此参数。 | "signature":"【创蓝云智】" |
report | String | 否 | 如您需要状态回执,则需要传"true",不传默认为"false",则无法获取状态回执。 | "report":"true" |
callbackUrl | String | 否 | 状态回执的回调地址,请传入完整带http开头的地址,不传默认为空,请勿传入空格, 否则会造成地址推送错误。地址可通过接口入参传入,也可在控制台手动配置, 可查看控制台操作指引。 | "callbackUrl":"https://" |
uid | String | 否 | 自定义参数,如订单号或短信发送记录流水号,最大支持64 位,状态回执会回传,不传默认为空。 | "uid":"321abc" |
extend | String | 否 | 下发短信号码扩展码,用于匹配上行回复,上行报告会回传。一般5位以内(只支持传数字), 不传默认为空。 | "extend":"555" |
复制成功{ "account":"N6000001", "timestamp" :"1752143733", "nonce": "x4zfk0y5foqwx6cbnw3bfmimy98abqs1", "phoneNumbers":"17601337176,15100159057", "templateId":"1021143438", "templateParamJson":"[{\"param1\":\"张1\",\"param2\":\"张2\"},{\"param1\":\"李1\",\"param2\":\"李2\"}]", "signature":"【创蓝云智】", "report":"true", "callbackUrl":"", "uid":"test_001", "extend":"01" }
参数名称 | 类型 | 描述 | 示例 |
---|---|---|---|
code | String | 提交响应状态码,返回“0”表示提交成功(其他错误请参考提交响应码) | "code":"000000" |
msgId | String | 消息 id(32 位纯数字) | "msgId":"25071516453300902203000007708373" |
time | String | 响应时间 | "time":"20250715164533" |
successNum | String | 提交成功数量,参数校验失败时不返回 | "successNum":"1" |
failNum | String | 提交失败数量,参数校验失败时不返回 | "failNum":"0" |
errorMsg | String | 提交响应状态码中文说明(提交成功返回空) | "errorMsg":"" |
复制成功{ "code": "000000", "failNum": "0", "successNum": "2", "msgId": "25071018345400902898000000000001", "time": "20250710183454", "errorMsg": "" }
状态码 | 描述 | 问题处理人 |
---|---|---|
000000 | 提交成功 | 无 |
101 | 无此用户(account参数要传API账号不是登录后台的账号,如N111111;或API账号关停了需要联系官网客服解禁) | 技术支持 |
102 | 密码错(请确认密码是否一致正确,请直接复制避免手动输入错误) | 技术支持 |
103 | 提交过快(提交速度超过流速限制) | 技术支持 |
104 | 系统忙(因平台侧原因,暂时无法处理提交的短信) | 技术支持 |
105 | 敏感短信(短信内容包含敏感词) | 客服 |
106 | 消息长度错(>1036 或<=0) | 技术支持 |
107 | 包含错误的手机号码 | 技术支持 |
108 | 手机号码个数错(手机号包含了中文符号;手机号个数错了,群发>1000 或<=0) | 技术支持 |
109 | 无发送额度(当前使用的API账号下没有发送额度) | 商务 |
110 | 不在发送时间内(联系客服或商务解决) | 商务 |
111 | 超出该账户当月发送额度限制(联系客服或商务解决) | 商务 |
112 | 产品错误(通道出现异常,联系商务解决) | 商务 |
113 | 扩展码格式错(非数字或者长度不对) | 技术支持 |
114 | 可用参数组个数错误(msg参数的变量符号固定使用"{$var}";变量符号在20个以内) | 技术支持 |
116 | 签名不合法或未带签名(短信签名需要报备通过后才能使用;重保签名不可用) | 客服 |
117 | IP 地址认证错(登录控制台在对应使用的API账号下加白ip) | 客服 |
118 | 用户没有相应的发送权限(账号被禁止发送,联系客服或商务解禁) | 客服 |
119 | 用户已过期 | 客服 |
120 | 违反防盗用策略(日发送限制,联系客服或商务解决) | 客服 |
123 | 发送类型错误(cmpp协议的账户不能使用https协议方式,请联系我方技术修改) | 技术支持 |
124 | 白模板匹配错误(接口传递的内容与报备的模板内容要完全一致,包括标点符号) | 客服 |
125 | 匹配驳回模板,提交失败(联系客服或商务解决) | 客服 |
127 | 定时发送时间格式错误(格式为 yyyyMMddHHmm) | 技术支持 |
128 | 内容编码失败 | 技术支持 |
129 | JSON 格式错误(header请求头是否生效:Content-Type:application/json;请求参数不是json格式) | 技术支持 |
130 | 请求参数错误(缺少必填参数;参数跟接口地址不匹配,例如变量参数请求普通短信接口地址) | 技术支持 |
132 | 消息长度错(>3500或<=0),超过短信最大支持字数 | 技术支持 |
133 | 单一手机号错误 | 技术支持 |
134 | 违反防盗策略, 超过月发送限制(联系客服或商务解决) | 技术支持 |
135 | 超过同一手机号相同内容发送限制 | 技术支持 |
136 | 不可批量提交"验证码"短信 | 技术支持 |
139 | 超出安全发送时间(时间戳过期,时间戳时间跟请求接口的时间差异控制在30s以内) | 技术支持 |
140 | 短信内容解密错误(秘钥没有使用正确) | 技术支持 |
144 | 产品未上线限制日发送数量(签名报备选择的未上线会日限100条,联系客服调整) | 客服 |
145 | 验签失败(验签不过,请参考对应接口的DEMO加签代码示例) | 技术支持 |
152 | MATERIAL_EXIST_ERROR (模板不存在) | 客服 |
153 | MESSAGE_LY_ERROR 消息长度错(>2000或者≤0) | 技术支持 |
154 | 长短信拼接错误 | 技术支持 |
155 | AIM_SEND_FAIL 转发失败 | 技术支持 |
158 | 退订语不符合规范,退订语现在只支持“拒收请回复R”。 | 技术支持 |
159 | 触发反轰炸策略 | 技术支持 |