Skip to content

Commit b550806

Browse files
authored
🆕 #2755 【小程序】增加小程序云开发短信接口
1 parent 5a26077 commit b550806

File tree

6 files changed

+124
-0
lines changed

6 files changed

+124
-0
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCloudService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cn.binarywang.wx.miniapp.api;
22

33
import cn.binarywang.wx.miniapp.bean.cloud.*;
4+
import cn.binarywang.wx.miniapp.bean.cloud.request.WxCloudSendSmsV2Request;
45
import com.google.gson.JsonArray;
56
import me.chanjar.weixin.common.error.WxErrorException;
67

@@ -539,4 +540,15 @@ Long databaseMigrateImport(String env, String collectionName, String filePath, i
539540
* @throws WxErrorException .
540541
*/
541542
WxCloudDatabaseCollectionGetResult databaseCollectionGet(String env, Long limit, Long offset) throws WxErrorException;
543+
544+
/**
545+
* 发送携带 URL Link 的短信
546+
*
547+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/cloudbase/cloudbase.sendSmsV2.html
548+
* @param request
549+
* @return WxCloudSendSmsV2Result
550+
* @throws WxErrorException
551+
*/
552+
WxCloudSendSmsV2Result sendSmsV2(WxCloudSendSmsV2Request request) throws WxErrorException;
553+
542554
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import cn.binarywang.wx.miniapp.api.WxMaCloudService;
44
import cn.binarywang.wx.miniapp.api.WxMaService;
55
import cn.binarywang.wx.miniapp.bean.cloud.*;
6+
import cn.binarywang.wx.miniapp.bean.cloud.request.WxCloudSendSmsV2Request;
67
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
78
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
89
import cn.binarywang.wx.miniapp.util.JoinerUtils;
@@ -410,4 +411,15 @@ public WxCloudDatabaseCollectionGetResult databaseCollectionGet(String env, Long
410411
String response = this.wxMaService.post(DATABASE_COLLECTION_GET_URL, params);
411412
return WxGsonBuilder.create().fromJson(response, WxCloudDatabaseCollectionGetResult.class);
412413
}
414+
415+
@Override
416+
public WxCloudSendSmsV2Result sendSmsV2(WxCloudSendSmsV2Request request) throws WxErrorException {
417+
// 如果没有指定云环境ID,取默认云环境ID
418+
if (request.getEnv() == null){
419+
String cloudEnv = this.wxMaService.getWxMaConfig().getCloudEnv();
420+
request.setEnv(cloudEnv);
421+
}
422+
String response = this.wxMaService.post(SEND_SMS_V2_URL, request);
423+
return WxGsonBuilder.create().fromJson(response, WxCloudSendSmsV2Result.class);
424+
}
413425
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package cn.binarywang.wx.miniapp.bean.cloud;
2+
3+
import cn.binarywang.wx.miniapp.bean.WxMaBaseResponse;
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.io.Serializable;
9+
import java.util.List;
10+
11+
/**
12+
* 发送携带 URL Link 的短信结果
13+
*
14+
* @author liming1019
15+
* @date 2022-07-26
16+
*/
17+
@Data
18+
public class WxCloudSendSmsV2Result extends WxMaBaseResponse implements Serializable {
19+
private static final long serialVersionUID = 4273038291300329985L;
20+
21+
@SerializedName("send_status_list")
22+
private List<SendStatus> sendStatusList;
23+
24+
@NoArgsConstructor
25+
@Data
26+
public static class SendStatus implements Serializable {
27+
private static final long serialVersionUID = 5765836923681051366L;
28+
29+
@SerializedName("serial_no")
30+
private String serialNo;
31+
32+
@SerializedName("phone_number")
33+
private String phoneNumber;
34+
35+
@SerializedName("code")
36+
private String code;
37+
38+
@SerializedName("message")
39+
private String message;
40+
41+
@SerializedName("iso_code")
42+
private String isoCode;
43+
}
44+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package cn.binarywang.wx.miniapp.bean.cloud.request;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
7+
import java.io.Serializable;
8+
import java.util.List;
9+
10+
/**
11+
* 发送携带 URL Link 的短信请求
12+
*
13+
* @author liming1019
14+
* @date 2022-07-26
15+
*/
16+
@Data
17+
@Builder
18+
public class WxCloudSendSmsV2Request implements Serializable {
19+
private static final long serialVersionUID = 8917033507660980594L;
20+
21+
@SerializedName("env")
22+
private String env;
23+
24+
@SerializedName("url_link")
25+
private String urlLink;
26+
27+
@SerializedName("template_id")
28+
private String templateId;
29+
30+
@SerializedName("template_param_list")
31+
private List<String> templateParamList;
32+
33+
@SerializedName("phone_number_list")
34+
private List<String> phoneNumberList;
35+
36+
@SerializedName("use_short_name")
37+
private Boolean useShortName;
38+
39+
@SerializedName("resource_appid")
40+
private String resourceAppid;
41+
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public interface Cloud {
4242
String DATABASE_UPDATE_URL = "https://api.weixin.qq.com/tcb/databaseupdate";
4343
String DATABASE_DELETE_URL = "https://api.weixin.qq.com/tcb/databasedelete";
4444
String DATABASE_ADD_URL = "https://api.weixin.qq.com/tcb/databaseadd";
45+
String SEND_SMS_V2_URL = "https://api.weixin.qq.com/tcb/sendsmsv2";
4546
}
4647

4748
public interface Msg {

weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImplTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.binarywang.wx.miniapp.api.WxMaService;
44
import cn.binarywang.wx.miniapp.bean.cloud.*;
5+
import cn.binarywang.wx.miniapp.bean.cloud.request.WxCloudSendSmsV2Request;
56
import cn.binarywang.wx.miniapp.test.ApiTestModule;
67
import com.google.common.collect.ImmutableSortedMap;
78
import com.google.common.collect.Lists;
@@ -394,4 +395,17 @@ public void testDatabaseCollectionGet() throws WxErrorException {
394395
assertThat(result.getCollections()[0].getIndexCount()).isGreaterThan(0);
395396
assertThat(result.getCollections()[0].getIndexSize()).isGreaterThan(0);
396397
}
398+
399+
@Test
400+
public void testSendSmsV2() throws WxErrorException {
401+
WxCloudSendSmsV2Request request = WxCloudSendSmsV2Request.builder()
402+
.urlLink("https://wxaurl.cn/xxxxxx")
403+
.templateId("844110")
404+
.templateParamList(Arrays.asList(new String[]{"能力上新"}))
405+
.phoneNumberList(Arrays.asList("+8612345678910"))
406+
.build();
407+
408+
final WxCloudSendSmsV2Result result = this.wxMaService.getCloudService().sendSmsV2(request);
409+
assertThat(result).isNotNull();
410+
}
397411
}

0 commit comments

Comments
 (0)