10000 小程序:增加修改服务器地址、成员管理 API by charmingoh · Pull Request #563 · binarywang/WxJava · GitHub
[go: up one dir, main page]

Skip to content

小程序:增加修改服务器地址、成员管理 API #563

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Apr 27, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,13 @@ public interface WxMaService {
*/
WxMaCodeService getCodeService();

/**
* 小程序修改服务器地址、成员管理 API
*
* @return WxMaSettingService
*/
WxMaSettingService getSettingService();

/**
* 初始化http请求对象.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package cn.binarywang.wx.miniapp.api;

import cn.binarywang.wx.miniapp.bean.WxMaDomainAction;
import me.chanjar.weixin.common.exception.WxErrorException;

/**
* 小程序修改服务器地址、成员管理 API(大部分只能是第三方平台调用)
*
* @author <a href="https://github.com/charmingoh">Charming</a>
* @since 2018-04-27 15:46
*/
public interface WxMaSettingService {
/**
* 修改服务器地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489138143_WPbOO&token=&lang=zh_CN
* access_token 为 authorizer_access_token
*/
String MODIFY_DOMAIN_URL = "https://api.weixin.qq.com/wxa/modify_domain";
String SET_WEB_VIEW_DOMAIN_URL = "https://api.weixin.qq.com/wxa/setwebviewdomain";
/**
* 小程序成员管理:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489140588_nVUgx&token=&lang=zh_CN
* access_token 为 authorizer_access_token
*/
String BIND_TESTER_URL = "https://api.weixin.qq.com/wxa/bind_tester";
String UNBIND_TESTER_URL = "https://api.weixin.qq.com/wxa/unbind_tester";

/**
* 操作服务器域名
*
* @param domainAction 域名操作参数
* 除了 webViewDomain,都是有效的
* @return 以下字段仅在 get 时返回完整字段
* @throws WxErrorException 操作失败时抛出,具体错误码请看文档
*/
WxMaDomainAction modifyDomain(WxMaDomainAction domainAction) throws WxErrorException;

/**
* 设置小程序业务域名(仅供第三方代小程序调用)
* 授权给第三方的小程序,其业务域名只可以为第三方的服务器,
* 当小程序通过第三方发布代码上线后,小程序原先自己配置的业务域名将被删除,
* 只保留第三方平台的域名,所以第三方平台在代替小程序发布代码之前,需要调用接口为小程序添加业务域名。
* 提示:需要先将域名登记到第三方平台的小程序业务域名中,才可以调用接口进行配置。
*
* @param domainAction 域名操作参数
* 只有 action 和 webViewDomain 是有效的
* @return 以下字段仅在 get 时返回完整字段
* @throws WxErrorException 操作失败时抛出,具体错误码请看文档
*/
WxMaDomainAction setWebViewDomain(WxMaDomainAction domainAction) throws WxErrorException;

/**
* 绑定微信用户为小程序体验者
*
* @param wechatId 微信号
* @throws WxErrorException 失败时抛出,具体错误码请看文档
*/
void bindTester(String wechatId) throws WxErrorException;

/**
* 解除绑定小程序的体验者
*
* @param wechatId 微信号
* @throws WxErrorException 失败时抛出,具体错误码请看文档
*/
void unbindTester(String wechatId) throws WxErrorException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import cn.binarywang.wx.miniapp.api.WxMaMsgService;
import cn.binarywang.wx.miniapp.api.WxMaQrcodeService;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.WxMaSettingService;
import cn.binarywang.wx.miniapp.api.WxMaTemplateService;
import cn.binarywang.wx.miniapp.api.WxMaUserService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
Expand Down Expand Up @@ -52,6 +53,7 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
private WxMaQrcodeService qrCodeService = new WxMaQrcodeServiceImpl(this);
private WxMaTemplateService templateService = new WxMaTemplateServiceImpl(this);
private WxMaCodeService codeService = new WxMaCodeServiceImpl(this);
private WxMaSettingService settingService = new WxMaSettingServiceImpl(this);

private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;
Expand Down Expand Up @@ -296,4 +298,9 @@ public WxMaTemplateService getTemplateService() {
public WxMaCodeService getCodeService() {
return this.codeService;
}

@Override
public WxMaSettingService getSettingService() {
return this.settingService;
}
}
48 changes: 48 additions & 0 deletions ...-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package cn.binarywang.wx.miniapp.api.impl;

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.WxMaSettingService;
import cn.binarywang.wx.miniapp.bean.WxMaDomainAction;
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
import me.chanjar.weixin.common.exception.WxErrorException;

import java.util.HashMap;
import java.util.Map;

/**
* @author <a href="https://github.com/charmingoh">Charming</a>
* @since 2018-04-27 15:46
*/
public class WxMaSettingServiceImpl implements WxMaSettingService {
private WxMaService wxMaService;

public WxMaSettingServiceImpl(WxMaService wxMaService) {
this.wxMaService = wxMaService;
}

@Override
public WxMaDomainAction modifyDomain(WxMaDomainAction domainAction) throws WxErrorException {
String responseContent = this.wxMaService.post(MODIFY_DOMAIN_URL, domainAction.toJson());
return WxMaDomainAction.fromJson(responseContent);
}

@Override
public WxMaDomainAction setWebViewDomain(WxMaDomainAction domainAction) throws WxErrorException {
String responseContent = this.wxMaService.post(SET_WEB_VIEW_DOMAIN_URL, domainAction.toJson());
return WxMaDomainAction.fromJson(responseContent);
}

@Override
public void bindTester(String wechatId) throws WxErrorException {
Map<String, Object> param = new HashMap<>(1);
param.put("wechatid", wechatId);
this.wxMaService.post(BIND_TESTER_URL, WxMaGsonBuilder.create().toJson(param));
}

@Override
public void unbindTester(String wechatId) throws WxErrorException {
Map<String, Object> param = new HashMap<>(1);
param.put("wechatid", wechatId);
this.wxMaService.post(UNBIND_TESTER_URL, WxMaGsonBuilder.create().toJson(param));
}
}
6293
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package cn.binarywang.wx.miniapp.bean;

import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
import com.google.gson.annotations.SerializedName;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
* 域名相关操作
*
* @author <a href="https://github.com/charmingoh">Charming</a>
* @since 2018-04-27 15:45
*/
@Data
@Builder
public class WxMaDomainAction implements Serializable {
private static final long serialVersionUID = -2898601966852935708L;
/**
* add添加, delete删除, set覆盖, get获取。当参数是get时不需要填四个域名字段
*/
private String action;
/**
* request合法域名,当action参数是get时不需要此字段。
*/
@SerializedName("requestdomain")
private List<String> requestDomain;
/**
* socket合法域名,当action参数是get时不需要此字段。
*/
@SerializedName("wsrequestdomain")
private List<String> wsRequestDomain;
/**
* uploadFile合法域名,当action参数是get时不需要此字段。
*/
@SerializedName("uploaddomain")
private List<String> uploadDomain;
/**
* downloadFile合法域名,当action参数是get时不需要此字段。
*/
@SerializedName("downloaddomain")
private List<String> downloadDomain;
/**
* 小程序业务域名,当action参数是get时不需要此字段。
*/
@SerializedName("webviewdomain")
private List<String> webViewDomain;

public String toJson() {
return WxMaGsonBuilder.create().toJson(this);
}

public static WxMaDomainAction fromJson(String json) {
return WxMaGsonBuilder.create().fromJson(json, WxMaDomainAction.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package cn.binarywang.wx.miniapp.api.impl;

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaDomainAction;
import cn.binarywang.wx.miniapp.test.ApiTestModule;
import com.google.inject.Inject;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;

import static org.testng.Assert.assertNotNull;

/**
* @author <a href="https://github.com/charmingoh">Charming</a>
* @since 2018-04-27 15:38
*/
@Test
@Guice(modules = ApiTestModule.class)
public class WxMaSettingServiceImplTest {
@Inject
private WxMaService wxService;

@Test
public void testModifyDomain() throws Exception {
WxMaDomainAction domainAction = wxService.getSettingService().modifyDomain(WxMaDomainAction
.builder()
.action("get")
.build());
System.out.println(domainAction);
assertNotNull(domainAction);

domainAction.setAction("set");
WxMaDomainAction result = wxService.getSettingService().modifyDomain(domainAction);
System.out.println(result);
}

@Test
public void testBindTester() throws Exception {
wxService.getSettingService().bindTester("WeChatId");
}

@Test
public void testUnbindTester() throws Exception {
wxService.getSettingService().unbindTester("WeChatId");
}

@Test
public void testSetWebViewDomain() throws Exception {
WxMaDomainAction domainAction = wxService.getSettingService().setWebViewDomain(WxMaDomainAction
.builder()
.action("get")
.build());
System.out.println(domainAction);
}
}
0