Wechat-Group / WxJava

微信开发 Java SDK ,支持包括微信支付,开放平台,小程序,企业微信,视频号,公众号等的后端开发
Apache License 2.0
29.7k stars 8.53k forks source link

微信公众号模版消息发送接口的data字段类型与官方文档不符 #3357

Closed monchcc closed 1 week ago

monchcc commented 2 weeks ago

简要描述

微信公众号发送模版消息的API里data字段是Map类型,但代码里类型是ArrayList,希望与微信文档保持一致。

image image

官方文档地址

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#%E5%8F%91%E9%80%81%E6%A8%A1%E6%9D%BF%E6%B6%88%E6%81%AF

binarywang commented 1 week ago

你确定是有问题的吗? java代码只是为了更符合开发者习惯做了封装。 真正生成的json请求数据不一定是你以为的跟类定义里的东西一样的格式。 你可以再仔细阅读下源码,了解下相关原理。

monchcc commented 1 week ago

我最开始打算想这么写的,发现WxMpTemplateMessage.class的data对象是ArrayList,就会报错。

WxMpTemplateMessage message = JSON.parseObject(jsonTextContent, WxMpTemplateMessage.class);

而现在我只能通过builder的方式写了,能否直接使用Json文本直接转WxMpTemplateMessage对象的方式呢,。

WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
        .toUser(toUser)
        .templateId(messageData.getTemplate_id())
        .url(messageData.getPage())
        .build();
binarywang commented 1 week ago

你看下wiki里的相关示例吧,或者单元测试里的测试代码。 如果你觉得你的方式更好,欢迎直接提交PR代码。

monchcc commented 1 week ago

好的👌

binarywang commented 1 week ago

如果你想直接提交你自己生成好的json文本,那直接发http请求就可以了吧,那你就可以不用这个sdk,对你意义可能不大。 或者你用wiki里提到的post方法,这个方法是支持直接传json字符串的。