1、开通短信服务

1.1、控制台方式开通

登陆云鼎控制台,访问云鼎短信服务申请开通。

1.2、API方式开通

1.2.1、接口文档

请求方式

POST

请求地址

https://ydsms.jdcloud-api.com/v1/smsUsers

请求参数

返回参数

名称 类型 描述
result Result
requestId String 请求唯一标识

Result

名称 类型 描述
success Boolean 是否开通成功

1.2.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void openService() {
        OpenServiceUsingPOSTRequest openServiceUsingPOSTRequest = new OpenServiceUsingPOSTRequest();
        System.out.println(new Gson().toJson(ydsmsClient.openServiceUsingPOST(openServiceUsingPOSTRequest)));
    }
}

2、代码示例

请按以下说明准备好环境。 JAVA环境依赖, 请确保已经安装了 JDK 8 环境,若未安装请前往 Oracle 官网下载;

SDK环境依赖, 建议使用Maven 方式引入依赖:

<dependency>
    <groupId>com.jdcloud.sdk</groupId>
    <artifactId>ydsms</artifactId>
    <version>1.0.5</version>
</dependency>

关于 Java SDK 的最新版本号,请查看

调用openapi接口accessKeyId和secretAccessKey前往京东云控制台AccessKey管理页面查看

2.1、创建短信应用

2.1.1、接口文档

请求方式

POST

请求地址

https://ydsms.jdcloud-api.com/v1/smsApps

请求参数

名称 类型 是否必需 默认值 描述
appDesc String True 应用描述
appId String True 云鼎应用id
appName String True 应用名称

返回参数

名称 类型 描述
result Result
requestId String 请求唯一标识

Result

名称 类型 描述
appId String 应用id

2.1.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void createSmsApp() {
        CreateSmsAppUsingPOSTRequest request = new CreateSmsAppUsingPOSTRequest();
        request.setAppId("yd-app-02d73869hx111");
        request.setAppDesc("测试");
        request.setAppName("测试");
        System.out.println(new Gson().toJson(ydsmsClient.createSmsAppUsingPOST(request)));
    }
}

2.2、查询应用列表

2.2.1、接口文档

请求方式

GET

请求地址

https://ydsms.jdcloud-api.com/v1/smsApps

请求参数

名称 类型 是否必需 默认值 描述
pageNumber Integer False 页码
pageSize Integer False 分页大小
status String False 状态,0 停用 1 启用
appName String False 应用名称

返回参数

名称 类型 描述
result Result
requestId String

Result

名称 类型 描述
smsApps SmsAppVO[]
totalCount Long

SmsAppVO

名称 类型 描述
accessKeyId String accessKeyId
appDesc String 应用描述
appId String 应用id
appName String 应用名称
createTime String 创建时间
status Integer 应用状态,0 停用 1 启用
updateTime String

2.2.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void listSmsApps() {
        ListSmsAppsUsingGETRequest listSmsAppsUsingGETRequest = new ListSmsAppsUsingGETRequest();
        ListSmsAppsUsingGETResponse listSmsAppsUsingGETResponse = ydsmsClient.listSmsAppsUsingGET(listSmsAppsUsingGETRequest);
        System.out.println(new Gson().toJson(listSmsAppsUsingGETResponse));
    }
}

2.3、创建短信签名

2.3.1、接口文档

请求方式

POST

请求地址

https://ydsms.jdcloud-api.com/v1/smsSigns

请求参数

名称 类型 是否必需 默认值 描述
appId String True 应用id
applyExplanation String False 申请说明
signAttorneyUrl String False 授权委托下载地址,若短信签名用途为他用,涉及第三方权益需上传,上传至 oss
signCertificateUrl String True 证明材料下载地址,上传至 oss
signContent String True 若签名内容侵犯到第三方权益必须获得第三方真实授权,长度为 2~12 个字符无须添加【】、()、[] 符号,签名发送会自带【】符号,避免重复
signOtherCertificateUrl String False 其他证明材料下载地址 上传至 oss
signPurpose Integer True 签名用途,0自用 1他用
signTypeId Integer True 签名类型id,调用listSmsSignTypesUsingGET 接口获取

返回参数

名称 类型 描述
result Result
requestId String 请求唯一标识

Result

名称 类型 描述
signId String 签名id

2.3.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void createSign() {
        CreateSmsSignUsingPOSTRequest request = new CreateSmsSignUsingPOSTRequest();
        request.setAppId("yd-app-02d73869hx1");
        request.setApplyExplanation("测试");
        request.setSignAttorneyUrl("xx");
        request.setSignCertificateUrl("xx");
        request.setSignOtherCertificateUrl("xx");
        request.setSignContent("测试");
        request.setSignPurpose(0);
        request.setSignTypeId(1);
        System.out.println(new Gson().toJson(ydsmsClient.createSmsSignUsingPOST(request)));
    }
}

