Skip to content

Commit eaa5173

Browse files
authored
🆕 binarywang#2048 【开放平台】实现小商店的部分接口
1 parent fb0460e commit eaa5173

65 files changed

Lines changed: 3538 additions & 3 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package me.chanjar.weixin.common.bean.result;
2+
3+
import com.google.gson.JsonObject;
4+
import com.google.gson.JsonParser;
5+
import lombok.Data;
6+
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
7+
8+
import java.io.Serializable;
9+
10+
@Data
11+
public class WxMinishopImageUploadResult implements Serializable {
12+
private static final long serialVersionUID = 330834334738622332L;
13+
14+
private String errcode;
15+
private String errmsg;
16+
17+
18+
private WxMinishopPicFileResult picFile;
19+
20+
21+
public static WxMinishopImageUploadResult fromJson(String json) {
22+
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
23+
WxMinishopImageUploadResult result = new WxMinishopImageUploadResult();
24+
result.setErrcode(jsonObject.get("errcode").getAsNumber().toString());
25+
if (result.getErrcode().equals("0")) {
26+
WxMinishopPicFileResult picFileResult = new WxMinishopPicFileResult();
27+
JsonObject picObject = jsonObject.get("pic_file").getAsJsonObject();
28+
picFileResult.setMediaId(picObject.get("media_id").getAsString());
29+
picFileResult.setPayMediaId(picObject.get("pay_media_id").getAsString());
30+
result.setPicFile(picFileResult);
31+
32+
}
33+
return result;
34+
}
35+
36+
@Override
37+
public String toString() {
38+
return WxGsonBuilder.create().toJson(this);
39+
}
40+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package me.chanjar.weixin.common.bean.result;
2+
3+
import lombok.Data;
4+
5+
import java.io.Serializable;
6+
7+
@Data
8+
public class WxMinishopPicFileResult implements Serializable {
9+
private String mediaId;
10+
private String payMediaId;
11+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package me.chanjar.weixin.common.util.http;
2+
3+
import me.chanjar.weixin.common.bean.result.WxMinishopImageUploadResult;
4+
import me.chanjar.weixin.common.enums.WxType;
5+
import me.chanjar.weixin.common.error.WxErrorException;
6+
import me.chanjar.weixin.common.util.http.apache.ApacheMinishopMediaUploadRequestExecutor;
7+
import me.chanjar.weixin.common.util.http.jodd.JoddHttpMinishopMediaUploadRequestExecutor;
8+
import me.chanjar.weixin.common.util.http.okhttp.OkHttpMinishopMediaUploadRequestExecutor;
9+
10+
import java.io.File;
11+
import java.io.IOException;
12+
13+
public abstract class MinishopUploadRequestExecutor<H, P> implements RequestExecutor<WxMinishopImageUploadResult, File> {
14+
protected RequestHttp<H, P> requestHttp;
15+
16+
public MinishopUploadRequestExecutor(RequestHttp requestHttp) {
17+
this.requestHttp = requestHttp;
18+
}
19+
20+
@Override
21+
public void execute(String uri, File data, ResponseHandler<WxMinishopImageUploadResult> handler, WxType wxType) throws WxErrorException, IOException {
22+
handler.handle(this.execute(uri, data, wxType));
23+
}
24+
25+
public static RequestExecutor<WxMinishopImageUploadResult, File> create(RequestHttp requestHttp) {
26+
switch (requestHttp.getRequestType()) {
27+
case APACHE_HTTP:
28+
return new ApacheMinishopMediaUploadRequestExecutor(requestHttp);
29+
case JODD_HTTP:
30+
return new JoddHttpMinishopMediaUploadRequestExecutor(requestHttp);
31+
case OK_HTTP:
32+
return new OkHttpMinishopMediaUploadRequestExecutor(requestHttp);
33+
default:
34+
return null;
35+
}
36+
}
37+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package me.chanjar.weixin.common.util.http.apache;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import me.chanjar.weixin.common.bean.result.WxMinishopImageUploadResult;
5+
import me.chanjar.weixin.common.enums.WxType;
6+
import me.chanjar.weixin.common.error.WxError;
7+
import me.chanjar.weixin.common.error.WxErrorException;
8+
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
9+
import me.chanjar.weixin.common.util.http.MinishopUploadRequestExecutor;
10+
import me.chanjar.weixin.common.util.http.RequestHttp;
11+
import org.apache.http.HttpEntity;
12+
import org.apache.http.HttpHost;
13+
import org.apache.http.client.config.RequestConfig;
14+
import org.apache.http.client.methods.CloseableHttpResponse;
15+
import org.apache.http.client.methods.HttpPost;
16+
import org.apache.http.entity.mime.HttpMultipartMode;
17+
import org.apache.http.entity.mime.MultipartEntityBuilder;
18+
import org.apache.http.impl.client.CloseableHttpClient;
19+
20+
import java.io.File;
21+
import java.io.IOException;
22+
23+
/**
24+
* Created by ecoolper on 2017/5/5.
25+
*/
26+
@Slf4j
27+
public class ApacheMinishopMediaUploadRequestExecutor extends MinishopUploadRequestExecutor<CloseableHttpClient, HttpHost> {
28+
public ApacheMinishopMediaUploadRequestExecutor(RequestHttp requestHttp) {
29+
super(requestHttp);
30+
}
31+
32+
@Override
33+
public WxMinishopImageUploadResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException {
34+
HttpPost httpPost = new HttpPost(uri);
35+
if (requestHttp.getRequestHttpProxy() != null) {
36+
RequestConfig config = RequestConfig.custom().setProxy(requestHttp.getRequestHttpProxy()).build();
37+
httpPost.setConfig(config);
38+
}
39+
if (file != null) {
40+
HttpEntity entity = MultipartEntityBuilder
41+
.create()
42+
.addBinaryBody("media", file)
43+
.setMode(HttpMultipartMode.RFC6532)
44+
.build();
45+
httpPost.setEntity(entity);
46+
}
47+
try (CloseableHttpResponse response = requestHttp.getRequestHttpClient().execute(httpPost)) {
48+
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
49+
WxError error = WxError.fromJson(responseContent, wxType);
50+
if (error.getErrorCode() != 0) {
51+
throw new WxErrorException(error);
52+
}
53+
log.info("responseContent: " + responseContent);
54+
return WxMinishopImageUploadResult.fromJson(responseContent);
55+
} finally {
56+
httpPost.releaseConnection();
57+
}
58+
}
59+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package me.chanjar.weixin.common.util.http.jodd;
2+
3+
import jodd.http.HttpConnectionProvider;
4+
import jodd.http.HttpRequest;
5+
import jodd.http.HttpResponse;
6+
import jodd.http.ProxyInfo;
7+
import lombok.extern.slf4j.Slf4j;
8+
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
9+
import me.chanjar.weixin.common.bean.result.WxMinishopImageUploadResult;
10+
import me.chanjar.weixin.common.enums.WxType;
11+
import me.chanjar.weixin.common.error.WxError;
12+
import me.chanjar.weixin.common.error.WxErrorException;
13+
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
14+
import me.chanjar.weixin.common.util.http.MinishopUploadRequestExecutor;
15+
import me.chanjar.weixin.common.util.http.RequestHttp;
16+
17+
import java.io.File;
18+
import java.io.IOException;
19+
import java.nio.charset.StandardCharsets;
20+
21+
/**
22+
* .
23+
*
24+
* @author ecoolper
25+
* @date 2017/5/5
26+
*/
27+
@Slf4j
28+
public class JoddHttpMinishopMediaUploadRequestExecutor extends MinishopUploadRequestExecutor<HttpConnectionProvider, ProxyInfo> {
29+
public JoddHttpMinishopMediaUploadRequestExecutor(RequestHttp requestHttp) {
30+
super(requestHttp);
31+
}
32+
33+
@Override
34+
public WxMinishopImageUploadResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException {
35+
HttpRequest request = HttpRequest.post(uri);
36+
if (requestHttp.getRequestHttpProxy() != null) {
37+
requestHttp.getRequestHttpClient().useProxy(requestHttp.getRequestHttpProxy());
38+
}
39+
request.withConnectionProvider(requestHttp.getRequestHttpClient());
40+
request.form("media", file);
41+
HttpResponse response = request.send();
42+
response.charset(StandardCharsets.UTF_8.name());
43+
44+
String responseContent = response.bodyText();
45+
WxError error = WxError.fromJson(responseContent, wxType);
46+
if (error.getErrorCode() != 0) {
47+
throw new WxErrorException(error);
48+
}
49+
log.info("responseContent: " + responseContent);
50+
51+
return WxMinishopImageUploadResult.fromJson(responseContent);
52+
}
53+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package me.chanjar.weixin.common.util.http.okhttp;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
5+
import me.chanjar.weixin.common.bean.result.WxMinishopImageUploadResult;
6+
import me.chanjar.weixin.common.enums.WxType;
7+
import me.chanjar.weixin.common.error.WxError;
8+
import me.chanjar.weixin.common.error.WxErrorException;
9+
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
10+
import me.chanjar.weixin.common.util.http.MinishopUploadRequestExecutor;
11+
import me.chanjar.weixin.common.util.http.RequestHttp;
12+
import okhttp3.*;
13+
14+
import java.io.File;
15+
import java.io.IOException;
16+
17+
/**
18+
* .
19+
*
20+
* @author ecoolper
21+
* @date 2017/5/5
22+
*/
23+
@Slf4j
24+
public class OkHttpMinishopMediaUploadRequestExecutor extends MinishopUploadRequestExecutor<OkHttpClient, OkHttpProxyInfo> {
25+
public OkHttpMinishopMediaUploadRequestExecutor(RequestHttp requestHttp) {
26+
super(requestHttp);
27+
}
28+
29+
@Override
30+
public WxMinishopImageUploadResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException {
31+
32+
RequestBody body = new MultipartBody.Builder()
33+
.setType(MediaType.parse("multipart/form-data"))
34+
.addFormDataPart("media",
35+
file.getName(),
36+
RequestBody.create(MediaType.parse("application/octet-stream"), file))
37+
.build();
38+
Request request = new Request.Builder().url(uri).post(body).build();
39+
40+
Response response = requestHttp.getRequestHttpClient().newCall(request).execute();
41+
String responseContent = response.body().string();
42+
WxError error = WxError.fromJson(responseContent, wxType);
43+
if (error.getErrorCode() != 0) {
44+
throw new WxErrorException(error);
45+
}
46+
log.info("responseContent: " + responseContent);
47+
48+
return WxMinishopImageUploadResult.fromJson(responseContent);
49+
}
50+
51+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ private <T, E> T executeInternal(RequestExecutor<T, E> executor, String uri, E d
300300
* @throws WxErrorException 异常
301301
*/
302302
protected String extractAccessToken(String resultContent) throws WxErrorException {
303+
log.info("resultContent: " + resultContent);
303304
WxMaConfig config = this.getWxMaConfig();
304305
WxError error = WxError.fromJson(resultContent, WxType.MiniApp);
305306
if (error.getErrorCode() != 0) {

0 commit comments

Comments
 (0)