收藏
回答

getwxacodeunlimit报47001?

创建小程序码接口报47001。rid: 61416283-6ce11ffc-51155f53,请帮忙看下,谢谢

回答关注问题邀请回答
收藏

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2021-09-15

    47001是json格式化错误,或者传的不是json。亮代码

    2021-09-15
    有用
    回复 7
    • Sawyer
      Sawyer
      2021-09-15
      直接用的FeignClient做的httpClient


      @FeignClient(name = "mini-program", url = "https://api.weixin.qq.com/")
      public interface MiniProgramFeign {
          
          @PostMapping("/wxa/getwxacodeunlimit")
          feign.Response getwxacodeunlimit(@RequestParam("access_token") String accessToken, @RequestBody GetUnlimitedReq getUnlimitedReq);


      }


      @Data
      public class GetUnlimitedReq {


          /**
           * 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,
           * 其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
           */
          @NotNull(message = "GetUnlimitedReq.scene不可为空")
          private String scene;


          /**
           * 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index,
           * 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
           */
          private String page;


          /**
           * 二维码的宽度,单位 px,最小 280px,最大 1280px
           */
          private Integer width;


          /**
           * 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
           */
          @JsonProperty("auto_color")
          private boolean autoColor;


          /**
           * auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
           */
          @JsonProperty("line_color")
          private Object lineColor;


          /**
           * 是否需要透明底色,为 true 时,生成透明底色的小程序
           */
          @JsonProperty("is_hyaline")
          private boolean isHyaline;


      }


      测试代码:
      GetUnlimitedReq unlimitedReq = new GetUnlimitedReq();
              unlimitedReq.setScene("code123");
      miniProgramService.getUnlimited("token", unlimitedReq)
      2021-09-15
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-09-15回复Sawyer
      你用RestTemplate 直接请求二维码接口
      2021-09-15
      回复
    • Sawyer
      Sawyer
      2021-09-15回复Mr.Zhao
      试了,结果是一样的。


      RestTemplate restTemplate;
              HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
              requestFactory.setConnectTimeout(5000);
              requestFactory.setReadTimeout(5000);
              restTemplate = new RestTemplate(requestFactory);
              restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
              GetUnlimitedReq unlimitedReq = new GetUnlimitedReq();
              unlimitedReq.setScene("code123");
              String token = miniProgramService.getAccessTokenProcess(3);
              System.out.println(restTemplate.postForEntity("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token, unlimitedReq, Object.class));


      关键是同样的代码之前是好的
      2021-09-15
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-09-15回复Sawyer
      代码就这些
      2021-09-15
      回复
    • Sawyer
      Sawyer
      2021-09-15回复Mr.Zhao
      找到原因了,private boolean isHyaline 前面is去掉就好了,这个提示应该是字段不匹配,不应该是json的问题。
      2021-09-15
      回复
    查看更多(2)
  • 微盟
    微盟
    2021-09-15

    官方给出的链接,可以参考下

    https://developers.weixin.qq.com/community/develop/doc/000a44ed5b81b09ce6282782751c00?_at=1615454025935

    2021-09-15
    有用
    回复
登录 后发表内容