2.4、查询签名列表

2.4.1、接口文档

请求方式

GET

请求地址

https://ydsms.jdcloud-api.com/v1/smsSigns

请求参数

名称 类型 是否必需 默认值 描述
appId String True 应用id
pageNumber Integer False 页码
pageSize Integer False 分页大小
status String False 状态,1申请中 2拒绝 3通过

返回参数

名称 类型 描述
result Result
requestId String

Result

名称 类型 描述
smsSigns SmsSignVO[]
totalCount Long

SmsSignVO

名称 类型 描述
appId String 应用id
applyStatus Integer 申请状态,1申请中2拒绝3通过
createTime String 创建时间
pin String 用户pin
signContent String 签名内容
signId String 短信签名id
signTypeId Integer 短信签名类型id,调用 listSmsSignTypesUsingGET 接口查询
status Integer 短信签名状态,0未启用 1启用
auditorExplanation String 短信签名审核说明
signPurpose Integer 短信签名用途 0自用1他用
signAttorneyUrl String 授权委托书下载地址
signCertificateUrl String 证明材料下载地址
signOtherCertificateUrl String 其他证明材料下载地址
updateTime String

2.4.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void listSign() {
        ListSmsSignsUsingGETRequest request = new ListSmsSignsUsingGETRequest();
        request.setAppId("yd-app-02d73869hx1");
        System.out.println(new Gson().toJson(ydsmsClient.listSmsSignsUsingGET(request)));
    }
}

2.5、创建短信模板

2.5.1、接口文档

请求方式

POST

请求地址

https://ydsms.jdcloud-api.com/v1/smsTemplates

请求参数

名称 类型 是否必需 默认值 描述
appId String True 应用id
applyExplanation String False 申请说明
templateContent String True 模板内容
templateName String True 模板名称
templateType Integer True 模板类型:0 验证码短信,1 通知短信,2 推广短信

返回参数

名称 类型 描述
result Result
requestId String 请求唯一标识

Result

名称 类型 描述
templateId String 模板id

2.5.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void createTemplate() {
        CreateSmsTemplateUsingPOSTRequest request = new CreateSmsTemplateUsingPOSTRequest();
        request.setAppId("yd-app-02d73869hx1");
        request.setApplyExplanation("测试");
        request.setTemplateContent("欢迎您注册成为京东云用户,验证码为:${1}, 5分钟内有效!");
        request.setTemplateName("测试");
        request.setTemplateType(1);
        System.out.println(new Gson().toJson(ydsmsClient.createSmsTemplateUsingPOST(request)));
    }
}

2.5、查询短信模板列表

2.5.1、接口文档

请求方式

GET

请求地址

https://ydsms.jdcloud-api.com/v1/smsTemplates

请求参数

名称 类型 是否必需 默认值 描述
appId String True 应用id
pageNumber Integer False 页码
pageSize Integer False 分页大小
status String False 状态,1申请中 2拒绝 3通过
templateTypes String False 要查询的模板类型,多个以 , 隔开(0 验证码短信,1 通知短信,2 推广短信)

返回参数

名称 类型 描述
result Result
requestId String
Result
名称 类型 描述
smsTemplates SmsTemplateVO[]
totalCount Long
SmsTemplateVO
名称 类型 描述
appId String 应用id
applyStatus Integer 申请状态 1申请中,2拒绝,3通过
auditorExplanation String 短信模板审核说明
createTime String 创建时间
pin String 用户pin
status Integer 模板状态 0 未启用 1 启用
templateContent String 模板内容
templateId String 模板id
templateName String 模板名称
templateType Integer 模板类型,0 验证码短信,1 通知短信,2 推广短信
updateTime String

2.5.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void createTemplate() {
        ListSmsTemplatesUsingGETRequest request = new ListSmsTemplatesUsingGETRequest();
        request.setAppId("yd-app-xxxx");
        System.out.println(new Gson().toJson(ydsmsClient.listSmsTemplatesUsingGET(request)));
    }
}

2.6、发送短信

2.6.1、根据明文手机号发送短信

2.6.1.1、接口文档

请求方式

POST

请求地址

https://ydsms.jdcloud-api.com/v1/smsSendMessages

请求参数

名称 类型 是否必需 默认值 描述
appId String True 应用id
params String[] False 短信模板变量对应的数据值
phoneList String[] True 群发的国内电话号码,群发时一次最多不要超过100个手机号
signId String True 签名id
templateId String True 模板id

返回参数

名称 类型 描述
result Result
requestId String 请求唯一标识

Result

名称 类型 描述
mtResVO MtResVO

MtResVO

名称 类型 描述
reqCode String
reqId String
reqMsg String

