diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveGoodsService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveGoodsService.java index d0e06d480..7b41e0f78 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveGoodsService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveGoodsService.java @@ -114,4 +114,32 @@ public interface WxMaLiveGoodsService { * @throws WxErrorException . */ WxMaLiveResult getApprovedGoods(Integer offset, Integer limit, Integer status) throws WxErrorException; + + /** + * 直播挂件设置全局key + *
+ * 若已设置此全局key,且添加商品时未指定goodsKey字段,则我们会使用此全局key作为该商品的goodsKey。 须注意的是,若全局key已设定,并添加了未指定goodsKey字段的商品之后,再重新设定不一样的全局key则会导致先前的映射失效。 为了避免映射失效,建议全局key只设定一次。 + * 注意:key必须为字符串数组 + * 调用额度:500次/一天 + * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/setkey?access_token= + *+ * + * @param goodsKey 全局key + * @return 设置是否成功 + * @throws WxErrorException . + */ + boolean setKey(List
+ * 查看当前设定的全局key。 + * 调用额度:500次/一天 + * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/goods/getkey?access_token= + *+ * + * @return 全局key + * @throws WxErrorException . + */ + List
* 调用额度:10000次/一天 *
- * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/goods/getVideo?access_token=ACCESS_TOKEN + * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/getVideo?access_token=ACCESS_TOKEN * * @param roomId 直播间id * @param goodsId 商品ID diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java index 99d82fdbf..cfd842867 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java @@ -9,6 +9,7 @@ import com.google.common.base.Joiner; import com.google.common.collect.ImmutableMap; import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; import lombok.RequiredArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.util.json.GsonHelper; @@ -20,6 +21,7 @@ import java.util.List; import java.util.Map; import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Broadcast.Goods.*; +import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Code.GET_PAGE_URL; /** *
@@ -94,4 +96,26 @@ public class WxMaLiveGoodsServiceImpl implements WxMaLiveGoodsService {
return WxMaLiveResult.fromJson(jsonObject.toString());
}
+ @Override
+ public boolean setKey(List goodsKey) throws WxErrorException {
+ Map map = new HashMap<>(1);
+ map.put("goodsKey", goodsKey);
+ this.wxMaService.post(SET_KEY, WxMaGsonBuilder.create().toJson(map));
+ return true;
+ }
+
+ @Override
+ public List getKey() throws WxErrorException {
+ String responseContent = this.wxMaService.get(GET_KEY, null);
+ JsonObject jsonObject = GsonParser.parse(responseContent);
+ boolean vendorGoodsKey = jsonObject.has("vendorGoodsKey");
+ if (vendorGoodsKey) {
+ return WxMaGsonBuilder.create().fromJson(jsonObject.getAsJsonArray("vendorGoodsKey"),
+ new TypeToken>() {
+ }.getType());
+ } else {
+ return null;
+ }
+ }
+
}
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java
index abda4faa6..56c744f6d 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java
@@ -272,7 +272,7 @@ public class WxMaLiveServiceImpl implements WxMaLiveService {
public String getSubanchor(Integer roomId) throws WxErrorException {
Map map = new HashMap<>(1);
map.put(ROOM_ID, roomId);
- String responseContent = this.wxMaService.get(Room.GET_SUBANCHOR, WxMaGsonBuilder.create().toJson(map));
+ String responseContent = this.wxMaService.get(Room.GET_SUBANCHOR, Joiner.on("&").withKeyValueSeparator("=").join(map));
JsonObject jsonObject = GsonParser.parse(responseContent);
if (jsonObject.get(ERR_CODE).getAsInt() != 0) {
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp));
@@ -390,7 +390,7 @@ public class WxMaLiveServiceImpl implements WxMaLiveService {
Map map = new HashMap<>(2);
map.put(ROOM_ID, roomId);
map.put("goodsId", goodsId);
- String responseContent = this.wxMaService.get(Room.GET_VIDEO, WxMaGsonBuilder.create().toJson(map));
+ String responseContent = this.wxMaService.post(Room.GET_VIDEO, WxMaGsonBuilder.create().toJson(map));
JsonObject jsonObject = GsonParser.parse(responseContent);
if (jsonObject.get(ERR_CODE).getAsInt() != 0) {
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp));
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java
index 8a149b4d7..4377b148b 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java
@@ -272,6 +272,14 @@ public class WxMaApiUrlConstants {
String UPDATE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/update";
String GET_GOODS_WARE_HOUSE = "https://api.weixin.qq.com/wxa/business/getgoodswarehouse";
String GET_APPROVED_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/getapproved";
+ /**
+ * 直播挂件设置全局 Key
+ */
+ String SET_KEY = "https://api.weixin.qq.com/wxaapi/broadcast/goods/setkey";
+ /**
+ * 直播挂件获取全局 Key
+ */
+ String GET_KEY = "https://api.weixin.qq.com/wxaapi/broadcast/goods/getkey";
}
/**