Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 605d77d

Browse filesBrowse files
authored
🆕 #3207 【开放平台】 新增小程序认证上传补充材料的接口
1 parent 8610c0f commit 605d77d
Copy full SHA for 605d77d

File tree

Expand file treeCollapse file tree

7 files changed

+242
-0
lines changed
Filter options
Expand file treeCollapse file tree

7 files changed

+242
-0
lines changed
+32Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package cn.binarywang.wx.miniapp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
6+
7+
import java.io.Serializable;
8+
9+
/**
10+
* 小程序认证上传补充材料
11+
*
12+
* @author penhuozhu
13+
* @since 2024/01/07
14+
*/
15+
@Data
16+
public class WxMaUploadAuthMaterialResult implements Serializable {
17+
private static final long serialVersionUID = 1L;
18+
19+
private String type;
20+
21+
@SerializedName("mediaid")
22+
private String mediaId;
23+
24+
public static WxMaUploadAuthMaterialResult fromJson(String json) {
25+
return WxGsonBuilder.create().fromJson(json, WxMaUploadAuthMaterialResult.class);
26+
}
27+
28+
@Override
29+
public String toString() {
30+
return WxGsonBuilder.create().toJson(this);
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package cn.binarywang.wx.miniapp.executor;
2+
3+
import cn.binarywang.wx.miniapp.bean.WxMaUploadAuthMaterialResult;
4+
import me.chanjar.weixin.common.enums.WxType;
5+
import me.chanjar.weixin.common.error.WxError;
6+
import me.chanjar.weixin.common.error.WxErrorException;
7+
import me.chanjar.weixin.common.util.http.RequestHttp;
8+
import me.chanjar.weixin.common.util.http.apache.Utf8ResponseHandler;
9+
import org.apache.http.HttpEntity;
10+
import org.apache.http.HttpHost;
11+
import org.apache.http.client.config.RequestConfig;
12+
import org.apache.http.client.methods.CloseableHttpResponse;
13+
import org.apache.http.client.methods.HttpPost;
14+
import org.apache.http.entity.mime.HttpMultipartMode;
15+
import org.apache.http.entity.mime.MultipartEntityBuilder;
16+
import org.apache.http.impl.client.CloseableHttpClient;
17+
18+
import java.io.File;
19+
import java.io.IOException;
20+
21+
/**
22+
* @author penhuozhu
23+
* @since 2024/01/07
24+
*/
25+
public class ApacheUploadAuthMaterialRequestExecutor extends UploadAuthMaterialRequestExecutor<CloseableHttpClient, HttpHost> {
26+
27+
public ApacheUploadAuthMaterialRequestExecutor(RequestHttp requestHttp) {
28+
super(requestHttp);
29+
}
30+
31+
@Override
32+
public WxMaUploadAuthMaterialResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException {
33+
HttpPost httpPost = new HttpPost(uri);
34+
if (requestHttp.getRequestHttpProxy() != null) {
35+
RequestConfig config = RequestConfig.custom().setProxy(requestHttp.getRequestHttpProxy()).build();
36+
httpPost.setConfig(config);
37+
}
38+
if (file != null) {
39+
HttpEntity entity = MultipartEntityBuilder
40+
.create()
41+
.addBinaryBody("media", file)
42+
.setMode(HttpMultipartMode.RFC6532)
43+
.build();
44+
httpPost.setEntity(entity);
45+
}
46+
try (CloseableHttpResponse response = requestHttp.getRequestHttpClient().execute(httpPost)) {
47+
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
48+
WxError error = WxError.fromJson(responseContent, wxType);
49+
if (error.getErrorCode() != 0) {
50+
throw new WxErrorException(error);
51+
}
52+
return WxMaUploadAuthMaterialResult.fromJson(responseContent);
53+
} finally {
54+
httpPost.releaseConnection();
55+
}
56+
}
57+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package cn.binarywang.wx.miniapp.executor;
2+
3+
import cn.binarywang.wx.miniapp.bean.WxMaUploadAuthMaterialResult;
4+
import jodd.http.HttpConnectionProvider;
5+
import jodd.http.HttpRequest;
6+
import jodd.http.HttpResponse;
7+
import jodd.http.ProxyInfo;
8+
import me.chanjar.weixin.common.enums.WxType;
9+
import me.chanjar.weixin.common.error.WxError;
10+
import me.chanjar.weixin.common.error.WxErrorException;
11+
import me.chanjar.weixin.common.util.http.RequestHttp;
12+
13+
import java.io.File;
14+
import java.io.IOException;
15+
import java.nio.charset.StandardCharsets;
16+
17+
/**
18+
* @author penhuozhu
19+
* @since 2024/01/07
20+
*/
21+
public class JoddHttpUploadAuthMaterialRequestExecutor extends UploadAuthMaterialRequestExecutor<HttpConnectionProvider, ProxyInfo> {
22+
23+
public JoddHttpUploadAuthMaterialRequestExecutor(RequestHttp requestHttp) {
24+
super(requestHttp);
25+
}
26+
27+
@Override
28+
public WxMaUploadAuthMaterialResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException {
29+
HttpRequest request = HttpRequest.post(uri);
30+
if (requestHttp.getRequestHttpProxy() != null) {
31+
requestHttp.getRequestHttpClient().useProxy(requestHttp.getRequestHttpProxy());
32+
}
33+
request.withConnectionProvider(requestHttp.getRequestHttpClient());
34+
request.form("media", file);
35+
HttpResponse response = request.send();
36+
response.charset(StandardCharsets.UTF_8.name());
37+
38+
String responseContent = response.bodyText();
39+
WxError error = WxError.fromJson(responseContent, wxType);
40+
if (error.getErrorCode() != 0) {
41+
throw new WxErrorException(error);
42+
}
43+
return WxMaUploadAuthMaterialResult.fromJson(responseContent);
44+
}
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package cn.binarywang.wx.miniapp.executor;
2+
3+
import cn.binarywang.wx.miniapp.bean.WxMaUploadAuthMaterialResult;
4+
import me.chanjar.weixin.common.enums.WxType;
5+
import me.chanjar.weixin.common.error.WxError;
6+
import me.chanjar.weixin.common.error.WxErrorException;
7+
import me.chanjar.weixin.common.util.http.RequestHttp;
8+
import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
9+
import okhttp3.*;
10+
11+
import java.io.File;
12+
import java.io.IOException;
13+
14+
/**
15+
* @author penhuozhu
16+
* @since 2024/01/07
17+
*/
18+
public class OkHttpUploadAuthMaterialRequestExecutor extends UploadAuthMaterialRequestExecutor<OkHttpClient, OkHttpProxyInfo> {
19+
20+
public OkHttpUploadAuthMaterialRequestExecutor(RequestHttp requestHttp) {
21+
super(requestHttp);
22+
}
23+
24+
@Override
25+
public WxMaUploadAuthMaterialResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException {
26+
27+
RequestBody body = new MultipartBody.Builder()
28+
.setType(MediaType.parse("multipart/form-data"))
29+
.addFormDataPart("media",
30+
file.getName(),
31+
RequestBody.create(MediaType.parse("application/octet-stream"), file))
32+
.build();
33+
Request request = new Request.Builder().url(uri).post(body).build();
34+
35+
Response response = requestHttp.getRequestHttpClient().newCall(request).execute();
36+
String responseContent = response.body().string();
37+
WxError error = WxError.fromJson(responseContent, wxType);
38+
if (error.getErrorCode() != 0) {
39+
throw new WxErrorException(error);
40+
}
41+
return WxMaUploadAuthMaterialResult.fromJson(responseContent);
42+
}
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package cn.binarywang.wx.miniapp.executor;
2+
3+
import cn.binarywang.wx.miniapp.bean.WxMaUploadAuthMaterialResult;
4+
import me.chanjar.weixin.common.enums.WxType;
5+
import me.chanjar.weixin.common.error.WxErrorException;
6+
import me.chanjar.weixin.common.util.http.RequestExecutor;
7+
import me.chanjar.weixin.common.util.http.RequestHttp;
8+
import me.chanjar.weixin.common.util.http.ResponseHandler;
9+
10+
import java.io.File;
11+
import java.io.IOException;
12+
13+
/**
14+
* 小程序认证上传补充材料
15+
* 上传媒体文件请求执行器.
16+
* 请求的参数是File, 返回的结果是String
17+
*
18+
* @author penhuozhu
19+
* @since 2024/01/07
20+
*/
21+
public abstract class UploadAuthMaterialRequestExecutor<H, P> implements RequestExecutor<WxMaUploadAuthMaterialResult, File> {
22+
protected RequestHttp<H, P> requestHttp;
23+
24+
public UploadAuthMaterialRequestExecutor(RequestHttp requestHttp) {
25+
this.requestHttp = requestHttp;
26+
}
27+
28+
@Override
29+
public void execute(String uri, File data, ResponseHandler<WxMaUploadAuthMaterialResult> handler, WxType wxType) throws WxErrorException, IOException {
30+
handler.handle(this.execute(uri, data, wxType));
31+
}
32+
33+
public static RequestExecutor<WxMaUploadAuthMaterialResult, File> create(RequestHttp requestHttp) {
34+
switch (requestHttp.getRequestType()) {
35+
case APACHE_HTTP:
36+
return new ApacheUploadAuthMaterialRequestExecutor(requestHttp);
37+
case JODD_HTTP:
38+
return new JoddHttpUploadAuthMaterialRequestExecutor(requestHttp);
39+
case OK_HTTP:
40+
return new OkHttpUploadAuthMaterialRequestExecutor(requestHttp);
41+
default:
42+
return null;
43+
}
44+
}
45+
}

‎weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenMaService.java

Copy file name to clipboardExpand all lines: weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenMaService.java
+13Lines changed: 13 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.WxMaAuditMediaUploadResult;
5+
import cn.binarywang.wx.miniapp.bean.WxMaUploadAuthMaterialResult;
56
import me.chanjar.weixin.common.error.WxErrorException;
67
import me.chanjar.weixin.open.bean.ma.WxMaPrefetchDomain;
78
import me.chanjar.weixin.open.bean.ma.WxMaScheme;
@@ -273,6 +274,11 @@ public interface WxOpenMaService extends WxMaService {
273274
*/
274275
String API_WX_APPLY_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/applyliveinfo";
275276

277+
/**
278+
* 小程序认证上传补充材料
279+
*/
280+
String API_UPLOAD_AUTH_MATERIAL = "https://api.weixin.qq.com/wxa/sec/uploadauthmaterial";
281+
276282
/**
277283
* 获得小程序的域名配置信息
278284
*
@@ -752,4 +758,11 @@ WxOpenMaDomainResult modifyDomain(String action, List<String> requestDomains, Li
752758
*/
753759
WxOpenMaApplyLiveInfoResult applyLiveInfo() throws WxErrorException;
754760

761+
/**
762+
* 小程序认证上传补充材料
763+
*
764+
* @return
765+
*/
766+
WxMaUploadAuthMaterialResult uploadAuthMaterial(File file) throws WxErrorException;
767+
755768
}

‎weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java

Copy file name to clipboardExpand all lines: weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
55
import cn.binarywang.wx.miniapp.bean.WxMaAuditMediaUploadResult;
66
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
7+
import cn.binarywang.wx.miniapp.bean.WxMaUploadAuthMaterialResult;
78
import cn.binarywang.wx.miniapp.config.WxMaConfig;
89
import cn.binarywang.wx.miniapp.executor.AuditMediaUploadRequestExecutor;
10+
import cn.binarywang.wx.miniapp.executor.UploadAuthMaterialRequestExecutor;
911
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
1012
import com.google.gson.Gson;
1113
import com.google.gson.GsonBuilder;
@@ -466,4 +468,9 @@ public WxOpenMaApplyLiveInfoResult applyLiveInfo() throws WxErrorException {
466468
String response = post(API_WX_APPLY_LIVE_INFO, GSON.toJson(params));
467469
return WxMaGsonBuilder.create().fromJson(response, WxOpenMaApplyLiveInfoResult.class);
468470
}
471+
472+
@Override
473+
public WxMaUploadAuthMaterialResult uploadAuthMaterial(File file) throws WxErrorException {
474+
return (WxMaUploadAuthMaterialResult) this.execute(UploadAuthMaterialRequestExecutor.create(getRequestHttp()), API_UPLOAD_AUTH_MATERIAL, file);
475+
}
469476
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.