2.6.1.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void send() {
        SendMessagesUsingPOSTRequest request = new SendMessagesUsingPOSTRequest();
        request.setAppId("yd-app-XXXXXXXXX");
        request.setParams(Collections.singletonList("测试"));
        request.setSignId("342d698979d9434787597c71492xxxxx");
        request.setTemplateId("608de5ffdcc347419291b684a32xxxxx");
        request.setPhoneList(Collections.singletonList("1881171xxxxx"));
        System.out.println(new Gson().toJson(request));
        System.out.println(new Gson().toJson(ydsmsClient.sendMessagesUsingPOST(request)));
    }
}

2.6.2、根据京东pin发送短信

2.6.2.1、接口文档

请求方式

POST

请求地址

https://ydsms.jdcloud-api.com/v1/sendMessagesByPin

请求参数

名称 类型 是否必需 默认值 描述
appId String True 应用id
signId String True 签名id
templateId String True 模板id
pin String True 用户pin
params String[] False 短信模板变量对应的数据值

返回参数

名称 类型 描述
result Result
requestId String 请求唯一标识

Result

名称 类型 描述
mtResVO MtResVO

MtResVO

名称 类型 描述
reqCode String
reqId String
reqMsg String

2.6.2.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void sendByPin() {
        SendMessagesByPinUsingPOSTRequest request = new SendMessagesByPinUsingPOSTRequest();
        request.setAppId("yd-app-17b42xxxx");
        request.setParams(Collections.singletonList("测试"));
        request.setSignId("342d698979d9434787597c71492xxxx");
        request.setTemplateId("608de5ffdcc347419291b684a32xxxx");
        request.setPin("1823318xxxx");
        System.out.println(new Gson().toJson(request));
        System.out.println(new Gson().toJson(ydsmsClient.sendMessagesByPinUsingPOST(request)));
    }
}

2.6.3、根据商家id和订单号发送短信

2.6.3.1、接口文档

请求方式

POST

请求地址

https://ydsms.jdcloud-api.com/v1/sendMessagesByOrderId

请求参数

名称 类型 是否必需 默认值 描述
appId String True 应用id
signId String True 签名id
templateId String True 模板id
venderId Long True 商家id
orderId Long True 订单编号
params String[] False 短信模板变量对应的数据值

返回参数

名称 类型 描述
result Result
requestId String 请求唯一标识

Result

名称 类型 描述
mtResVO MtResVO

MtResVO

名称 类型 描述
reqCode String
reqId String
reqMsg String

2.6.3.2、代码示例

public class YdsmsDemo {
    //1. 设置accessKey和secretKey线上环境
    private static String accessKeyId = "xxx";
    private static String secretAccessKey = "xxx";
    private static CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
    private static YdsmsClient ydsmsClient;

    static {
        ydsmsClient = YdsmsClient.builder()
                .credentialsProvider(credentialsProvider)
                .httpRequestConfig(new HttpRequestConfig.Builder().protocol(Protocol.HTTPS).build()) //默认为HTTPS
                .build();
    }

    @Test
    public void sendByOrderId() {
        SendMessagesByOrderIdUsingPOSTRequest request = new SendMessagesByOrderIdUsingPOSTRequest();
        request.setAppId("yd-app-17b42xxxx");
        request.setParams(Collections.singletonList("测试"));
        request.setSignId("342d698979d9434787597c71492xxxx");
        request.setTemplateId("608de5ffdcc347419291b684a32xxxx");
        request.setVenderId(123456L);
        request.setOrderId(1234567890L);
        System.out.println(new Gson().toJson(ydsmsClient.sendMessagesByOrderIdUsingPOST(request)));
    }
}

3、短信回执、上行消息

3.1、配置短信回执、上行消息回调地址

选择要配置回调地址的应用,点击 "应用名称",进入设置页面,点击 短信状态回调地址设置,回调服务需要返回指定的json字符串 { "status": true }

注:回执和上行消息回调地址为同一个

3.2、短信回执参数格式

名称 类型 是否必需 描述
code String False 短信回执状态对应的 code
desc String False 短信回执状态对应的 描述
status String False 短信发送结果 0:成功,非 0 失败
reqid String False 短信发送唯一标识,短信发送接口返回了该值
time String False 短信回执推送时间
phone String False 手机号(如果不是通过明文手机号提交短信此处脱敏)

示例:

{
    "reqid":"211123161429108512100003",
    "phone":"188****3290",
    "time":"2021-11-23 16:14:37",
    "status":"0",
    "code":"DELIVRD",
    "desc":"成功"
}

3.3、上行消息参数格式

名称 类型 是否必需 描述
time String False 上行消息推送时间
phone String False 手机号(如果不是通过明文手机号提交短信此处脱敏)
sign String False 短信签名
content String False 短信回复内容

示例:

{
    "content":"very good",
    "phone":"188****3290",
    "time":"2021-11-19 13:53:53",
    "sign":"测试"
}

results matching ""

    No results matching ""

    results matching ""

      No results matching ""