彩信群发接口文档
最近更新时间:2020-03-01 20:57:53
1.创建彩信接口
协议说明
协议类目 |
说明 |
调用地址 |
https://cloud.10658.com.cn/mmsApi/create |
请求方式 |
POST(HTTPS) |
编码格式 |
UTF-8 |
Content-Type |
application/x-www-form-urlencoded;charset=utf-8 |
请求参数(Query)
参数名称 |
类型 |
是否必填 |
描述 |
示例值 |
appId |
String |
是 |
账户标识。平台分配给用户的接口调用账户标识,登录平台首页账号信息栏可查看。 |
2RYN7CQHL1M***** |
appKey |
String |
是 |
账户密钥。平台分配给用户的接口调用密钥,登录平台首页账号信息栏,校验身份后可查看。 |
WVNA4A0***** |
title |
String |
是 |
彩信标题 |
双十一大促 |
content |
String |
是 |
彩信内容 (内容格式请看下方说明) (彩信内容不支持插入表情符号) |
|
内容格式定义
1、彩信支持图片、视频、音频和文字,图片编码格式为base64,文字编码格式为gbk编码后转base64。
2、彩信最多支持15帧,帧与帧之间用英文分号(;)分隔,彩信总大小不能超过80KB。
3、彩信每帧需包含帧播放时间、文件类型、文件内容,文件内容可以为图片(支持jpg/gif格式)、视频(支持mp4格式)、音频(支持mp3格式)、文字(文字用txt格式存储,编码格式为gbk)。
4、同一帧最多允许一段文字和一种媒体文件(即同一帧中只允许展现视频、图片、音频中的一种媒体文件),多个媒体文件请分别放置在多帧中。
5、彩信完整数据报文格式:
播放时间,文件类型|文件内容,文件类型|文件内容;播放时间,文件类型|文件内容,文件类型|文件内容;
帧播放时间作为该帧报文前置字段,每帧可以包含多个文件,多个文件用(,)分隔,每个文件由格式和内容组成,格式和内容用(|)分隔。
6、彩信完整数据报文示例:
5,jpg|4AAQSkZJR...gABAgA,txt|双十一大促;3,gif|ExghIhcXG...RcXIiQdIB,txt|欢迎莅临采购
代码示例
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
/**
* 彩信创建
* @author Veesing
*
*/
public class MmsTest {
final static String CREATE_URL = "https://cloud.10658.com.cn/mmsApi/create";
final static String APPID = "";
final static String APPKEY = "";
public static void create() {
try {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(CREATE_URL);
post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
post.setRequestHeader("Connection", "close");
NameValuePair[] data = {
new NameValuePair("appId", APPID),
new NameValuePair("appKey", APPKEY),
new NameValuePair("title", "彩信标题"),
new NameValuePair("content", content())
};
post.setRequestBody(data);
client.executeMethod(post);
String result = new String(post.getResponseBodyAsString().getBytes());
System.out.println(result);
post.releaseConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 一帧<br>
* 多帧循环生成
*
* @return
*/
public static String content() {
StringBuffer sb = new StringBuffer();
// --------文件-----
sb.append(",jpg|" + encodeFile("文件路径"));
// --------文字-----
sb.append(",txt|" + encodeTxt("文字内容"));
sb.append(";");
return sb.substring(0, sb.length() - 1);
}
public static String encodeFile(String filePath) {
byte[] data = null;
try {
InputStream in = new FileInputStream(filePath);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return Base64.getEncoder().encodeToString(data).replaceAll("[\\t\\n\\r]", "");
}
public static String encodeTxt(String txt) {
try {
return Base64.getEncoder().encodeToString(new String(txt).getBytes("gbk"));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
正常响应示例
{
"returnStatus": "1 ", //状态码
"message": "成功", //状态提示信息
"remainPoint": null,
"taskId": "55", //彩信ID
"successCounts": null
}
异常响应示例
{
"returnStatus": "0", //状态码
"message": "参数错误", //状态提示信息
"remainPoint": null,
"taskId": null,
"successCounts": null
}
状态码定义
状态码 |
状态提示信息 |
1 |
发送成功 |
0 |
账号或密码错误 |
0 |
缺少参数 |
0 |
您的账户已被锁定,请联系您的专属客服 |
0 |
未知原因,请联系客服 |
2.发送彩信接口
协议说明
协议类目 |
说明 |
调用地址 |
https://cloud.10658.com.cn/mmsApi/send |
请求方式 |
POST(HTTPS) |
编码格式 |
UTF-8 |
Content-Type |
application/x-www-form-urlencoded;charset=utf-8 |
请求参数(Query)
参数名称 |
类型 |
是否必填 |
描述 |
示例值 |
appId |
String |
是 |
账户标识。平台分配给用户的接口调用账户标识,登录平台首页账号信息栏可查看。 |
2RYN7CQHL1M***** |
appKey |
String |
是 |
账户密钥。平台分配给用户的接口调用密钥,登录平台首页账号信息栏,校验身份后可查看。 |
WVNA4A0***** |
mmsId |
String |
是 |
彩信ID。创建彩信接口返回的ID或平台创建彩信生成的ID。 |
54 |
sendTime |
String |
否 |
定时时间。留空则表示立即发送,时间格式为:yyyy-MM-dd HH:mm:ss |
2018-08-21 14:00:00 |
phone |
String |
是 |
接收彩信的手机号码,多个手机号码用逗号分隔。 |
156****1090 |
请求示例
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
/**
* 彩信发送
* @author Veesing
*
*/
public class MmsTest {
final static String SEND_URL = "https://cloud.10658.com.cn/mmsApi/send";
final static String APPID = "";
final static String APPKEY = "";
public static void send() {
try {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(SEND_URL);
post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
post.setRequestHeader("Connection", "close");
NameValuePair[] data = {
new NameValuePair("appId", APPID),
new NameValuePair("appKey", APPKEY),
new NameValuePair("mmsId", "xxxxxx"),
// new NameValuePair("sendTime", "2020-11-07 14:37:31"),
new NameValuePair("phone", content()) };
post.setRequestBody(data);
client.executeMethod(post);
String result = new String(post.getResponseBodyAsString().getBytes());
System.out.println(result);
post.releaseConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
正常响应示例
{
"returnStatus": "1 ", //状态码
"message": "成功", //状态提示信息
"remainPoint": "241", //本次发送后,账户剩余条数
"taskId": "3313746", //下发批次ID(唯一)
"successCounts": "1" //成功条数
}
异常响应示例
{
"returnStatus": "0", //状态码
"message": "参数错误", //状态提示信息
"remainPoint": null, //本次发送后,账户剩余条数
"taskId": null, //下发批次ID(唯一)
"successCounts": null //成功条数
}
状态码定义
状态码 |
状态提示信息 |
1 |
发送成功 |
0 |
账号或密码错误 |
0 |
缺少参数 |
0 |
您的账户已被锁定,请联系您的专属客服 |
0 |
未知原因,请联系客服 |
3.审核结果推送
触发条件
彩信提交到平台,平台审核后,将立即推送审核结果。每审核一批,则推送一次。
使用说明
审核结果由短信平台主动推送到用户设置的地址上,接收数据需遵循标准化数据格式定义。
协议说明
协议类目 |
说明 |
调用方式 |
主动回调 |
请求方式 |
POST(HTTPS) |
编码格式 |
UTF-8 |
数据交互格式 |
Key-Value |
Content-Type |
application/x-www-form-urlencoded;charset=utf-8 |
审核结果数据定义
参数名称 |
类型 |
是否必填 |
描述 |
示例值 |
taskId |
String |
是 |
发送批次ID |
123 |
returnStatus |
String |
是 |
彩信审核结果:0 拒绝,1 通过 |
1 |
message |
String |
是 |
审核结论。审核拒绝时,将通过此字段告知客户端拒绝原因。 |
内容不合规 |
4.回执推送接口
触发条件
运营商产生短信回执后,触发回执数据推送,每产生一条回执,则推送一条。
使用说明
回执数据,由短信平台主动推送到用户设置的地址上,数据格式需遵循标准化数据格式。
协议说明
协议类目 |
说明 |
调用方式 |
主动回调 |
请求方式 |
POST(HTTPS) |
编码格式 |
UTF-8 |
数据交互格式 |
Key-Value |
Content-Type |
application/x-www-form-urlencoded;charset=utf-8 |
回执数据定义
参数名称 |
类型 |
是否必填 |
描述 |
示例值 |
mobile |
String |
是 |
用户手机号码 |
1508092**** |
taskid |
String |
是 |
发送批次ID |
123 |
status |
String |
是 |
回执状态 1.发送成功 0.发送失败 |
1 |
receivetime |
String |
是 |
回执产生时间 yyyy-MM-dd HH:mm:ss |
2019-07-23 17:00:00 |
5.余额查询接口
协议说明
协议类目 |
说明 |
调用地址 |
https://cloud.10658.com.cn/mmsApi/getBalance |
请求方式 |
POST(HTTPS) |
编码格式 |
UTF-8 |
Content-Type |
application/x-www-form-urlencoded;charset=utf-8 |
请求参数(Query)
参数名称 |
类型 |
是否必填 |
描述 |
示例值 |
appId |
String |
是 |
账户标识。平台分配给用户的接口调用账户标识,登录平台首页账号信息栏可查看。 |
2RYN7CQHL1M***** |
appKey |
String |
是 |
账户密钥。平台分配给用户的接口调用密钥,登录平台首页账号信息栏,校验身份后可查看。 |
WVNA4A0***** |
请求示例
OkHttpClient client = new OkHttpClient().newBuilder()
.followRedirects(false)
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("https://cloud.10658.com.cn/mmsApi/group/getBalance?appId=2RYN7CQHL1M*****&appKey=WVNA4A0*****")
.method("POST", body)
.build();
Response response = client.newCall(request).execute();
正常响应示例
{
"returnStatus": "1 ", //状态码
"message": "成功", //状态提示信息
"remainPoint": "241", //账户剩余条数
"taskId": null,
"successCounts": null
}
异常响应示例
{
"returnStatus": "0", //状态码
"message": "参数错误", //状态提示信息
"remainPoint": null,
"taskId": null,
"successCounts": null
}
状态码定义
状态码 |
状态提示信息 |
1 |
提交成功 |
0 |
账号或密码错误 |
0 |
缺少参数 |
0 |
您的账户已被锁定,请联系您的专属客服 |
0 |
未知原因,请联系客服 |
0 |
IP受限 |