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 goodsKey) throws WxErrorException; + + /** + * 查看当前设定的全局key + *
+   * 查看当前设定的全局key。
+   * 调用额度:500次/一天
+   * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/goods/getkey?access_token=
+   * 
+ * + * @return 全局key + * @throws WxErrorException . + */ + List getKey() throws WxErrorException; } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java index 3b0ccc390..2d7751948 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java @@ -386,7 +386,7 @@ public interface WxMaLiveService { *

* 调用额度: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";
     }
 
     /**