关闭
立即体验

立即体验

立即体验
服务类型:
手机号:
验证:

彩信群发接口文档

21025 2020-12-18 10:39:37 中昱维信


1.创建彩信接口

协议说明

协议类目

说明

调用地址

https://vip.veesing.com/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|欢迎莅临采购

7、彩信标准展现样式示例:

标准彩信样式.png


代码示例

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://vip.veesing.com/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://vip.veesing.com/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://vip.veesing.com/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://vip.veesing.com/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://vip.veesing.com/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受限


客服热线:400-68-10658