Compare commits

..

900 Commits
v3.9.0 ... main

Author SHA1 Message Date
b4c3fef78c 暂时对不对 GPG 签名 2025-04-03 14:14:27 -04:00
019379f729 OSS-258 remove the commit with key and code 2023-06-14 16:29:53 -04:00
1a52833467 OSS-258 创建一个 Builder 对象,用来在测试中进行 Builder https://www.ossez.com/t/api/14400/2 2023-06-14 16:11:10 -04:00
77bea77f4e OSS-258 创建一个 Builder 对象,用来在测试中进行 Builder https://www.ossez.com/t/api/14400/2 2023-04-25 14:13:50 -04:00
4f5f90298d OSS-258 添加菜单处理服务 2023-04-25 13:23:36 -04:00
003cdd18f4 OSS-258 测试菜单 API 2023-04-25 13:23:03 -04:00
f863a25498 OSS-257 定义微信图文信息状态的数据返回接口
官方网站文档链接地址为:https://developers.weixin.qq.com/doc/offiaccount/Analytics/Graphic_Analysis_Data_Interface.html
2023-04-24 16:35:20 -04:00
66ccf11560 OSS-256 创建获取累计用户数据的方法。
需要注意的是,这里有一个时间跨度的问题,最多只能获取 7 天的数据。
2023-04-24 16:12:38 -04:00
5603ae28db OSS-256 创建 2 个新的对象和一个服务,这个服务用来处理数据相关的 API
用户分析返回的类型和结果为:https://www.ossez.com/t/topic/14398
2023-04-24 12:17:59 -04:00
d0dd1b82d7 OSS-255 格式化代码,删除不需要的引用 2023-04-24 09:22:49 -04:00
9446b1a636 OSS-255 更新 DI 的使用 2023-04-23 15:22:26 -04:00
e92e97ca11 OSS-255 格式化代码并且使用 Junit 5 的测试类 https://bug.ossez.com/browse/OSS-255 2023-04-23 15:13:04 -04:00
bce4e5a324 OSS-255 格式化代码并且使用 Junit 5 的测试类 https://bug.ossez.com/browse/OSS-255 2023-04-23 15:12:57 -04:00
03c5092164 OSS-255 更新测试使用 JUnit 5 2023-04-23 15:11:48 -04:00
9124457533 OSS-254 测试微信的消息发送 2023-04-19 22:06:03 -04:00
d217b67cf6 constant Change the name to MsgType 2023-04-19 09:27:45 -04:00
3e617b3a4c constant to update the WeChatConstant 2023-04-19 09:22:52 -04:00
bb3b148de4 Update Object to remove data from lombook 2023-04-19 08:52:39 -04:00
927361987f 更新客服信息 2023-04-19 08:48:29 -04:00
68bc4e84b4 格式化 Pom 文件 2023-04-19 08:43:29 -04:00
44208b4fab USVT-138 Change token for GPT 2023-03-22 13:17:01 -04:00
57079fecfd USVT-138 返回对象使用微信状态对象 2023-03-07 13:33:38 -05:00
f16561c82a USVT-138 针对微信返回的状态,我们提供一个状态对象 2023-03-07 13:20:19 -05:00
fba63df660 USVT-136 使用微信异步消息的策略来发布消息 2023-02-13 00:38:08 -05:00
5c1aef79c8 USVT-136 添加一个消息处理类,在这个消息处理类中为微信进行异步消息处理 2023-02-12 09:36:21 -05:00
aa235ae02f WeChat Official Account Platform related Service to process Platform related service 2023-02-09 12:44:47 -05:00
53bed19f45 USVT-135 设置超时时间为 15 秒,并且对代码进行格式化 2023-02-09 12:32:18 -05:00
75003069f9 接口的代码格式化 2023-02-09 11:22:27 -05:00
670766282a 配置使用不同的 Open ID 代码 2023-02-08 11:34:16 -05:00
706a42f7b2 配置 WeChat 的包的内容,尝试从 WeChat 包中调用需要的数据 2023-02-06 09:17:12 -05:00
3bdd0a99fa 针对公众号的登录程序,我们调整 Open 中的内容 2023-02-06 09:14:27 -05:00
34d1d5db58 create a wechat response object 2023-02-02 08:57:32 -05:00
c881e857ae Update logic by use retrofit2 package send request 2023-02-01 07:07:28 -05:00
f676c1239d 调用腾讯网络检测 API 2023-01-31 06:07:20 -05:00
4fa242751e 使用平台服务文件提供平台需要的相关服务 2023-01-31 06:02:07 -05:00
45010d1575 添加微信使用的第二个 API,获取微信服务器地址 2023-01-30 06:01:42 -05:00
21a71adba8 清理使用 httpClient 的实现,我们只会使用 okHttp 来实现所有的 HTTP 请求 2023-01-29 17:29:34 -05:00
1822d39c12 微信主机配置对象移动到 Common 模块中 2023-01-29 16:52:32 -05:00
e69e7edd02 移动微信常量到 Common 包中 2023-01-29 16:52:00 -05:00
faeb62abd8 修改拦截器中数据读取的方式,解决被拦截器拦截后的读取错误:https://www.ossez.com/t/okhttp-interceptor-close/14307 2023-01-29 08:41:02 -05:00
84acfa03f7 更新微信卡券的枚举类型 2023-01-27 05:43:34 -05:00
5dd10f3adc 微信公众号事件的常量类型移动到 Common 中 2023-01-26 14:16:32 -05:00
51185a972c 微信 API 可以支持的语言类型 2023-01-26 14:13:49 -05:00
9ba61c9f9b 修改代码,清理 lombok 在类中错误 2023-01-26 14:07:10 -05:00
29cccd94b2 不清楚为什么可以用 Apache 的随机字符串生成类还要自己写一个,直接使用 Apache 的字符串生成类 2023-01-26 14:01:54 -05:00
b8d15f0124 重命名腾讯企点的项目结构 2023-01-26 13:51:36 -05:00
d629d61250 针对腾讯企业账号的自述文件 2023-01-26 13:47:17 -05:00
704a41b1e2 把腾讯企点的 API 信息全部合并过来。 2023-01-26 13:46:58 -05:00
0a21e62667 处理加密解密包的问题,尽量避免直接调用 JDK 中保护的类。 2023-01-26 12:56:10 -05:00
e4f18688e1 添加 wecom 项目到整个库中 2023-01-26 12:42:49 -05:00
fd98fad567 微信支付的所有模块进行 Package 的重命名,删除不需要的模块 2023-01-26 07:35:47 -05:00
6a20373254 添加自述文件 2023-01-25 22:58:27 -05:00
c6a20f1a72 把微信支付的博客合并进项目 2023-01-25 22:58:10 -05:00
3655e95a67 删除并不需要的 jedisPool 实现 2023-01-25 20:31:14 -05:00
09684077ea 修改微信的配置文件路径,我们只提供 2 种存储方式内存和 Redis 2023-01-24 12:46:01 -05:00
843193024c 更新项目常量,同时修改使用 RxJava 2023-01-23 19:52:29 -05:00
5d906b1fba 修改方法为同步方法,以保障线程安全 2023-01-23 18:44:42 -05:00
2081e708a8 添加 .addInterceptor(new WeChatErrorInterceptor()) 进行全局错误处理 2023-01-23 18:43:45 -05:00
6a8bde04be WeChatErrorInterceptor 用于处理微信 API 返回的时候给出的代码是 200 ,但是实际上的错误原因和代码是在返回 Body 里面。
为了方便我们进行调用,我们在这里把调用返回使用 400 来表示错误代码,以便于在调用 Client 中进行捕获。
2023-01-23 18:42:27 -05:00
c59e8740d6 微信错误代码的枚举类型,集中到一个文件中 2023-01-23 18:32:27 -05:00
2836428f68 把微信使用的常量统一集中进行配置 2023-01-23 18:31:41 -05:00
54d4e054e6 HttpClientMediaType 定义我们在 Http 请求时候需要使用的访问媒体类型 2023-01-23 18:28:01 -05:00
b5c654d3fc 更新使用 Retrofit 的 RxJava 方式来调用获得访问腾讯 API 需要的 access token 2023-01-23 08:06:04 -05:00
ddf6d80599 更新自述文件,老的代码中使用了 Lock 来进行线程同步,我们希望删除这个功能。 2023-01-23 07:57:05 -05:00
5c23311d69 把 Jackson 的依赖移动到父项目中 2023-01-22 09:12:24 -05:00
f0c1ea178b 把微信使用的 Access Token 对象放到 model 目录下
尽量删除使用的 lombok,不在包中使用 lombok

更新测试
2023-01-22 08:26:24 -05:00
89cf809f5f 更新自述文件中有关 Demo 的链接。
https://www.ossez.com/t/wechat-j-demo/14303

同时删除 demo.md 文件。
2023-01-21 18:27:18 -05:00
7e20e4a59a 更新许可证信息 2023-01-21 18:16:19 -05:00
081e0b7e6e 更新自述文件,[Retrofit 是什么](https://www.ossez.com/t/retrofit/14302) 2023-01-21 18:15:58 -05:00
e1cf8088be 更新使用 okHTTP 2023-01-21 18:07:11 -05:00
73c2a89f70 修改 Okhttp 的调用方式 2023-01-20 14:31:11 -05:00
79b5a11a9e WeChat-J 更新项目删除不需要的 HTTP 客户端 2023-01-19 12:29:30 -05:00
ad67ed3441 针对微信开放平台,修改包的名字 2023-01-11 15:39:35 -05:00
6ba6e1829f 针对微信开放平台,修改包的名字 2023-01-11 15:36:16 -05:00
677e796990 针对微信公众号,修改配置的包的名字 2023-01-11 15:32:34 -05:00
05b85efc0f 更新包的名字 2023-01-11 15:17:54 -05:00
c8cc611085 删除无效的图片文件 2023-01-11 09:53:21 -05:00
8edbe341ed 因为我们使用 Jenkins 来做持续集成的,因此我们不需要其他的集成文件 2023-01-11 09:48:18 -05:00
4812dc26dc 删除代码规范 2023-01-11 09:45:33 -05:00
38faf619a9 针对公众号添加为子模块 2023-01-11 09:43:36 -05:00
a8fe23030f 删除无效的许可证信息,并把公众号的内容独立出来. 2023-01-11 09:43:16 -05:00
Binary Wang
112f7c100e 🔖 发布 4.4.8.B 测试版本 2022-12-07 23:50:17 +08:00
大林哥
abae2cfce9 🎨 【企业微信】微信客服消息增加视频号商品和订单消息类型 2023-01-10 13:27:56 +00:00
Binary Wang
6ccbf900db 🎨 优化部分代码 2023-01-10 14:37:59 +08:00
wangmeng3486
64e29af498
🐛 #2908 【企业微信】修复用户接口直属领导参数没有被正常序列化的问题 2023-01-09 13:47:29 +08:00
Binary Wang
521ea08ba9 🎨 优化部分代码,移除校验 2023-01-09 09:32:37 +08:00
源三岁
1557894954 🎨 【公众号】补充对订阅通知类型的消息的支持 2022-12-30 18:17:32 +08:00
Binary Wang
e425817e69 🎨 尝试去掉无用的validation-api依赖 2022-12-30 18:17:17 +08:00
NotePlus
0d1320a48f 🆕【微信支付】增加查询结算账户、查询分账结果、查询分账回退结果和申请分账账单等V3接口 2022-12-25 14:38:26 +00:00
rodgerYoung
87c33ac776 🎨 spring boot 3.0 starter注入方式添加 2022-12-22 20:13:36 +08:00
Binary Wang
90556820ba 🔖 发布 4.4.7.B 测试版本 2022-12-07 21:49:58 +08:00
Binary Wang
b7ceeed557 🎨 优化重构OA审批模板相关接口及类定义 2022-12-17 15:18:24 +08:00
yiyingcanfeng
baa8a6da37
🆕 #2905【企业微信】增加OA模块创建审批模板、更新审批模板的接口 2022-12-17 15:10:00 +08:00
Binary Wang
901fceba27 🎨 小程序代码提交审核代码重构优化,删除重复定义类 2022-12-17 15:05:35 +08:00
LinZhaoguan
e0a39c8d68
🎨 #2903 【微信支付】优化服务商模式的微信支付分相关代码
1.优化请求参数赋值逻辑
2.新增服务商模式的”授权/解除授权服务回调通知结果“实体类
2022-12-17 14:39:20 +08:00
taoxhsmile
749f326f94
🎨 WxCpAgent 增加 字段customizedPublishStatus 2022-12-17 14:38:26 +08:00
Well
90d8098d93
🎨 #2897 【微信支付】普通商户商家转账到零钱接口增加转账场景ID的参数 2022-12-17 14:29:25 +08:00
NotePlus
b35645ee67 🆕【微信支付】新增查询特约商户设置的允许服务商分账的最大比例的V3接口 2022-12-11 07:48:34 +00:00
源三岁
a3a8295262 🎨 补充部分订阅通知事件常量 2022-12-11 07:46:56 +00:00
th3ee9ine
8088c4ada8
🐛 #2894 【企业微信】修复update_taskcard 方法传参错误的问题 2022-12-11 15:29:03 +08:00
oneice
c443dc1fd1
🎨 #2893 【公众号】自定义菜单查询接口返回结果类增加缺失的 mediaId 和 articleId 字段 2022-12-08 20:15:29 +08:00
Binary Wang
c0a7376e22 👷 Add .circleci/config.yml 2022-12-08 09:36:12 +08:00
Binary Wang
5776914faa 🔖 发布 4.4.6.B 测试版本 2022-12-07 20:38:26 +08:00
Binary Wang
d2571d094b 🎨 优化部分代码 2022-12-07 19:15:50 +08:00
liming1019
d3552245a5 🎨 #2888 【小程序】自定义交易组件商品上传API增加部分参数 2022-12-07 15:31:22 +08:00
竹子
57859d8d80 🎨 #2886 【微信支付】投诉单查询详情接口返回实体类增加投诉单关联服务单信息的相关属性 2022-12-07 15:31:22 +08:00
枫飘满林
6205568948 🎨 修改委托代扣协议xml标识 2022-12-06 14:40:48 +00:00
Binary Wang
327e6ffa05 🐛 修复错误的字段类型 2022-12-06 19:38:33 +08:00
Binary Wang
d68956df72 🎨 增加缺失的注解 2022-12-06 19:38:17 +08:00
Binary Wang
c7ade5b2d5 🎨 优化部分javadoc 2022-12-02 18:31:46 +08:00
NotePlus
07c4615d7e 🐛 【微信支付】修复特约商户进件-提交申请单接口证件持有人类型类型定义错误和证件居住地址参数名错误的问题 2022-12-02 10:29:27 +00:00
binarywang
99a55e6bc9
🎨 v3api加入support_fapiao字段 2022-12-02 10:08:18 +00:00
miemie
3ced24eb9e v3api加入support_fapiao字段 2022-11-28 22:07:51 +08:00
dazer007
431e83bf4f 🎨 将JedisWxRedisOps标记为过时 2022-11-21 08:59:16 +08:00
ricky_gu
3f6e5d8d51 🐛 #2880 【企业微信】修复审批应用设置推送消息会被误判为重复消息的问题 2022-11-19 20:04:16 +08:00
大林哥
c702f787f7 🎨【企业微信】微信客服事件消息增加撤回消息msgId字段 2022-11-16 13:54:06 +00:00
Binary Wang
0721b01cdb 🔖 发布 4.4.5.B 测试版本 2022-11-13 14:16:31 +08:00
Binary Wang
e636362585 🎨 #2878 【企业微信】OA提交审批申请接口增加提单者提单部门id(choose_department)的请求参数 2022-11-13 13:50:11 +08:00
Binary Wang
ace4f9a278 🎨 重构优化代码 2022-11-11 20:49:27 +08:00
playersun
60fdf91ce7 🎨 修复模板消息行业枚举”其它“文字错误问题(官方文档和接口实际返回不一致) 2022-11-11 20:17:49 +08:00
Binary Wang
d94b42b6ee 🎨 #2798 【开放平台】小程序模版开发上传代码并生成体验版接口增加requiredPrivateInfos参数的支持 2022-11-11 19:35:17 +08:00
Binary Wang
1e13645f72 🎨 【企业微信】重构规范化客户联系聊天敏感词管理的相关接口和文档 2022-11-08 16:31:21 +08:00
Grit
43a460a28b
🎨 #2874 【企业微信】微信客服发送菜单消息菜单项支持纯文本内容 2022-11-08 16:29:49 +08:00
th3ee9ine
c109e81842
🎨 #2873 【企业微信】模板卡片消息支持左图右文样式和按钮型卡片的下拉框样式(企业微信v3.1.18版本引入的新特性) 2022-11-06 11:32:01 +08:00
黄天政
c26b055ccf 🐛 【企业微信】修复corpId2OpenCorpId接口provider_access_token参数错误的问题 2022-11-03 08:59:24 +00:00
Binary Wang
4888d1576b 🔖 发布 4.4.4.B 测试版本 2022-11-01 17:31:52 +08:00
cocoa
48a86940e2 🆕 #2865 【企业微信】第三方应用增加ID转换接口 2022-11-01 17:29:13 +08:00
黄天政
199c109a3d 🎨 获取永久授权码接口返回值增加state属性 2022-11-01 09:19:08 +00:00
Binary Wang
9522585074 🎨 优化部分代码,清理无用代码 2022-10-31 15:25:40 +08:00
Binary Wang
ae08833323 🎨 规范化代码 2022-10-31 11:42:38 +08:00
Binary Wang
bf9c0571f8 🎨 格式化规范化部分测试代码 2022-10-30 14:31:34 +08:00
Alixhan
30264bfaae
🎨 #2858 【企业微信】优化会话存档获取媒体数据的接口 2022-10-30 14:23:08 +08:00
Nobody
edb098500d
🆕 #2856 【企业微信】增加获取应用二维码的接口;【开放平台】增加使用 AppSecret 重置第三方平台 API 调用次数的接口 2022-10-30 14:19:26 +08:00
q7486828035
46921e0e55
🎨 #2861 XStreamInitializer增加自定义加载类的支持方法 2022-10-30 14:15:14 +08:00
nadirvishun
df759717cd
🎨 #2854【企业微信】获取访问用户敏感信息接口中增加地址和企业邮箱字段 2022-10-25 17:45:13 +08:00
imgbot[bot]
31d446a6bd
[ImgBot] Optimize images
*Total -- 542.77kb -> 415.52kb (23.44%)

/images/banners/diboot.png -- 366.13kb -> 241.38kb (34.07%)
/images/banners/ccflow.png -- 101.89kb -> 99.52kb (2.33%)
/weixin-java-mp/src/test/resources/1.jpeg -- 74.74kb -> 74.62kb (0.17%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-10-25 17:36:55 +08:00
Alixhan
48a22a0e60
🎨 #2853 【企业微信】配置类中增加会话存档secret的配置项 2022-10-25 17:01:50 +08:00
唐英鹏
512975fb86
🎨 #2851【公众号】群发消息支持多图片群发 2022-10-25 16:45:20 +08:00
zhongjun
62490c77b6
🎨 移动公众号关联小程序接口到 WxOpenMpService 2022-10-25 10:55:02 +08:00
Binary Wang
2eb6180567 🔖 发布 4.4.3.B 测试版本 2022-10-23 23:53:54 +08:00
Binary Wang
4118e8bba6 🎨 优化部分javadoc 2022-10-23 14:46:14 +08:00
杨镇涛
10414d9971
🎨 优化代码,未正确配置 apiV3Key 时,173 行证书更新失败,未做 throw 等阻断动作,导致 verifier 未赋值,后续其它方法使用将出现空指针异常 2022-10-23 14:38:13 +08:00
Binary Wang
c1e7d095ed 🎨 增加一些单元测试代码 2022-10-22 11:52:44 +08:00
Binary Wang
6b21f1a234 🎨 修复错误的字段定义 2022-10-22 11:23:21 +08:00
Binary Wang
69cf2bcb90 🎨 增加代码兼容微信接口实际返回跟官方文档不符的文字 2022-10-22 11:17:16 +08:00
cocoa
a8a5359c9f
🐛 #2799 [ 企业微信】修复第三方服务调用getUserId接口时缺少access_token的问题 2022-10-21 17:49:10 +08:00
freedom9
9b78acd0e5
🆕 #2846 【企业微信】增加待开发应用获取带参授权链接的接口 2022-10-21 17:46:21 +08:00
Binary Wang
b08530917c 优化部分代码格式 2022-10-21 13:56:03 +08:00
oldmanl
791ec8d2db
🆕 #2837 【企业微信】增加撤回应用消息的接口 2022-10-21 13:54:41 +08:00
freedom9
b6ad48dff7
🐛【企业微信】修复external_userid转换接口的地址 2022-10-14 16:11:54 +08:00
清心
809ff15709 🆕 【微信开放平台】增加申请开通直播的接口 2022-10-13 07:28:02 +00:00
yiyingcanfeng
bb65189fb8
🆕 #2834 【企业微信】新增将代开发应用或第三方应用获取的密文open_userid转换为明文userid的接口 2022-10-13 15:09:52 +08:00
yiyingcanfeng
8a161cfa2c
🆕 #2832【企业微信】新增将代开发应用或第三方应用获取的externaluserid转换成自建应用的externaluserid的接口 2022-10-07 15:49:51 +08:00
橘猫都是P
4ca4dec37e
🎨 #2830 【小程序】交易组件商品spu list接口返回类增加缺失的productId字段 2022-10-03 20:52:30 +08:00
清心
d759317396 🆕 #2831 【开放平台】新增小程序DNS预解析域名相关接口 2022-10-03 12:49:21 +00:00
Binary Wang
3bd517a007 🔖 发布 4.4.2.B 测试版本 2022-09-26 23:56:46 +08:00
Binary Wang
7219c2dbd0 🎨 清理一些jetbrain的校验注解 2022-09-26 23:29:11 +08:00
Nobody
26e2cbcb60
🎨 #2827 【企业微信】新增几个企业微信第三方回调的事件常量 2022-09-26 23:10:02 +08:00
xslong
320bbfe7be
🆕 #2825 【企业微信】增加分配在职成员的客户群的接口 2022-09-26 23:06:42 +08:00
Sun Chen
65134bd1ca 🎨 恢复误修改的代码 2022-09-24 17:19:48 +08:00
Javen
81cb16bf9f 🎨 【微信支付】沙箱环境api地址修改sandboxnew为 xdc/apiv2sandbox 2022-09-24 17:18:57 +08:00
Sun Chen
aa19a2874d 🎨 增加微信推送的自定义交易组件付款通知事件类型OPEN_PRODUCT_ORDER_PAY 2022-09-24 17:18:57 +08:00
Binary Wang
3477e41ad2 🎨 修改类可见范围,并优化部分文档 2022-09-24 17:18:57 +08:00
Nobody
7f7c0a3765
🆕 #2815【开放平台】查询公众号/小程序是否绑定open实现 && 增加授权用户资料变更事件常量 2022-09-19 20:00:16 +08:00
Binary Wang
b8d0baae5b 🔖 发布 4.4.1.B 测试版本 2022-09-14 00:04:21 +08:00
Cocowwy
286596f8a2
🎨 #2811 【公众号】用户管理增加可一次性拉取所有用户数据的接口 2022-09-13 21:41:49 +08:00
liming1019
310e1d91be
🎨 修复小程序支付管理获取订单详情接口请求参数格式错误 2022-09-11 20:33:20 +08:00
Binary Wang
3918005b1f
🎨 修改消息去重时线程池关闭问题 2022-09-02 19:40:02 +08:00
Binary Wang
a435ee5a01
🆕 #2807 【小程序】增加支付管理获取订单详情和申请退款的接口 2022-09-02 19:20:22 +08:00
Binary Wang
7a200c0574
🐛 #2806【企业微信】 修复获取审批数据接口的地址 2022-09-02 19:18:27 +08:00
0katekate0
80cc0e4939 【企业微信】 修复获取审批数据URL 2022-08-31 19:38:18 +08:00
liming
81bb1f3563 申请退款接口 2022-08-31 15:54:44 +08:00
liming
57ff6a80ec 获取订单详情接口 2022-08-31 15:40:30 +08:00
vishun
d19fec73d4 消息去重所用线程池设置为daemon线程,否则jvm关闭后线程池仍不关闭。 2022-08-30 14:21:23 +08:00
Binary Wang
db5826cfcf
🆕 #2801 【小程序】增加新版自定义交易组件之更新售后申请的接口 2022-08-29 18:18:02 +08:00
Binary Wang
dc8b5454e2
🆕 #2797【小程序】增加新版自定义交易组件获取售后单详情的接口 2022-08-28 23:32:26 +08:00
liming
30a0eb8e98 【小程序】增加新版自定义交易组件之更新售后申请API 2022-08-26 11:53:44 +08:00
liming
6e5800181b 【小程序】增加新版自定义交易组件获取售后单详情API 2022-08-25 22:48:17 +08:00
Binary Wang
4d526dbd7a 🎨 批量添加部分javadoc 2022-08-25 16:47:47 +08:00
Binary Wang
152e6a01fa
🐛 #2792【企业微信】修复家校应用接口single_choice属性错误问题 2022-08-25 16:35:56 +08:00
0katekate0
d39062353c [企业微信]fix家校应用single_choice属性字段 #2792 2022-08-25 01:12:32 +08:00
Binary Wang
8c461bbaf2
🎨 accessToken 接口添加 is_snapshotuser 字段 2022-08-24 15:45:15 +08:00
Binary Wang
3e09168019
🐛 unoinId使用Integer类型 2022-08-24 15:44:44 +08:00
imyzt
3abaa2c1d1 🐛 #2788 unoinId 使用 Integer 溢出导致GSON抛出NumberFormatException 2022-08-23 22:04:50 +08:00
陈俊霖
1dfde62772 accessToken 接口添加 is_snapshotuser 字段 2022-08-23 16:17:08 +08:00
Binary Wang
36602d58a5 🎨 fix javadoc by removing @date 2022-08-23 00:37:29 +08:00
Binary Wang
f94e67056d
🎨 ProfitSharingResult类增加分账接收方列表字段解析方法 2022-08-22 22:36:38 +08:00
赖骏劼
066c77c752 @laijj@在ProfitSharingResult扩充reecvice列表对象,方便使用者处理不同分账接收方的数据逻辑 2022-08-22 17:23:55 +08:00
Binary Wang
c3f4943acd
📝 更新版本信息 2022-08-22 09:52:40 +08:00
Binary Wang
e9c351a083 📝 更新版本信息 2022-08-21 23:38:08 +08:00
Binary Wang
bf68104ee0 🔖 发布 4.4.0 正式版本 2022-08-21 23:14:38 +08:00
Binary Wang
9a32876bf3 🎨 投诉单详情接口返回实体类增加几个字段 2022-08-21 15:21:38 +08:00
linlinjava
0f9e75acb2 🎨 #2785【小程序】获取直播间分享二维码接口优化,支持分享路径和海报 2022-08-21 15:21:38 +08:00
liming1019
c78a1f5132 🆕 #2784【开放平台】增加批量代云开发之环境管理相关接口 2022-08-21 15:21:38 +08:00
黄虎
452dd58af9 🎨 修复H5纯签约签名BUG 2022-08-18 15:37:17 +00:00
gap1994
a126c8e6d3
🎨 添加is_snapshotuser字段 2022-08-16 19:49:21 +08:00
懒猫
94ff00bc4b
🆕 #2722【企业微信】 增加会议室管理相关接口 2022-08-16 19:48:18 +08:00
0katekate0
6472484b32
🆕 #2501【微信支付】增加V3版本回调通知应答 2022-08-16 19:46:27 +08:00
0katekate0
c84b46a55b
🎨 #2777【企业微信】 增加直播回调事件常量支持 2022-08-12 17:10:00 +08:00
0katekate0
fe49e5af11
🎨 #2773【企业微信】优化会话存档,增加会话存档的多企业支持 2022-08-12 11:42:43 +08:00
cocoa
53d332190c
🎨 提交代码审核接口增加新的入参 2022-08-12 11:40:29 +08:00
Xianhui Guo
cc8901598d
🎨 #2762 【企业微信】审批详情增加缺少的控件类型 2022-08-10 22:45:48 +08:00
liming1019
cfa92390f2
🆕 #2772 【小程序】增加小程序支付管理之创建订单接口 2022-08-10 22:44:43 +08:00
nadirvishun
ab26565377
🎨 修改小程序路由route方法为public,方便自定义context 2022-08-10 15:53:14 +08:00
0katekate0
52471fce89
🎨 完善微信支付部分文档 2022-08-10 15:52:23 +08:00
Binary Wang
05f0fa2ac3 🔖 发布 4.3.9.B 测试版本 2022-08-04 22:58:43 +08:00
Binary Wang
2058580866 🎨 修复代码 2022-08-04 22:13:16 +08:00
Yang Bingdong
3f57b346e0
🎨 WxMpXmlMessage 增加群发消息id 字段 2022-08-04 17:35:45 +08:00
Xianhui Guo
4e06dd6039
🐛 #2714 【小程序】修复即时配送相关接口报平台签名验证错误的问题 2022-08-02 13:37:51 +08:00
chenblue23
873a0218e7 🐛 微信支付平台证书自动更新判断修复 2022-07-28 03:23:06 +00:00
Xianhui Guo
44ce1e9fbc
🎨 #2729 【企业微信】发送应用消息时完善对按钮交互型卡片消息的支持 2022-07-27 20:04:56 +08:00
cocoa
18a79b5b6c
🎨 优化小程序版本信息接口返回 2022-07-27 19:58:53 +08:00
gxh0797
d056cc8abe
🆕 #2752 【小程序】增加查询小程序版本信息的接口以及第三方userid_to_openuserid的接口 2022-07-26 21:47:39 +08:00
Boris
1747190674
🆕 #2758 【小程序】增加微信小商店标准版相关接口 2022-07-26 21:45:32 +08:00
liming1019
b550806956
🆕 #2755 【小程序】增加小程序云开发短信接口 2022-07-26 21:40:49 +08:00
sanjun
5a2607787f
🐛 修复x509代码 2022-07-26 11:46:12 +08:00
Binary Wang
0cfcc8d4a0 🎨 避免对曾变化的guava方法的依赖,以免对使用不同版本guava的用户造成困惑 2022-07-26 11:35:09 +08:00
Binary Wang
7cd213da65 🔖 发布 4.3.8.B 测试版本 2022-07-24 22:11:47 +08:00
Binary Wang
cfa842fa44 🎨 优化或者修复部分代码 2022-07-21 21:43:50 +08:00
Binary Wang
b6130d938a 🎨 去掉重复的字段 2022-07-21 15:34:34 +08:00
缪贵荣
c9803879f5
🎨 #2744 【企业微信】获取企业永久授权码接口补充推广码信息 2022-07-21 15:33:49 +08:00
罗山仔
6cbfe0a3a3
🎨 #2745 【公众号】OCR接口增加部分字段 2022-07-21 15:32:32 +08:00
zhongjun
8b7225325d
🎨 #2747【微信支付】服务商分账解冻剩余资金接口增加参数sub_mchid 2022-07-21 15:30:28 +08:00
0katekate0
8f301500ef
🎨 修复家校沟通部分接口问题 2022-07-21 15:29:01 +08:00
0katekate0
bac18534dc
🆕 #2746 【企业微信】 增加读取学生或家长所有接口支持 2022-07-14 09:15:54 +08:00
缪贵荣
e0f3c76cea 🎨 修复部分字段类型 2022-07-12 17:02:00 +08:00
0katekate0
d166c27fad
🆕 #2742【企业微信】 家校沟通-增加批量更新家长接口支持 2022-07-12 16:34:23 +08:00
zhongjun
c68f2d2f36
🐛 #2734 【微信支付】商家批量转账参数加密异常修复 2022-07-12 16:33:34 +08:00
NaccOll
27bccb3a7e
🎨 remove commons-beanutils dependency 2022-07-12 16:32:34 +08:00
Binary Wang
188d1e186b 🔖 发布 4.3.7.B 测试版本 2022-07-07 10:01:04 +08:00
0katekate0
f30ac6be6c
🆕 #2725【企业微信】增加家校沟通-发送「学校通知」的接口 2022-07-06 23:50:32 +08:00
jianlajideYU
918daa2a55
🎨 #2726 【小程序】小程序配置类增加设置自定义的获取accessToken地址 2022-07-06 23:48:35 +08:00
Kiyan
2b93f91af6
🎨 fix Cannot find the class file for okhttp3.OkHttpClient 2022-07-06 23:45:53 +08:00
缪贵荣
31a18b28a4
🎨 修复字段类型 2022-07-06 23:45:05 +08:00
大森林
f19ef3b097 🎨 【微信支付】特约商户进件接口根据官方文档调整进行更新 2022-07-05 02:08:18 +00:00
0katekate0
a17d8ae5a2 🆕 #2721 【企业微信】增加家校通讯录-变更事件类型的回调消息支持 2022-06-30 14:23:13 +08:00
zainzzz
ba13eef750
🐛【小程序】上传代码接口修复ext_json中的extAppid参数 2022-06-30 11:07:25 +08:00
liucb
9f69e69090 🎨 入群欢迎语素材管理缺失两字段 2022-06-28 03:46:24 +00:00
Binary Wang
1b6275afb3 🎨 优化部分日志输出,调整输出级别 2022-06-28 11:42:03 +08:00
Binary Wang
5f34a8811e 🐛 修复部分错误的参数类型 2022-06-28 11:41:27 +08:00
0katekate0
4b3d59645e
🆕 #2719 【企业微信】增加家校沟通-基础接口 2022-06-28 11:21:57 +08:00
龍貓
a12fa55601
🆕 #2718【企业微信】增加接口调用许可相关接口 2022-06-28 11:21:23 +08:00
Boris
4fd6693c56
🎨 #2715【企业微信&小程序】微信客服、小程序物流服务和交易组件 等相关接口优化更新 2022-06-27 14:50:39 +08:00
0katekate0
a807063f4c
🆕 #2708【企业微信】增加家校沟通-部门管理接口支持 2022-06-27 14:48:19 +08:00
Binary Wang
1fbd22efac 🔧 更新部分文档和配置 2022-06-21 22:15:17 +08:00
Binary Wang
f00d21d188 🔖 发布 4.3.6.B 测试版本 2022-06-21 21:11:33 +08:00
Binary Wang
3ee7d0d391 🎨 #2705 【小程序】异步安全校验事件中消息重复判断代码修复 2022-06-21 17:20:29 +08:00
Binary Wang
1ccb94fd4e 🆕 #2672 【微信支付】增加商家转账的更多接口 2022-06-21 17:04:18 +08:00
Binary Wang
541589be59 🎨 代码优化 2022-06-21 16:25:33 +08:00
0katekate0
867f8e454d
🆕 #2707【企业微信】家校沟通-增加学生与家长部分接口 2022-06-21 16:24:14 +08:00
zhongjun
2ed1a5f03a
🎨 部分字段调整
* 🐛 #2487 【企业微信】第三方服务商获取企业永久授权码接口返回的管理员信息没有 open_userid 字段

* 🐛 #2699 WxMaUserInfo去除openId字段。
2022-06-20 16:29:19 +08:00
zhongjun
4590c9c333
🆕 #2672 【微信支付】新增商家转账的相关接口 2022-06-20 16:27:53 +08:00
0katekate0
d5c6803260
🆕 #2698【企业微信】增加家校应用-上课直播相关接口 2022-06-20 16:25:10 +08:00
fangyaoxia
5ac2e690c0 🐛 【微信支付】修复多商户情况下微信回调签名失败的问题 2022-06-14 10:37:21 +08:00
英狐
a21a622936 🆕 #2696 【微信支付】银行组件添加省市列表查询及支行列表查询的接口 2022-06-14 02:30:33 +00:00
0katekate0
1f3f133772
🆕 #2692【企业微信】增加家校应用-班级收款接口支持 2022-06-14 09:48:27 +08:00
徐凯旋
a9fe0b29d4 🎨 #2687 【小程序】直播商品管理接口添加缺失的字段thirdPartyAppid 2022-06-14 09:46:43 +08:00
Will
d390c5d9fe
🐛 #2693【企业微信】修复发送企业红包签名错误的问题 2022-06-14 09:39:28 +08:00
0katekate0
bb8c82d25c
🆕 #2689【企业微信】增加获取用户填写答案的接口 2022-06-10 14:38:25 +08:00
Trifolium
508d053ed3
🎨 #2660 【开放平台】补全获取授权帐号详情接口部分缺失参数 2022-06-10 14:37:51 +08:00
songxh2
f81d5b74d5
🐛 【企业微信】修复部分参数类型 2022-06-10 14:36:12 +08:00
dependabot[bot]
c39cd8b85e
⬆️ Bump jodd-http from 5.2.0 to 6.2.1 2022-06-10 14:34:54 +08:00
Binary Wang
a6caeaf5cf 🔖 发布 4.3.5.B 测试版本 2022-06-05 23:20:02 +08:00
Binary Wang
29c92a0b92 🎨 电商收付通中的分账结果查询功能返回结果集中的分账接收方少一个字段 2022-06-05 22:49:22 +08:00
Binary Wang
c8e3d7ad26 🎨 修复错误的注解 2022-06-05 22:40:08 +08:00
0katekate0
0dfd7a091c
🆕 #2676 【企业微信】增加家校应用-复学码接口支持 2022-06-05 22:38:00 +08:00
jinxiaoyi
6ce418a719
🎨【企业微信】获取客服账号列表接口增加分页支持
Co-authored-by: jinxiaoyi <jinxiaoyi@gaohua-tech.cn>
2022-06-05 22:35:56 +08:00
0katekate0
3952fcdd33
🆕 #2674【企业微信】增加家校应用健康上报部分接口 2022-05-31 20:14:20 +08:00
郑川
42122ce548 🎨 修复xml序列化失败问题 2022-05-31 09:36:46 +00:00
Binary Wang
4e6e692d4d 🎨 升级部分依赖版本 2022-05-31 17:36:19 +08:00
gf3gf3
96e0067cb9
🎨 修复参数类型 2022-05-30 17:31:58 +08:00
yechenhao
172d31fd2e
🎨 移除jedis-lock实现 2022-05-29 22:25:05 +08:00
zhangyulai
e7054aab0e
🎨 修正几个字段类型错误的问题 2022-05-29 22:23:54 +08:00
helloworldByChinese
95be03bf1c
🎨 #2663 优化重复消息检查器多实例导致多守护线程的问题,修改成单例+定时任务线程池处理 2022-05-27 09:16:56 +08:00
Youyu Song
41bb3b9901
🎨 微信分账解冻剩余资金结果添加分账接收方列表receivers 2022-05-26 17:08:03 +08:00
hiddentrack
cd034c4a6a
🆕 #2664 【微信支付】电商收付通(分账)增加查询订单剩余待分金额的接口 2022-05-26 17:03:08 +08:00
0katekate0
403d9c58ea
🆕 #2665【企业微信】增加微盘文件权限相关接口 2022-05-26 16:10:44 +08:00
hywr
f83c55c010
🆕 #2658 【开放平台】第三方平台小程序用户隐私保护指引模块增加申请隐私相关接口 2022-05-23 23:06:34 +08:00
Binary Wang
dbf9622395 🔖 发布 4.3.4.B 测试版本 2022-05-22 22:12:37 +08:00
0katekate0
1fdfd5c5a2
🆕 #2656【企业微信】增加微盘文件管理部分接口 2022-05-22 21:16:10 +08:00
dependabot[bot]
9517292a0e
⬆️ Bump gson from 2.8.0 to 2.8.9 2022-05-22 21:15:32 +08:00
高岩
529f786814
🎨 #2653 【微信支付】支付分相关接口增加服务商支持 2022-05-22 21:14:49 +08:00
zhongjun
4de09fa565
🆕 #2631 【小程序】小程序交易组件-订单服务新增获取订单列表和生成支付参数的接口 2022-05-19 14:11:20 +08:00
0katekate0
a6d4b6e6ab
🆕 #2651【企业微信】新增微盘文件管理接口 2022-05-19 14:06:39 +08:00
zhongjun
5da9fb30aa
🎨 #2541 【企业微信】发送群聊机器人消息接口增加对文件类型的支持 2022-05-17 13:52:15 +08:00
0katekate0
19c311391e
🆕 #2648 【企业微信】增加微盘文件管理部分接口 2022-05-17 09:55:00 +08:00
Binary Wang
b353067ee1
Update README.md 2022-05-16 10:25:38 +08:00
Binary Wang
46a01bdd33 🔖 发布 4.3.3.B 测试版本 2022-05-15 21:08:49 +08:00
Binary Wang
28e8277410 🎨 优化重构部分代码 2022-05-15 20:43:10 +08:00
leif Yi
dfec57f200
🆕 #2646 【微信支付】增加报关v3接口 2022-05-15 20:34:49 +08:00
zhongjun
cfb532722a
🆕 #2644 【微信支付】新增微信支付银行组件模块 2022-05-15 20:32:35 +08:00
0katekate0
66383836b8
🆕 #2643【企业微信】增加微盘获取文件列表的接口 2022-05-15 19:37:32 +08:00
Jc826
458e7c3d24
🆕 #2642【企业微信】增加客户群加入群聊管理相关接口 2022-05-13 16:29:56 +08:00
0katekate0
6177ca05b8
🆕 #2639【企业微信】增加微盘空间权限管理的接口 2022-05-12 09:57:28 +08:00
Binary Wang
858a3b9c82 🎨 优化代码 2022-05-11 10:09:44 +08:00
0katekate0
7e96d6ab0f
🆕 #2637【企业微信】新增微盘获取空间信息的接口 2022-05-10 22:19:12 +08:00
落花随风
d6301d3c2e 🎨【小程序】物流助手生成运单接口的请求参数中商品信息里增加商品详情列表 2022-05-05 11:47:27 +08:00
zhongjun
fcb0bc8c35
🆕 #2597 【开放平台】增加公众号业务相关的小程序管理接口 2022-05-05 11:45:08 +08:00
xiaohe-53
946f693bd0
🎨 #2632【企业微信】完善模板卡片消息接口部分参数 2022-05-05 11:42:44 +08:00
leif Yi
303a0ea155
🐛 #2634 【微信支付】修复财付通支付参数报签名错误问题 2022-05-05 11:37:26 +08:00
Binary Wang
6390dea046 🔖 发布 4.3.2.B 测试版本 2022-04-29 15:38:29 +08:00
zhongjun
3e49868388
🎨 #2625 【企业微信】获取客户群详情接口增加state返回值 2022-04-29 09:50:50 +08:00
Wyman
42c57b6de9
🆕 #2627【微信支付】增加V3分账动账通知解析方法 2022-04-29 09:48:22 +08:00
helloSk
40f10de24b 🎨【微信支付】增加商户上传反馈图片API,并修复消费者投诉2.0里查询投诉协商历史的接口问题 2022-04-28 03:00:30 +00:00
0katekate0
f1977f53fd
🆕 #2624【企业微信】增加微盘重命名以及解散空间的接口 2022-04-27 17:29:54 +08:00
zhongjun
5227c45653
🆕 #2622 【企业微信】OA打卡模块增加录入打卡人员人脸信息的接口 2022-04-27 17:28:58 +08:00
大森林
e9e7afd69e 🎨 电商收付通二级商户进件增加结算规则字段 2022-04-27 09:22:03 +00:00
helloSk
7d22221380 🎨 消费者投诉2.0接口参数修复 2022-04-27 08:53:02 +00:00
Binary Wang
e7f589e1d3 🎨 优化部分文档注释 2022-04-27 16:50:57 +08:00
zhongjun
a685e8f3fa
🆕 #2620 【企业微信】微信客服统计管理模块增加获取「客户数据统计」企业汇总数据的接口 2022-04-26 11:31:59 +08:00
0katekate0
010c184caa
🎨 #2598 【企业微信】修复windows系统会话存档的加载顺序 2022-04-26 11:30:44 +08:00
Mr_z
f9cf8ca1de
🎨 WxPayScoreResult类增加openid字段 2022-04-26 09:40:21 +08:00
猫九大大
1fc0da066b
🆕 #2586 【微信支付】支付证书支持base64编码配置 2022-04-25 10:13:00 +08:00
不敲代码的攻城狮
220e38d6c4
🆕 #2615 【企业微信】增加应用市场付费订单和版本相关的接口 2022-04-25 10:10:07 +08:00
Binary Wang
6b93962208
Update README.md 2022-04-25 10:06:31 +08:00
不敲代码的攻城狮
9e0a5bcc78
🆕 #2615 【企业微信】增加企业微信应用市场付费部分接口支持 2022-04-24 12:44:42 +08:00
0katekate0
343fa115ae
🆕 #2614 【企业微信】新增微盘空间管理的相关接口 2022-04-24 12:43:24 +08:00
zhongjun
8831056a5f
🆕 #2613【企业微信】增加管理商品图册的相关接口 2022-04-24 12:42:07 +08:00
zhongjun
1030115751
🆕 #2612 【企业微信】增加获取企业活跃成员数和通讯录异步导出的接口 2022-04-22 09:01:19 +08:00
Binary Wang
5d0364f6d2 🎨 优化部分文档,重构部分代码 2022-04-21 16:38:01 +08:00
Yang Bingdong
bd821c80c1 🎨 #2607 【开放平台】WxOpenAuthorizerInfo类增加account_status字段 2022-04-21 16:38:01 +08:00
zhongjun
df45a4a25d 🎨 #2606 【企业微信】用户信息类增加企业邮箱字段 2022-04-21 16:38:00 +08:00
Binary Wang
aea370503e 🎨 优化部分代码 2022-04-21 15:07:56 +08:00
Wong
fa5cac5e5b 🆕【企业微信】增加获取审批数据(旧)的接口 2022-04-21 06:38:47 +00:00
Binary Wang
6074c846fc 🔖 发布 4.3.1.B 测试版本 2022-04-20 19:28:57 +08:00
Binary Wang
7265b3bec2 🎨 优化部分文档 2022-04-20 19:24:43 +08:00
po
751820621d
🐛 #2604 【微信支付】修复微信预代扣通知参数问题 2022-04-20 19:22:10 +08:00
zhongjun
050dafbd42
🆕 #2596 【企业微信】新增通讯录管理-异步批量增量更新成员的接口 2022-04-19 17:31:31 +08:00
dragon
062eb6c3b4
🎨 add BizMail to WxCpXmlMessage 2022-04-18 17:10:26 +08:00
翟翟
0256461044
🆕 #2592 【企业微信】增加外部联系人聊天敏感词的的新增、修改、删除的接口方法 2022-04-18 16:39:28 +08:00
Binary Wang
ccd452c2a5
Update README.md 2022-04-18 15:37:12 +08:00
Binary Wang
4985a21f24 🎨 补充完善状态值 2022-04-18 15:34:13 +08:00
Binary Wang
a0dcda4ac1 🎨 优化部分文档 2022-04-18 15:33:38 +08:00
zhangyulai
b6ee83d119
🎨 #2593 【小程序】消息推送类添加图片/音频安全检测2.0结果字段 2022-04-18 15:28:33 +08:00
zhongjun
4d01470821
🎨 添加企业微信全局错误码:40096-不合法的外部联系人userid 2022-04-18 13:56:06 +08:00
Wong
7229bb4e40 🆕【企业微信】新增修改成员假期余额的接口 2022-04-14 08:51:03 +00:00
Wong
6f776bdda0 🐛【企业微信】修复创建预约直播活动详情参数取值问题 2022-04-14 06:36:40 +00:00
Leon
f3921c7332
🆕 #2588 【小程序】代码管理增加查询小程序版本信息的接口 2022-04-14 14:32:58 +08:00
nadirvishun
a88619a7dc
🎨 #2587 【小程序】增加路由线程池关闭方法 2022-04-14 11:52:49 +08:00
一念无明
568a989576 🎨 【企业微信】发送图文消息里的跳转到小程序的相关参数完善补充 2022-04-14 03:45:28 +00:00
nadirvishun
63c0eb107e 🎨 #2583 【企业微信】增加路由线程池关闭的方法,当通过http优雅关闭时需要调用,否则java进程不会结束 2022-04-13 14:46:13 +08:00
Wong
b00e938ef7 🆕【企业微信】 新增获取成员假期余额的接口 2022-04-13 06:44:20 +00:00
Binary Wang
8bcafdc6b2 📝 更新版本信息 2022-04-11 11:01:56 +08:00
Binary Wang
83adb23f8f 🔖 发布 4.3.0 正式版本 2022-04-10 23:09:51 +08:00
Binary Wang
db8c26b74a 🎨 优化代码,增加点注解 2022-04-10 21:59:02 +08:00
Binary Wang
76f6826461 🎨 修复放错位置的代码 2022-04-10 21:28:41 +08:00
Binary Wang
1d817903ba 🎨 优化代码,避免报奇怪的异常信息 2022-04-10 21:28:40 +08:00
Wong
7992ee0d3d 🆕【企业微信】增加获取企业假期管理配置的接口 2022-04-10 13:27:54 +00:00
Binary Wang
07c3545105 🎨 避免gitee误伤 2022-04-07 10:54:08 +08:00
Wong
56e5d6ff77 🆕 #2579【企业微信】增加企业微信OA自建应用-审批流程引擎相关接口 2022-04-07 02:51:51 +00:00
wuy
4f2360c9b2 + add diboot link 2022-04-06 14:40:34 +00:00
linlinjava
2f2d51b53d
🆕 #2578【小程序】小程序直播增加挂件组件全局key相关接口 2022-04-05 23:09:59 +08:00
oof
100fd1f856 🎨 删除不需要的导包 2022-04-04 12:27:15 +00:00
Wong
829df8804b 🎨 【企业微信】配置类增加会话存档路径设置 2022-04-02 13:22:46 +00:00
jamy888
a6b0b9c191 🎨 修復处理回调消息时无法使用agentId进行路由匹配的问题 2022-04-02 13:16:18 +00:00
Boris
e2c24124e1
🆕 #2574 【小程序】物流服务增加即时配送查询相关接口 2022-04-02 20:48:20 +08:00
Binary Wang
2cb8331030 🎨 【企业微信】重构规范化模板卡片消息部分字段命名,并补充card_image的支持 2022-04-02 17:32:53 +08:00
Binary Wang
1df2dda136 🔖 发布 4.2.9.B 测试版本 2022-03-31 22:28:04 +08:00
Binary Wang
2a169bacad 🎨 #2537 【企业微信】部门管理增加获取子部门ID列表和获取单个部门详情的接口 2022-03-31 22:20:13 +08:00
Binary Wang
94bd262694 🎨 增加若干字段 2022-03-30 20:36:10 +08:00
linlinjava
be49b10547
🎨 #2567 【小程序】直播间和商品、挂件组件等相关接口完善 2022-03-30 20:23:36 +08:00
Wong
62645a4311 🎨 #2563 【企业微信】优化获取待分配离职成员列表的接口,增加分页查询游标参数 2022-03-30 20:21:30 +08:00
大森林
1893790aae 🎨 优化微信消费者投诉接口 2022-03-25 09:18:45 +00:00
Binary Wang
6ce3772c86 🎨 优化代码 2022-03-22 14:32:52 +08:00
Binary Wang
a4dd111def 🎨 优化代码,重写jodd强制依赖的代码 2022-03-22 14:32:52 +08:00
大森林
94e6d6518b 🆕 #2562 【微信支付】增加微信消费者投诉2.0接口 2022-03-22 06:32:15 +00:00
Binary Wang
4036921f21 🔖 发布 4.2.8.B 测试版本 2022-03-11 00:07:50 +08:00
Binary Wang
13c80294a2 🎨 【小程序】回调消息解析类WxMaMessage增加allFieldsMap属性,以存储所有xml消息报文 2022-03-10 23:59:24 +08:00
Binary Wang
eb8942c871 🎨 优化代码 2022-03-09 11:58:44 +08:00
Binary Wang
0919205931 🎨 修改XML消息解析类里的agentId为字符串类型,避免为空值时导致的异常 2022-03-07 09:25:15 +08:00
Binary Wang
bbb5269bc2 🎨 #2534 【小程序】代码提交审核接口新增部分参数 2022-03-06 23:11:18 +08:00
Binary Wang
61f1179bdb 🎨 XmlUtils工具类优化,支持变态微信消息 2022-03-06 22:32:55 +08:00
Binary Wang
2c27f8bc5a 🐛 #2553 【公众号】修复草稿相关接口返回值多双引号的问题 2022-03-04 15:09:01 +08:00
Binary Wang
08ea0bd9df 🎨 StorageType枚举类增加Redisson 2022-03-04 15:07:47 +08:00
Binary Wang
e8596bceff 🎨 优化部分代码 2022-03-03 23:17:54 +08:00
Binary Wang
400fbc926a 🎨 两个永久图文素材相关接口已下线,标记为过时 2022-03-01 16:36:54 +08:00
Binary Wang
abaec2faf9 🎨 【小程序】获取小程序码的createWxaCode相关接口支持envVersion参数 2022-03-01 15:47:28 +08:00
Binary Wang
533ea253d6
Update bug_report.md 2022-03-01 15:31:40 +08:00
Jerry
4339c4dc57
🎨 #2550【开放平台】第三方平台新增全局错误码的中文描述 2022-03-01 15:13:13 +08:00
Binary Wang
8430122655 🔖 发布 4.2.7.B 测试版本 2022-02-28 23:15:56 +08:00
ShenHanBo/沈涵博
cba7603ee2
🎨 #2547【微信支付】二级商户进件接口增加owner字段 2022-02-28 23:12:00 +08:00
JCLee
d615f8af59
🎨【公众号】发布状态轮询接口实体类序列化 2022-02-23 10:16:47 +08:00
xiongmaoshouzha
aae9bebff1
🐛 #2538 【微信支付】签约通知结果类修复request_serial字段类型
request_serial int 类型改为long
2022-02-23 10:16:14 +08:00
xiaoguaiYJ
fcfee0a068
🐛 修复部分字段定义类型错误
Co-authored-by: xiaoqiang <spark-more@qq.com>
2022-02-23 09:44:29 +08:00
zhoushuofu
a25c48e3d6
🐛 #2544 【公众号】修复菜单文章id未序列化问题 2022-02-23 09:15:01 +08:00
徐凯旋
6c466f00b3
🎨 #2530【公共问题】修复 pull-parser 依赖传递导致spring boot 2.6.3无法启动 2022-02-23 09:12:54 +08:00
Green Years
c90e4b9810
🆕 【企业微信】增加支持URL的素材文件上传接口 2022-02-15 16:51:36 +08:00
Binary Wang
1ebe3aa3c5 🐛 修复错误的字段定义和json映射 2022-02-15 16:47:20 +08:00
jiqh
90b42bd2bb 🐛 修复部分字段定义类型错误 2022-02-11 16:35:09 +08:00
Binary Wang
bae7886fe7 🔖 发布 4.2.6.B 测试版本 2022-02-09 16:40:14 +08:00
Binary Wang
0c00e15c8f 🎨 修复错误的json注解 2022-02-08 18:53:23 +08:00
Binary Wang
1bbadc37cb 🎨 屏蔽一段代码,以免报错 2022-02-08 18:37:04 +08:00
Binary Wang
935749e580 🎨 【开放平台】小程序模板管理获取代码模板列表接口返回增加两个小程序相关的字段 2022-02-08 18:31:56 +08:00
dependabot[bot]
2914943cad ⬆️ Bump xstream from 1.4.18 to 1.4.19 (#2525)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.18 to 1.4.19.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

---
updated-dependencies:
- dependency-name: com.thoughtworks.xstream:xstream
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-08 18:21:19 +08:00
dependabot[bot]
a2ed0713e2 ⬆️ Bump xstream in /others/weixin-java-osgi (#2526)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.18 to 1.4.19.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

---
updated-dependencies:
- dependency-name: com.thoughtworks.xstream:xstream
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-08 18:21:18 +08:00
Boris
438d5833f9 🆕 #2309 【企业微信】新增微信客服-接待人员管理、会话分配与消息收发、基础信息获取等相关接口 2022-02-08 18:21:18 +08:00
徐凯旋
37fe7d21ef 🎨 #2478 【微信支付】申请分账和查询分账结果添加detail_id 2022-02-08 18:21:18 +08:00
dream
6f23c5e289 🐛 修复OA获取打卡月报数据时间月跨度问题 2022-02-08 10:20:31 +00:00
徐凯旋
1af394cdd9
🆕 #2198 【小程序】增加根据提交信息数据获取用户安全等级的接口 2022-01-26 14:27:14 +08:00
大森林
a79b05cd45 📝 增加jeepay赞助广告 2022-01-26 14:14:01 +08:00
Binary Wang
93616adf3a 🎨 格式化并优化部分代码 2022-01-25 09:35:02 +08:00
Binary Wang
65d8059221 🎨 【公众号】发布能力获取成功发布列表接口返回增加update_time参数 2022-01-25 00:18:31 +08:00
Wong
c0535f87fb 🆕 #1596 【企业微信】新增会话存档相关接口 2022-01-25 00:10:14 +08:00
aniaan
b8dd04b89f
🎨 新增view_miniprogram事件类型常量 2022-01-24 23:51:38 +08:00
Binary Wang
bd670742e7 🔖 发布 4.2.5.B 测试版本 2022-01-24 00:34:21 +08:00
栈木
74b5f806d0
🎨 更新微信公众平台文档地址&增加clientmsgid相关返回码 2022-01-24 00:10:11 +08:00
zhoushuofu
189ee0925e
🎨 #2516【公众号】菜单按钮支持新的图文消息类型 2022-01-24 00:09:37 +08:00
Binary Wang
f3b2e93a08 🎨 #2491【小程序】获取小程序scheme码接口请求增加两个过期相关参数 2022-01-24 00:07:33 +08:00
Binary Wang
04914f5b01 🎨 #2518【企业微信】获取审批记录的审批状态增加已退回状态 2022-01-24 00:03:05 +08:00
孔明
487cc7f689
🆕 #2309 【企业微信】新增微信客服帐号管理部分接口 2022-01-20 12:07:56 +08:00
ichengzi
649af3e4bd
🎨 错误码中文含义匹配优化 2022-01-20 12:05:12 +08:00
JCLee
31efa1ad66
🎨 #2511【公众号】草稿箱获取图文素材实体类增加图文消息素材的最后更新时间字段 2022-01-20 12:04:09 +08:00
Binary Wang
6bccbf5fc3
Update README.md 2022-01-19 20:31:35 +08:00
活泼开朗大男孩变身技术宅
2c48303f8d
🆕 #2510【小程序】增加微信小程序即时配送服务的接口 2022-01-19 20:26:18 +08:00
Binary Wang
a6f55b3ef1
Update README.md 2022-01-17 14:23:41 +08:00
huazai
1dc58f0021
🎨 #2506 【小程序】补充完善获取用户encryptKey接口的参数 2022-01-17 13:49:23 +08:00
徐凯旋
0601e8fb17
🎨 fix GsonBuilder singleton NPE 2022-01-12 17:26:11 +08:00
DDERGOU
ee17a5ee6f
🎨 解析响应的Gson构建类调整为单例 2022-01-11 12:44:50 +08:00
Binary Wang
4c781ee7ee 🎨 简化代码 2022-01-06 16:15:30 +08:00
wongswoon
be40eb7c14
🎨 【小程序】WxMaMessage增加小程序撤销授权AppID事件部分字段 2022-01-06 16:12:38 +08:00
shouyuwang
6fb083aeea
🎨 【微信支付】支付分请求接口代码优化 2022-01-06 14:48:32 +08:00
Binary Wang
bb9a1857c8 🔖 发布 4.2.4.B 测试版本 2022-01-05 08:53:25 +08:00
dany1
76ea7fe2a8
🎨 #2477 【小程序】增加订阅消息通知事件的相关属性支持 2022-01-03 23:15:31 +08:00
Tim Sims
4b92f94a41
🆕 #2479 【企业微信】增加获取企业群发成员执行结果的接口 2022-01-03 23:11:19 +08:00
zp961466717
0c35f778db
🎨 #2481 【企业微信】发送应用消息接口里的文本通知型的模板卡片消息增加引用文本字段 2022-01-03 23:09:27 +08:00
JCLee
fd8e02a81a
🎨 #2476【公众号】客服消息增加草稿箱图文消息类型 2021-12-31 15:04:07 +08:00
穗苗子
a647fe8c5b
🎨 #2474【小程序】createWxaCodeUnlimit 接口方法支持设置check_path参数 2021-12-30 09:17:19 +08:00
184759547
1309e9e2dc
🆕 #2473 【小程序】接入小程序广告实现,实现创建数据源和回传数据两个接口
Co-authored-by: wywy12300 <gaoyong@chebada.com>
2021-12-30 09:16:10 +08:00
Binary Wang
1474e727b2 🔖 发布 4.2.3.B 测试版本 2021-12-28 18:10:48 +08:00
hb0730
94ad8169fa
🆕 #2455 【小程序】增加新的获取手机号的接口 2021-12-28 18:01:22 +08:00
wuchubuzai2018
7101c22899
🎨 #2467 【微信支付】微信支付V3接口请求增加代理设置参数的支持 2021-12-28 17:59:38 +08:00
luxiang0412
739c222586 🆕 #2468【企业微信】获取审批申请详情接口返回数据增加关联审批单控件 2021-12-28 00:00:10 +08:00
无处不在2015
1bda3eee15 🎨 #2467 【微信支付】微信支付V3接口请求增加代理设置参数的支持 2021-12-28 00:00:10 +08:00
zp961466717
7116fe5ae2
🆕 #2459 【小程序】授权资料变更事件消息增加OpenPID,PluginID,OpenID,RevokeInfo等字段 2021-12-27 15:09:42 +08:00
linlinjava
c66ecbfd4d
🎨 #2461 【小程序】自定义交易组件上传接口支持图片链接 2021-12-27 15:03:02 +08:00
Scruel Tao
31984c130f
💡 增加 ADD_SCENE_WECHAT_ADVERTISEMENT 注释 2021-12-27 15:02:14 +08:00
Scruel Tao
bcd5806cdc
♻️ 无效字段过时标记处理 2021-12-27 15:01:25 +08:00
Wong
2175e94158 🆕 【企业微信】增加直播相关接口 2021-12-24 09:30:35 +08:00
jamy888
2e4d73e8b7 🆕 【企业微信】修改解析企业微信推送消息类,添加对企微客户联系变更回调事件的支持 2021-12-23 16:49:09 +08:00
Binary Wang
43594d71b1 Update README.md 2021-12-23 16:49:09 +08:00
Wong
d6d0e35984 🎨 修复测试类 2021-12-20 23:35:58 +08:00
Aron
8449f2f942 📝 更正注释 2021-12-17 23:01:32 +08:00
0katekate0
228c71c42a
🎨 #2452 【企业微信】获取部门列表接口添加返回字段 departmentLeader(部门负责人的UserID) 2021-12-17 16:16:48 +08:00
Binary Wang
ef293d284e 🎨 修复错误的字段名 2021-12-17 12:06:47 +08:00
Binary Wang
51b3dc0efb 🎨 部分类增加缺失的@Data注解 2021-12-17 12:06:32 +08:00
JCLee
d70b907407
🆕 #2451 【小程序】增加设备订阅消息相关接口 2021-12-17 11:57:15 +08:00
xiaoguaiYJ
c1d0b68d32
🆕 #2443【微信支付】增加服务商微工卡相关功能接口以及微信批量转账到零钱的服务商接口实现
Co-authored-by: xiaoqiang <dengmingqiang@youmengbang.com>
2021-12-14 12:41:48 +08:00
Binary Wang
6f35b985b1 🔖 发布 4.2.2.B 测试版本 2021-12-12 23:52:19 +08:00
Binary Wang
23bc3bc763 🎨 优化代码 2021-12-10 17:48:12 +08:00
Binary Wang
fc856b66bb 🎨 修复文档 2021-12-10 16:11:16 +08:00
Jc826
7bf9373b55
🎨 优化代码 2021-12-10 16:04:49 +08:00
xujijie
fa2c990ab2
🎨 #2434 【公众号】微信发布能力接口文章信息返回数据增加thumb_url 2021-12-10 15:23:58 +08:00
Forever杨
b8f328b90b
🎨【微信开放平台】优化 Spring Boot Starter 配置逻辑 2021-12-08 18:26:49 +08:00
Scruel Tao
f351ecf2a1
🐛 fix annotation typo. 2021-12-08 18:24:41 +08:00
Scruel Tao
3f8b6e1c7a
🆕 增加 WxMpXmlOutMessage 返回包含被加密信息对象的方法 2021-12-08 14:51:06 +08:00
Scruel Tao
05fd45b853
🆕 补全消息输出等相关类的 jackson 注解(主要是 @JacksonXmlCData) 2021-12-08 14:50:44 +08:00
Scruel Tao
f2ac81ef5e
♻️ 过时语义不清晰的 decrypt 方法 2021-12-08 14:47:49 +08:00
Forever杨
fcb599b76e
📝 新增 企业微信 Spring Boot Starter 文档 2021-12-08 14:47:00 +08:00
Scruel Tao
1c6b7fc07c
🎨 增加对象自身的解密方法,调整解密工具类方法名 2021-12-08 09:41:59 +08:00
sunzsh
ce8bf302fa
🎨 #2428 【企业微信】用户管理接口添加官方新引入的直属领导字段 2021-12-08 09:13:34 +08:00
Scruel Tao
e2f370eedc
🎨 WxMpXmlMessage 对象支持 jackson 序列化注解(无功能性影响,非强依赖) 2021-12-07 15:42:36 +08:00
dagewang
7f11938799
🐛 #2422 【微信支付】修复企业付款给员工接口签名错误问题 2021-12-07 13:54:20 +08:00
Forever杨
e3fc624052
🆕 #2423 【企业微信】新增企业微信 Spring Boot Starter 2021-12-06 17:07:43 +08:00
wenjie
05ea881fac
🎨 #2386 【小程序】createWxaCodeUnlimit 接口方法支持设置env_string 2021-12-05 21:27:31 +08:00
S
a254d1ce34
🎨 优化WxPayConfig,支持配置文件为字节数组 2021-12-02 18:22:16 +08:00
liufuguo
40ba792acc
🐛 小程序的条码/二维码识别的API请求方式改为post 2021-12-01 17:57:37 +08:00
Binary Wang
5ac4e00133 🎨 修复错误代码 2021-11-29 22:43:55 +08:00
Binary Wang
c22fc05193 🔖 发布 4.2.1.B 测试版本 2021-11-29 22:19:02 +08:00
qing Wang
f4bf76c490
🎨 更正CODE_87013 msg 2021-11-29 22:11:43 +08:00
qing Wang
20011f8b7e
🎨 #2411【微信公众号】获取草稿列表接口新增两个字段 2021-11-29 17:49:30 +08:00
Binary Wang
cc6bc22c1d 🎨 优化代码 2021-11-28 23:50:11 +08:00
Binary Wang
daae431ef0 📝 更新优化文档 2021-11-28 23:32:56 +08:00
qing Wang
2e0b20021b
🎨 fix dependency conflicts 2021-11-28 23:26:51 +08:00
sandy zeng
ddf207e15b
🎨 修复错误转换逻辑 2021-11-28 23:24:31 +08:00
xiaowei6066
95d130d927
🆕 #2399 【小程序】增加内容安全mediaCheckAsync接口新的实现方法 2021-11-24 14:28:48 +08:00
Binary Wang
1984b28ce3 🎨 增加缺失字段subMchid 2021-11-18 22:55:11 +08:00
Binary Wang
669b4ea7c2 🎨 优化ApacheHttpClientBuilder代码 2021-11-18 22:53:53 +08:00
潘安
cffd17399b
🆕 #2397【企业微信】帐号ID安全性全面升级相关接口改造以及增加代开发应用external_userid转换的接口 2021-11-18 11:17:54 +08:00
S
6cc0b2db22
🎨 修复有问题的代码 2021-11-18 11:15:35 +08:00
haoyanbing
1f830ecacf
🎨 #2390 【公共问题】ApacheHttpClientBuilder增加支持配置重试策略和超时策略的参数 2021-11-17 18:45:43 +08:00
Lo_ading
8b4c105029
🎨 #2387 【企业微信】客户朋友圈接口字段调整 2021-11-17 16:54:06 +08:00
潘安
a5cd1a6cd5
🎨 #2391 【企业微信】企业群发消息接口结构调整 2021-11-17 16:52:20 +08:00
Binary Wang
421fbd4993 add ccflow banner 2021-11-15 10:34:36 +08:00
Binary Wang
f7ab9f8f29 🎨 auditId字段改为Long 2021-11-15 10:34:36 +08:00
Lo_ading
93779d227a
:new :#2382 【企业微信】增加获取商品图册的接口 2021-11-14 21:31:29 +08:00
hywr
ef99e3d24f
🆕 #2385 【开放平台】 增加为小程序设置用户隐私指引的相关接口 2021-11-14 21:29:00 +08:00
tt
23a115fdee
🎨 #2375 【小程序】urlscheme生成接口调整请求参数结构 2021-11-08 21:03:18 +08:00
杨镇涛
def6856b02
🆕 #2373 【小程序】urllink生成接口增加env_version参数以支持环境隔离 2021-11-08 21:00:55 +08:00
ray Wang
bb6bec04b1
🆕 #2379 【微信开放平台】增加个人小程序快速注册和试用小程序快速注册相关接口 2021-11-08 18:44:57 +08:00
潘安
88301a6192
🆕 #2372【企业微信】新增客户群opengid转换和入群欢迎语素材管理相关接口 2021-11-03 23:20:33 +08:00
Binary Wang
dd83e1655a
📝 更新版本信息 2021-11-01 23:50:01 +08:00
Binary Wang
d5d61a4e1a 🔖 发布 4.2.0 正式版本 2021-11-01 20:52:39 +08:00
Binary Wang
5f1aa6fc97 🎨 代码优化 2021-11-01 00:18:42 +08:00
Binary Wang
e343159e3a 🎨 修复测试代码 2021-11-01 00:09:42 +08:00
Binary Wang
7b4ba553ac 🎨 #2331 【公众号】【开放平台】根据微信平台用户信息接口最新调整去掉用户信息类部分无用字段 2021-10-31 23:48:54 +08:00
Binary Wang
6f57d4a522 🎨 修复一个字段类型错误问题 2021-10-31 23:33:10 +08:00
Boris
537a9332c0
🆕 #2361 【企业微信】增加客户朋友圈相关的部分接口 2021-10-31 23:25:27 +08:00
潘安
dde445150a
🆕 #2365 【企业微信】新增获取企业群发记录及结果的接口 2021-10-31 23:16:08 +08:00
Binary Wang
7164e26195 🎨 代码优化 2021-10-25 00:09:28 +08:00
Kyle Scully
3039dd018e
🎨 Use explicit types on lambda arguments 2021-10-23 23:27:14 +08:00
Kyle Scully
44e4ee4416
🎨 modifier order 2021-10-23 23:26:45 +08:00
tt
a2042dd7c2
🎨 #2354 【小程序】urlscheme增加要打开的小程序版本字段,默认值正式版本 2021-10-23 23:25:58 +08:00
dragon
5755c293df
🆕 #2356 【公众号】新增草稿箱和发布相关的接口 2021-10-23 23:23:18 +08:00
Binary Wang
8c787d1638 🎨 补充缺失参数 2021-10-17 20:21:56 +08:00
Binary Wang
f4c18d7eb8 🎨 补充错误码 2021-10-17 20:21:09 +08:00
linlinjava
0c1258594e
修复WxMaShopPayInfo的支付方式参数 2021-10-17 20:05:46 +08:00
Kyle Scully
e68477c26c
refactor: Remove unnecessary parentheses 2021-10-14 14:20:08 +08:00
Kyle Scully
0bcba32ea4
refactor: Use diamond operator 2021-10-13 14:06:39 +08:00
ArBing
fddb2f7a18
🆕 #2345【企业微信】增加创建调用wx.agentConfig时所需要的签名方法 2021-10-13 13:49:16 +08:00
ArBing
a5c141f7be
🎨 #2344【企业微信】永久授权码信息相关接口增加authMode、isCustomizedApp字段 2021-10-13 13:48:49 +08:00
Lucas
3c4e749ea9
🐛 #2338 【微信支付】营销代金券接口修复pause和restart实现的问题 2021-10-06 10:17:07 +08:00
nickname263
56d2b5f57a
🆕【企业微信】添加对新的模板卡片更新消息“更新点击用户的按钮点击文案消息”的支持 2021-09-27 17:27:46 +08:00
nickname263
cecdace1c5
🆕 #2324【企业微信】添加对新的模版卡片消息的支持 2021-09-25 23:06:19 +08:00
yearliny
b45c626e82
🐛 修复某些情况下会抛出CannotResolveClassException异常错误的问题
https://stackoverflow.com/questions/9508292/nodecom-thoughtworks-xstream-mapper-cannotresolveclassexception-while-using-xstr
2021-09-25 23:05:28 +08:00
Binary Wang
abbfc85e24 Update README.md 2021-09-21 17:08:07 +08:00
Binary Wang
2019efffa3 🎨 修复接口参数命名错误问题 2021-09-19 13:00:10 +08:00
laizuan
cabee0f70c
🎨 默认Apache http,排除jodd-http依赖 2021-09-19 12:53:42 +08:00
Zerision
18b49daf2b
🐛 #2314 【企业微信】修复多个不同通知消息被误判为同一消息的问题 2021-09-19 10:30:35 +08:00
Binary Wang
8faef7c8e2 🔖 发布 4.1.9.B 测试版本 2021-09-13 23:45:16 +08:00
Binary Wang
941c47a193 🎨 修复已移除代码 2021-09-13 23:44:46 +08:00
xdtand
6bba793f4f
🎨 修改增加的字段对应的数据类型 2021-09-13 23:22:57 +08:00
Binary Wang
123bef0ea9 🎨 重构优化小程序Link相关接口 2021-09-13 23:08:32 +08:00
xdtand
ba23afd49f
🎨 #2311 【企业微信】企业微信打卡数据接口增加部分缺失字段 2021-09-10 11:40:01 +08:00
linlinjava
ea31b7bfbe
🆕 #2306【微信小程序】增加小程序Short Link生成的接口 2021-09-10 11:38:35 +08:00
pg
3c267bbe61
🆕 #2281【小程序】增加小程序加密网络通道支持 2021-09-07 22:44:03 +08:00
yiyi910
f7f2121fca
🐛 #2301 【小程序】修复生成小程序码的okhttp与Jodd实现类当微信后端报错时不会抛异常的问题 2021-09-07 22:43:10 +08:00
Leeway
8f4993971d
🆕 #2305【公众号】微信事件消息类增加群发图文的url结果属性 2021-09-07 22:41:08 +08:00
Binary Wang
5f35ab27fb 🔖 发布 4.1.8.B 测试版本 2021-09-05 23:00:54 +08:00
xingyao
ba99224d13
🎨 #2295 【企业微信】批量获取外部客户详情接口支持多个userId 2021-09-05 22:17:30 +08:00
dinghe1018
b06cc90f94
🐛 #2284 【小程序】修复直播接口的type字段 2021-09-05 16:06:30 +08:00
ArBing
59a1456799
🆕 #2298【企业微信】增加服务商模式外部联系人unionid转换接口 2021-09-05 16:03:37 +08:00
dependabot[bot]
2a36ebf45f
⬆️ Bump xstream in /others/weixin-java-osgi (#2280)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.17 to 1.4.18.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

---
updated-dependencies:
- dependency-name: com.thoughtworks.xstream:xstream
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-30 16:49:29 +08:00
721806280
159471c9cb
🎨 Update pom.xml 2021-08-25 15:13:21 +08:00
Binary Wang
af212bd68f 🔖 发布 4.1.7.B 测试版本 2021-08-23 23:11:53 +08:00
Binary Wang
28156fcb3a 🎨 #2272 【企业微信】发送新客户欢迎语接口增加对file文件消息的支持 2021-08-23 22:34:33 +08:00
liming1019
b65783bd72
🎨 修复客户端在使用Request对象时由lombok注解引发的错误 2021-08-23 22:18:25 +08:00
huangxm129
226c2af5a1
🎨【企业微信】修改查询客户接替状态未接受customer数据问题 2021-08-23 22:16:46 +08:00
ifhelen
373aa777c7
🎨 #2271 【企业微信】应用消息发送接口返回类增加消息id字段,用于撤回应用消息 2021-08-23 22:12:11 +08:00
Binary Wang
9531df8067
Update README.md 2021-08-19 16:51:40 +08:00
ShienPro
28b2ca93fb
🆕 #2260【小程序】增加自定义组件之撤销商品审核的接口 2021-08-19 10:56:34 +08:00
liming1019
614a1c923e
🆕 #2261 【小程序】增加内容安全接口(兼容2.0版本) 2021-08-18 10:52:16 +08:00
Binary Wang
6cfe90b31e 🎨 格式化部分代码 2021-08-16 17:59:52 +08:00
Binary Wang
dfeb2f944f ⬆️ 升级 Spring Boot 版本 2021-08-16 17:55:40 +08:00
Binary Wang
d4a1a98ba1 🔖 发布 4.1.6.B 测试版本 2021-08-14 22:37:03 +08:00
liming1019
e785b1f9a7
🆕 #2258 【小程序】增加自定义组件之物流和售后相关接口 2021-08-13 17:55:35 +08:00
po
3f42a162c2
🆕 #2257【微信支付】增加微信签约代扣相关接口 2021-08-13 17:53:01 +08:00
Binary Wang
ed6bd016f5
Update README.md 2021-08-13 15:19:10 +08:00
Binary Wang
426ad57aa5 🎨 优化代码 2021-08-13 14:51:34 +08:00
liming1019
b3eadb4ffa
🆕 #2255 【小程序】增加自定义组件之接入商品前必需的接口 2021-08-13 13:46:33 +08:00
猪蹄宝宝
5326c5b155
🐛 #2216 【微信支付】修复APP统一下单v3接口缺少sign参数的问题 2021-08-13 13:41:00 +08:00
猪蹄宝宝
60c9df46f5
🐛 #2246 【微信支付】修复微信支付V3签名/验签的换行符错误问题
参考微信支付文档:
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml

签名时使用的换行符必须是\n,因此不应使用%n,这会导致windows平台下签名错误
2021-08-13 13:39:35 +08:00
hywr
2b92b6fdc2
🐛 修复几个问题
1.修复微信公众号无法模板消息行业:其他
2.修复第三方平台无法上传标准模板的代码到小程序
3.修复小程序代码模板类型类字段拼写错误
2021-08-13 13:37:54 +08:00
liming1019
e9c1cda356
🆕 #2252 【小程序】增加自定义组件之图片上传接口 2021-08-11 09:49:32 +08:00
akingzwk
24bde9298c
🐛 #2253 【企业微信】修复服务商模式通过授权码获取登录用户的信息返回”不合法的的suite_ticket参数“的错误 2021-08-11 09:47:34 +08:00
longliveh
72f3005ac6
🐛 #2251 【企业微信】 修复获取打卡数据时间检查不正确的问题 2021-08-10 13:47:46 +08:00
liming1019
16d98a6142
🆕 #2249 【小程序】增加自定义组件之商家入驻相关接口 2021-08-09 22:08:29 +08:00
Binary Wang
5c71b2a29f 🔖 发布 4.1.5.B 测试版本 2021-08-08 21:51:24 +08:00
liming1019
60663f2f7a
🆕 #2243 【小程序】增加自定义组件申请接入相关接口 2021-08-06 10:33:32 +08:00
shuaidawang
2d36b4d6d2
🆕 #2240 【开放平台】 增加小程序提审素材上传的接口 2021-08-06 09:40:14 +08:00
Binary Wang
091d74b6ee 🎨 格式化部分代码 2021-08-05 09:19:48 +08:00
Binary Wang
622b838005 🎨 优化代码 2021-08-04 18:37:15 +08:00
zsail
1652ae2f79
🐛 【公众号】 短key解析接口返回结果结构修复 2021-08-04 17:33:00 +08:00
longliveh
87c1952eef
🐛 #2235 【企业微信】 修复获取打卡数据时间检查不正确的问题 2021-08-04 17:32:18 +08:00
Binary Wang
8c76e60675
🐛 Revert "class BaseWxPayResult add a field named signType"
This reverts commit 10fd006f32e5a672d72d0e1c35b439f9bcc59959.
2021-08-04 13:58:50 +08:00
zsail
2a8854656e
🎨 修正字段注释 2021-08-03 16:57:11 +08:00
Binary Wang
06c407a6f0 🔖 发布 4.1.4.B 测试版本 2021-08-01 22:59:27 +08:00
Binary Wang
eecd3f87d7
Update README.md 2021-08-01 12:21:23 +08:00
Binary Wang
443fa220e2 🐛 修复几个错误的字段类型定义 2021-08-01 11:50:13 +08:00
Binary Wang
4a009fe9f2 🎨 去掉错误的必填校验注解 2021-08-01 11:49:35 +08:00
huangxm129
140fb022a1
🎨 #2229 【企业微信】查询企业成员信息接口结果实体类增加视频号名称信息 2021-08-01 11:47:34 +08:00
Sheng Chen
10fd006f32
🎨 class BaseWxPayResult add a field named signType
* feature (common): the callback xml from wechat maybe has sign_type

* feature (common): the callback xml from wechat maybe has sign_type

Co-authored-by: chensheng <chensheng@jiayouxueba.cn>
2021-07-29 22:24:54 +08:00
zsail
6d2c0a3709
🆕 #2222 【公众号】 新增短key托管和解析的接口 2021-07-29 22:24:19 +08:00
hywr
00347dc50c
🎨 #2226 【开放平台】第三方平台获取代码模板列表接口增加参数,可过滤标准模板 2021-07-29 22:22:31 +08:00
longliveh
8511f8f826
🆕 #2219 【企业微信】 新增为打卡人员排班接口 2021-07-27 20:53:19 +08:00
Binary Wang
5f23a6f101 🔖 发布 4.1.3.B 测试版本 2021-07-25 23:34:32 +08:00
Binary Wang
426bcddd47 🐛 修复三方应用登录构建的授权链接地址问题 2021-07-25 23:10:50 +08:00
Binary Wang
e15181867f 🎨 部分bean类实现序列化接口 2021-07-25 23:08:25 +08:00
Binary Wang
b307c5aa85 🎨 增加文档地址 2021-07-25 23:08:25 +08:00
Binary Wang
29498a9b3e
Update bug_report.md 2021-07-25 23:01:23 +08:00
Binary Wang
596ada05f1 🎨 #2194 【小程序】交易组件生成订单接口请求增加缺失参数 2021-07-25 21:54:03 +08:00
Binary Wang
59f871a3a1 🎨 标记JedisLock组件为过期,不建议使用 2021-07-25 21:44:16 +08:00
Binary Wang
0eb474d319 🆕 #2207 【企业微信】增加构建扫码登录二维码链接的方法 2021-07-25 21:33:20 +08:00
Binary Wang
7db5207fee 🎨 优化重构部分代码 2021-07-25 21:20:13 +08:00
Binary Wang
3a444d0fba Update README.md 2021-07-25 21:19:38 +08:00
longliveh
497a0b7017
🆕 #2213【企业微信】 增加获取企业所有打卡规则的接口 2021-07-22 13:54:15 +08:00
Binary Wang
e53733b842 🎨 优化代码,恢复误删除代码 2021-07-20 10:32:10 +08:00
Binary Wang
1b48399501 🔖 发布 4.1.2.B 测试版本 2021-07-18 23:34:08 +08:00
Binary Wang
7bd9ef4dfd 🐛 修复两个变量类型 2021-07-18 23:21:20 +08:00
hywr
9e3f256032
🆕 #2206 【开放平台】增加第三方平台启动ticket推送接口 2021-07-18 23:04:48 +08:00
longliveh
d3730b361d
🐛 #2208【企业微信】 获取打卡人员排班信息接口修复返回结果类结构 2021-07-18 23:03:55 +08:00
Leeway
72205bbf16
🎨 #2209【企业微信】获取客户群详情接口增加群昵称字段 2021-07-18 23:02:00 +08:00
tangliu
737d75964b
🐛 #2200 【小程序】修复获取AccessToken时ApiHostUrl未生效的问题 2021-07-13 10:00:26 +08:00
longliveh
2d2cf39f1c
🆕 #2201【企业微信】 增加获取打卡记录日报、获取打卡记录月报、获取打卡人员排班信息接口 2021-07-13 09:59:31 +08:00
刘小狼狈
69b9ec0068
🎨 #2199 【小程序】WxMaUserInfo类补充openId和unionId字段 2021-07-12 12:17:16 +08:00
Binary Wang
44e8f229ee
Update stale.yml 2021-07-08 11:45:58 +08:00
Binary Wang
b8e2d58505
Create stale.yml 2021-07-08 11:12:29 +08:00
Binary Wang
b4abd5143d 🔖 发布 4.1.1.B 测试版本 2021-07-04 23:58:00 +08:00
Binary Wang
982ad86bab 🎨 小商店相关代码修复优化 2021-07-04 23:13:48 +08:00
Binary Wang
d29d18028a 🐛 修复GsonHelper工具类 2021-07-03 21:31:21 +08:00
Binary Wang
3d6185914f 🎨 优化代码,去掉jodd相关接口引用 2021-07-03 21:14:42 +08:00
kelvenlaw
eaa517359a
🆕 #2048 【开放平台】实现小商店的部分接口 2021-07-03 21:06:02 +08:00
thinsstar
fb0460e1a1
🆕 #2188 【微信支付】增加v3合单支付和账单相关接口 2021-07-03 20:59:38 +08:00
mrning
dc7bcc01e2
🎨 ApplymentsStatusResult添加signState签约状态字段 2021-07-03 20:57:32 +08:00
Binary Wang
b2eaa59cb3 🎨 格式化代码,并规范变量命名 2021-07-03 20:51:39 +08:00
pg
65921f572f
🎨 #2178 【企业微信】更新获取客户群列表的接口 2021-07-03 20:45:42 +08:00
wrinkle
568d02c25e
🆕 #2181【企业微信】增加支持传入groupId参数的获取企业标签库接口实现 2021-07-02 09:52:38 +08:00
TomLiu
fedab8f28a
🆕 #2185 【开放平台】增加将草稿添加到代码标准模板库的接口 2021-07-01 16:47:48 +08:00
pg
577b756912
🆕 #2120 【微信支付】微信分账服务类增加v3接口 2021-06-26 21:09:57 +08:00
ParkerJX
e3f785f006
🐛 #2171【企业微信】第三方应用CORP_JSAPI_TICKET ,SUITE_JSAPI_TICKET 获取 ticket 失效修复 2021-06-26 21:08:48 +08:00
dependabot[bot]
b6d4b5e902
⬆️ Bump jetty-server from 9.4.38.v20210224 to 9.4.41.v20210516 (#2164)
Bumps [jetty-server](https://github.com/eclipse/jetty.project) from 9.4.38.v20210224 to 9.4.41.v20210516.
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.38.v20210224...jetty-9.4.41.v20210516)

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-server
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-24 10:44:43 +08:00
hywr
591b2d83c6
🆕 #2163 【开放平台】增加查询小程序可回退版本的接口 2021-06-23 16:14:20 +08:00
pg
71289e4dea
🐛 #2148 【企业微信】修复互联企业消息推送接口返回字段问题 2021-06-23 16:12:19 +08:00
arthur0201
1e64a7f7b3
🆕 #2161 【公众号】微信推送消息类增加群发接口事件相关字段 2021-06-23 13:47:24 +08:00
pg
3963c6d471
🆕 #2150 【企业微信】补充完善部分客户联系接口,以及服务商模式外部联系人openid转换接口 2021-06-22 10:57:32 +08:00
pg
566e5f31c7
🎨 #2155 【企业微信】发送新客户欢迎语接口增加对视频类型的支持,同时修复结构不正确的问题 2021-06-21 11:58:13 +08:00
mrxiao
8e0a6a3d40
🆕 #2135 【小程序】实现获取 URL Link接口 以及微信电子发票报销方相关接口 2021-06-11 11:51:43 +08:00
arthur0201
61303c2226
🎨 #2144【企业微信】更新任务卡片消息状态接口参数跟文档保持一致 2021-06-07 11:37:38 +08:00
Binary Wang
4ef9b5d91e 🎨 优化部分代码 2021-06-04 16:11:48 +08:00
dependabot[bot]
3ab66e3447
⬆️ Bump httpclient from 4.5 to 4.5.13 (#2143)
Bumps httpclient from 4.5 to 4.5.13.

---
updated-dependencies:
- dependency-name: org.apache.httpcomponents:httpclient
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-04 09:34:07 +08:00
arthur0201
183bdb2cbe
🆕 #2142 【企业微信】被动回复消息内容新增任务卡片格式 2021-06-04 09:33:42 +08:00
Binary Wang
c7c834b450 ⬆️ upgrade guava version 2021-06-03 14:06:57 +08:00
Binary Wang
4d94e17b96 🎨 修复单元测试代码 2021-06-03 14:04:06 +08:00
Binary Wang
54222bd346 📝 更新部分信息 2021-06-02 23:46:22 +08:00
Binary Wang
96395c895f 📝 更新版本信息 2021-06-02 23:36:47 +08:00
Binary Wang
0c4fb44a79 Merge branch 'release' into develop
# Conflicts:
#	README.md
#	others/weixin-java-osgi/pom.xml
#	pom.xml
#	spring-boot-starters/pom.xml
#	spring-boot-starters/wx-java-miniapp-spring-boot-starter/pom.xml
#	spring-boot-starters/wx-java-miniapp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/miniapp/config/WxMaAutoConfiguration.java
#	spring-boot-starters/wx-java-miniapp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/miniapp/properties/WxMaProperties.java
#	spring-boot-starters/wx-java-mp-spring-boot-starter/pom.xml
#	spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpStorageAutoConfiguration.java
#	spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/properties/WxMpProperties.java
#	spring-boot-starters/wx-java-open-spring-boot-starter/pom.xml
#	spring-boot-starters/wx-java-open-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/open/config/WxOpenStorageAutoConfiguration.java
#	spring-boot-starters/wx-java-pay-spring-boot-starter/pom.xml
#	weixin-graal/pom.xml
#	weixin-java-common/pom.xml
#	weixin-java-common/src/main/java/me/chanjar/weixin/common/error/WxErrorException.java
#	weixin-java-common/src/main/java/me/chanjar/weixin/common/service/WxOAuth2Service.java
#	weixin-java-cp/pom.xml
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpUserService.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpServiceImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserExternalContactInfo.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/contact/FollowedUser.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpMessageSendStatistics.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutVideoMessage.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpConfigStorage.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpDefaultConfigImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpRedissonConfigImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpTpDefaultConfigImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpTpRedissonConfigImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/message/WxCpTpMessageRouterRule.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java
#	weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/WxCpTpServiceImpl.java
#	weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessageTest.java
#	weixin-java-miniapp/pom.xml
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaQrcodeService.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaAnalysisServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaImgProcServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaJsapiServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaQrcodeServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSubscribeServiceImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveRoomInfo.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/ApacheQrcodeBytesRequestExecutor.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/ApacheQrcodeFileRequestExecutor.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeBytesRequestExecutor.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeRequestExecutor.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeBytesRequestExecutor.java
#	weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeRequestExecutor.java
#	weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImplTest.java
#	weixin-java-mp/pom.xml
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpGuideService.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpGuideServiceImpl.java
#	weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
#	weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpBusyRetryTest.java
#	weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpGuideServiceImplTest.java
#	weixin-java-open/pom.xml
#	weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java
#	weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java
#	weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java
#	weixin-java-pay/pom.xml
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/PartnerTransactionsResult.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/ProfitSharingRequest.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EcommerceService.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImpl.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/PayScoreServiceImpl.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceApacheHttpImpl.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/AutoUpdateCertificatesVerifier.java
#	weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImplTest.java
2021-06-02 20:48:01 +08:00
Binary Wang
0e9e06a964 🔖 发布 4.1.0 正式版本 2021-06-02 20:31:41 +08:00
Binary Wang
fdd3a94131 🎨 格式化部分代码 2021-06-02 19:55:53 +08:00
Binary Wang
c9fad3121c 🐛 #2090 【企业微信】修复WxCpTpXmlMessage中的AgentID解析空值报错问题 2021-05-31 18:04:18 +08:00
Binary Wang
8f73c409d6 🎨 #2137 【企业微信】消息类里的Id修改为String以兼容字符串类型 2021-05-30 23:33:47 +08:00
momosv
2c108c4628
🎨 #2138 【企业微信】优化Redisson实现类,可单独配置provider的redis key,并使keyPrefix可设置 2021-05-30 23:08:55 +08:00
Binary Wang
317c98b6da 🎨 refine document 2021-05-28 15:08:58 +08:00
hywr
a2e82448b8
🐛 #2128 【开放平台】 修复公众号在由第三方平台管理时OAuth2Service授权相关报错问题 2021-05-24 11:34:13 +08:00
418874537
01ab45bc0c
🎨 完善补充客户群详情bean 2021-05-24 11:32:34 +08:00
thinsstar
efb2c52011
🆕 #2130 【微信支付】增加微信支付部分v3接口 2021-05-21 22:07:02 +08:00
sunl888
fa5d892176
🐛 #2125 【微信支付】修复企业微信红包发送结果中部分属性解析失败的问题
Signed-off-by: sunlong <2013855675@qq.com>
2021-05-20 17:31:46 +08:00
ily433664
3d1c1ba475
🎨 #2123 【企业微信】假勤请求增加请假Vacation属性 2021-05-20 16:05:43 +08:00
Binary Wang
3609edb4fb
Update README.md 2021-05-20 14:25:43 +08:00
hywr
62a3931aee
🎨 #2115 优化公众号、小程序、企业微信的access token自动刷新逻辑,避免循环递归调用 2021-05-20 14:23:26 +08:00
huadong
dfb02eac38
🎨 #2117 【企业微信】完善补充部分Bean类实现序列化接口 2021-05-20 14:20:18 +08:00
dependabot[bot]
f64addb0cb
⬆️ Bump xstream from 1.4.16 to 1.4.17 (#2118)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.16 to 1.4.17.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-20 14:15:38 +08:00
dependabot[bot]
f0e8b23514
⬆️ Bump xstream in /others/weixin-java-osgi (#2119)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.16 to 1.4.17.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-20 14:15:19 +08:00
Forever杨
6159d4266c
🎨 #2098 修复调用微信接口异常重试逻辑问题 2021-05-20 14:14:55 +08:00
Binary Wang
5667784c0f 🎨 refine document 2021-05-18 15:04:58 +08:00
Binary Wang
2c11ca5383 🔖 发布 4.0.9.B 测试版本 2021-05-15 15:23:36 +08:00
hywr
7359abf7c5
🆕 #2113 【公众号】增加对话能力(原导购)相关接口 2021-05-14 21:32:25 +08:00
mrxiao
a596228a8d
🆕 #2106 支付通知解密数据对象增加“基础支付支付者信息”字段 2021-05-14 10:59:25 +08:00
sunl888
dae6b15fa4
🎨 支持解析error_code错误码
Signed-off-by: sunlong <2013855675@qq.com>
2021-05-14 10:52:43 +08:00
taneg
65c1cdc07c
🎨 open模块移除Jedis强关联 2021-05-14 10:52:04 +08:00
thomas2050
15bd95c3cb
🆕 #2097 【微信支付】增加微信商户平台商家券相关业务接口 2021-04-27 15:50:17 +08:00
dependabot[bot]
51dc66194d
⬆️ Bump commons-io from 2.5 to 2.7 (#2096)
Bumps commons-io from 2.5 to 2.7.

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-27 12:22:55 +08:00
cloudX
63fdc318d1
🎨 微信支付配置类的toString方法排除verifier字段 2021-04-25 10:28:31 +08:00
小锅盖
942cb07f41
🎨 重构小程序模块自动注入代码 2021-04-22 14:40:24 +08:00
Forever杨
3eabfedd9c
🎨 wx-java-open-spring-boot-starter 增加重试次数配置 2021-04-21 13:27:59 +08:00
刘小狼狈
0a75b0e902
🎨 新版微信小程序API已经不再返回 openId,unionId.删除对应字段防止开发者误用 2021-04-19 17:05:02 +08:00
OrangeBadBad
7f4b576fd6
🐛 修复通讯录搜索接口参数问题 2021-04-19 15:48:28 +08:00
Binary Wang
28df6d426a
Update README.md 2021-04-18 23:26:12 +08:00
Binary Wang
49983cf618 🔖 发布 4.0.8.B 测试版本 2021-04-18 09:53:03 +08:00
Binary Wang
e41478d9fd 🐛 #2070 【小程序】修复获取直播间助手接口参数错误问题 2021-04-17 16:33:01 +08:00
Forever杨
b650dae665
🎨 优化使用 wx-java-open-spring-boot-starter 注册 ConfigStorage 需要同时依赖 jedis、redissson、spring-data-redis 包,否则启动报错的问题 2021-04-17 16:25:59 +08:00
zainlu
fcc34c3913
🎨 #2075 【公众号】修复设置最大重试次数为0时候异常处理错误的问题
Co-authored-by: luzhaoyuan <luzhaoyuan@ppdai.com>
2021-04-16 00:18:31 +08:00
shzyx122
6f24f7b92e
🎨 #2077 【开放平台】代小程序实现业务获取基本信息接口新增nickname相关字段
返回参数: nickname_info 名称信息,nickname 小程序名称

https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Mini_Programs/Mini_Program_Information_Settings.html
2021-04-16 00:16:33 +08:00
Musuer
d818d576d9
🎨 #2078【企业微信】补充客户联系回调消息里的字段
新增字段failReason,tagType;id字段从Long改为String

Co-authored-by: firzen.xu <Firzen.xu@movit-tech.com>
2021-04-16 00:13:13 +08:00
Binary Wang
4d0ff8fbd7 🐛 修复错误代码 2021-04-07 15:40:47 +08:00
erhu1999
2b89a1dd64
🐛 #2066 【小程序】创建直播间信息请求中增加缺失的必填字段anchorImg 2021-04-06 09:59:05 +08:00
Binary Wang
2f9d843d79
Update README.md 2021-04-04 23:48:59 +08:00
sishuiyunyan
91b651d6a7
🎨 #2063 【企业微信】企业微信网页授权获取用户信息增加external_userid字段 2021-03-31 12:19:58 +08:00
Binary Wang
12652bddb2 🔖 发布 4.0.7.B 测试版本 2021-03-31 09:37:48 +08:00
Binary Wang
2ac03917f7 🎨 #2028 【公众号】获取图文群发总数据接口返回增加确实字段 2021-03-30 21:03:42 +08:00
Binary Wang
63edc076b9 🎨 部分shorturl相关接口废弃 2021-03-30 20:52:14 +08:00
Binary Wang
d16ea7d4de 🎨 优化小程序直播间创建接口 2021-03-30 20:46:17 +08:00
Binary Wang
59d8cc6d57 🎨 优化部分代码 2021-03-30 20:33:41 +08:00
Boris
4730b334b6
🆕 #2059 【小程序】增加小程序交易组件部分接口 2021-03-30 13:46:24 +08:00
mrxiao
d9de6f1169
🎨 优化代码,增加无参构造方法 2021-03-30 09:14:32 +08:00
banks
850c95a042
🐛 #2056 【小程序】修复直播成员管理-查询成员列表请求参数的问题 2021-03-29 17:12:52 +08:00
mrxiao
5155c8c4b1
🆕 #2052 【公众号】增加微信电子发票报销方相关接口
1、查询报销发票信息
2、批量查询报销发票信息
3、报销方更新发票状态
4、报销方批量更新发票状态
2021-03-24 09:30:57 +08:00
dependabot[bot]
86233064b5
⬆️ Bump xstream (#2049)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.15 to 1.4.16.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-23 15:33:07 +08:00
Binary Wang
20c40ad826 🔖 发布 4.0.6.B 测试版本 2021-03-21 23:53:14 +08:00
721806280
8470122858
🎨【漏洞预警】XStream < 1.4.16 多个反序列化漏洞 2021-03-19 17:08:48 +08:00
721806280
0203950f4e
🎨 WxCryptUtil#encrypt(String randomStr, String plainText)方法调整为public
WxCryptUtil#encrypt(String randomStr, String plainText)方法调整为public
2021-03-19 16:54:48 +08:00
Jason_liu
fefe039e95
🎨 add some missing filed
please see https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/studio-api.html#3
2021-03-19 11:57:41 +08:00
Binary Wang
7470834896 🎨 修复jetty版本升级导致的问题 2021-03-15 11:51:25 +08:00
cloudX
488706b2df
🎨 #2040 【微信支付】增加多商户切换的支持 2021-03-15 11:40:53 +08:00
dependabot[bot]
eb46a10fd9
⬆️ Bump jetty.version from 9.4.35.v20201120 to 11.0.1 (#2037)
Bumps `jetty.version` from 9.4.35.v20201120 to 11.0.1.

Updates `jetty-server` from 9.4.35.v20201120 to 11.0.1
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.35.v20201120...jetty-11.0.1)

Updates `jetty-servlet` from 9.4.35.v20201120 to 11.0.1
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.35.v20201120...jetty-11.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-11 09:11:46 +08:00
Hiz
2736ea4edf
🎨 移除joda-time依赖
Co-authored-by: hiz <liang@0318>
2021-03-10 11:20:06 +08:00
thinsstar
30155b316b
🆕 #2022 【微信支付】增加智慧商圈相关接口和解析支付营销代金券核销回调消息的方法
* 增加解析支付营销代金券核销回调消息解析

* 增加微信支付智慧商圈接口和回调解析

Co-authored-by: 黄星 <huang.xing@aquilaflycloud.com>
2021-03-09 16:12:11 +08:00
hahahaha123567
e46c6c1995
📝 fix Javadoc typo 2021-03-01 15:23:32 +08:00
小锅盖
da512ff53d
🐛 #2015 【小程序】解决starter模块强制依赖jedis的问题 2021-02-26 22:13:41 +08:00
thinsstar
bac1b679b4
🆕 #2018 【微信支付】增加营销代金券接口和营销专用图片上传接口
Co-authored-by: 黄星 <huang.xing@aquilaflycloud.com>
2021-02-26 22:10:38 +08:00
杨迢
52c33e207c
🐛【企业微信】修复第三方应用的两个bug 2021-02-26 11:50:38 +08:00
Yang Liu
f002311b69
🐛 #2016 【企业微信】修复第三方应用 getLoginInfo 接口参数问题 2021-02-26 11:48:22 +08:00
Jason_liu
3f9bba4c63
🎨 #2007 【小程序】获取直播间列表接口返回增加两个缺少的字段 2021-02-26 09:34:14 +08:00
Zhangq
2869a086c0
🆕 #2013【企业微信】第三方应用开发增加标签管理的相关接口 2021-02-26 09:31:44 +08:00
Binary Wang
367bf4ee9f 🔖 发布 4.0.5.B 测试版本 2021-02-25 17:31:33 +08:00
cloudX
b2998b2ce4
🐛 #2004 【微信支付】电商收付通二级商户进件接口部分请求字段加密 2021-02-19 21:13:30 +08:00
Binary Wang
13356d1cd5 🆕 #1895 【小程序】直播增加成员管理相关接口 2021-02-16 00:12:35 +08:00
Binary Wang
45a422f0f7 🎨 微信支付v3代码优化重构 2021-02-15 23:30:25 +08:00
Coding And Loving
9d3c11f552
🎨 #2000 【企业微信】第三方应用增加基于分布式并发锁获取各种token和ticket的版本 2021-02-13 23:22:49 +08:00
IOrzo
3bb918d125
🎨 更正小程序二维码文档注释说明 2021-02-09 10:44:57 +08:00
Binary Wang
1001158231 🎨 优化规范部分代码 2021-02-06 22:27:32 +08:00
Binary Wang
f40547a459 🐛 #1985 【企业微信】修复群机器人发送消息的部分错误代码 2021-02-01 17:36:23 +08:00
Binary Wang
7e68b576cc 🔖 发布 4.0.4.B 测试版本 2021-01-31 23:20:41 +08:00
Binary Wang
06a1726665 🆕 #1983 【微信公众号】增加订阅通知相关接口 2021-01-31 22:09:57 +08:00
Binary Wang
fa179f6cba 🎨 优化重构代码 2021-01-28 22:44:53 +08:00
cofe
73c135fb10
🆕 #1976 【小程序】增加获取小程序scheme码的接口 2021-01-28 21:39:31 +08:00
Binary Wang
566d58e899 🐛 #1982 【企业微信】第三方应用WxCpTpXmlMessage类中order字段注解错误问题修复 2021-01-28 21:37:31 +08:00
Binary Wang
8cc9a8abe5 🎨 优化完善代码 2021-01-28 21:23:58 +08:00
Binary Wang
87431f3ffe 🎨 #1897 【小程序】接口请求地址的域名增加自定义设置的支持 2021-01-27 23:45:28 +08:00
Binary Wang
584c7ac354 🎨 重构优化部分代码 2021-01-27 23:03:42 +08:00
Binary Wang
6811bffa18 🎨 优化部分代码 2021-01-27 22:43:07 +08:00
Binary Wang
c4a87961af 🐛 #1969 【企业微信】修复第三方应用获取登录用户信息接口方法里的错误代码 2021-01-27 22:02:13 +08:00
Binary Wang
596aafcfb4
Update demo.md 2021-01-27 21:32:58 +08:00
Binary Wang
2c810298f4 🎨 #1975 【微信支付】企业付款失败时的返回字段根据接口实际返回进行优化,增加额外的特殊字段 2021-01-27 21:23:04 +08:00
Binary Wang
37ae6807e6 🆕 【公众号】增加返回响应信息完整内容的客服消息发送接口的方法 2021-01-27 21:19:44 +08:00
ray Wang
13b484a071
🆕 #1978 【微信支付】电商支付通增加查询分账回退结果的接口方法 2021-01-24 10:47:59 +08:00
Brayden Wong
ce62d1c01b
🆕 提供access_token保存ConcurrentHashMap中的实现,支持高并发。 2021-01-16 22:14:38 +08:00
cofe
bb5aadf6be
🆕 #1922 【微信支付】增加查询订单最大分账比例和剩余待分金额的接口 2021-01-15 17:08:43 +08:00
cloudX
43771f6048
🆕 #1923 【微信支付】电商收付通增加添加、删除分账接收方等接口 2021-01-15 15:21:52 +08:00
Binary Wang
ecbefea5e5 🔖 发布 4.0.3.B 测试版本 2021-01-10 23:47:06 +08:00
Binary Wang
fee15ff8d2 🎨 #1953 【企业微信】更新通讯录接口增加new_userid字段 2021-01-10 23:31:43 +08:00
Binary Wang
fb7ecd4715 🎨 部分类增加实现序列化接口 2021-01-10 23:25:45 +08:00
guicw
04fadf6f71
🐛 #1959 【微信支付】电商收付通修复请求分账接口异常问题
Co-authored-by: aha <aha>
2021-01-10 23:21:19 +08:00
cofe
fd58b3f212
🎨 weixin-java-pay模块去除jackson依赖,调整相关代码 2021-01-08 17:07:32 +08:00
tingyugetc520
1eec0f4bfa
:bug #1958 【企业微信】获取应用详情接口返回的部门ID列表字段修改为Long类型 2021-01-08 16:08:14 +08:00
Binary Wang
20c0a028c8
Update README.md 2020-12-30 13:54:35 +08:00
Binary Wang
f0eb219eb8
🎨 remove duplicated file 2020-12-30 13:53:07 +08:00
fanxiayang12
e7f2bd62f8
🆕 #1952 增加腾讯企点子模块,用于对接企点开放平台。 2020-12-30 09:17:35 +08:00
huangxm129
a8232f6c91
🆕 #1950 【企业微信】第三方应用增加获取应用的管理员列表的接口 2020-12-29 13:38:13 +08:00
uianz
0af608f119
🆕 #1947 【企业微信】第三方应用增加用户管理、OA、外部联系人、部门、通讯录搜索等相关接口的实现
* 修复getSuiteJsApiTicket和getAuthCorpJsApiTicket方法代码错误
* 增加企业微信第三方应用用户管理、oa、外部联系人、部门、通讯录搜索相关接口实现
2020-12-29 10:01:22 +08:00
miemieYaho
e946ce0642
🎨 优化yml代码提示功能 2020-12-29 09:51:30 +08:00
Binary Wang
b235a779f3 🔖 发布 4.0.2.B 测试版本 2020-12-27 20:34:56 +08:00
Binary Wang
58e9411b45 🐛 #1937 【公众号】修复动态添加公众号配置的问题 2020-12-27 20:07:49 +08:00
Binary Wang
2e18fec385
Update README.md 2020-12-27 19:58:38 +08:00
Binary Wang
45e212818f 🐛 #1944 【小程序|开放平台】修复代小程序代码管理提交审核接口的参数 2020-12-27 19:51:41 +08:00
qwq
604098b047
🆕 #1942 【小程序】增加生成小程序码的okhttp实现 2020-12-25 18:23:17 +08:00
Binary Wang
02d3c160b2 🆕 #1369 【企业微信】增加效率工具-日程相关接口 2020-12-25 17:09:18 +08:00
ParkerJX
55e1399fe8
🎨 #1909 【企业微信】第三方应用路由规则类增加msgType和event的支持 2020-12-24 15:13:47 +08:00
ray Wang
cbcba481b0
🎨 【微信支付】服务接口增加获取微信支付通用媒体服务的方法 2020-12-23 10:45:32 +08:00
Binary Wang
384fab5cf2
Update README.md 2020-12-22 14:14:43 +08:00
dependabot[bot]
573bd4507f
⬆️ Bump xstream from 1.4.14 to 1.4.15 (#1932)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.14 to 1.4.15.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-22 10:37:21 +08:00
dependabot[bot]
8bea393977
⬆️ Bump xstream in /others/weixin-java-osgi (#1933)
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.13-java7 to 1.4.15.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-22 10:37:02 +08:00
Ming
59c6ce0aba
📝 add sponsor 2020-12-21 14:26:21 +08:00
Binary Wang
871876a524 🔖 发布 4.0.1.B 测试版本 2020-12-21 01:06:53 +08:00
Binary Wang
a2448d5179 🆕 #1915 【企业微信】发送应用消息接口增加是否开启重复消息检查等字段 2020-12-21 01:02:32 +08:00
Binary Wang
155501152a 🎨 🐛 #1898 【公众号】微信商户电子发票代码规范化及优化,并修复设置商户联系方式参数问题 2020-12-21 00:46:49 +08:00
uianz
06d45dc5fe
🎨 #1924 【企业微信】第三方应用suite_ticket改为默认30分钟失效 2020-12-20 21:57:31 +08:00
f00lish
0306103d28
🆕 #1916 【微信支付】电商收付通增加关闭普通支付单的接口 2020-12-11 09:38:38 +08:00
f00lish
34495cb655
【微信支付】电商收付通相关接口抛出异常时加入状态码等信息 2020-12-08 13:35:58 +08:00
Ricky-dgs
2a45fe4ade
🆕 #1902 【企业微信】增加获取加入企业二维码的接口 2020-12-03 16:59:08 +08:00
dependabot[bot]
8f3fa1dd7c
⬆️ Bump jetty.version from 9.4.31.v20200723 to 9.4.35.v20201120 (#1905)
Bumps `jetty.version` from 9.4.31.v20200723 to 9.4.35.v20201120.

Updates `jetty-server` from 9.4.31.v20200723 to 9.4.35.v20201120
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.31.v20200723...jetty-9.4.35.v20201120)

Updates `jetty-servlet` from 9.4.31.v20200723 to 9.4.35.v20201120
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.31.v20200723...jetty-9.4.35.v20201120)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-03 13:40:40 +08:00
Binary Wang
45297e7f4d
Update README.md 2020-11-30 16:47:05 +08:00
Binary Wang
350d2b2bda
Update demo.md 2020-11-30 12:16:23 +08:00
Binary Wang
ae4f30eed9
📝 更新版本信息 2020-11-30 00:24:17 +08:00
Binary Wang
d2f5adcb40
合并develop分支,发布最新正式版
* art:证书类配置读取优化调整

* new:电商收付通二级商户进件

* art:微信服务商配置优化

* new:jsapi合单支付

* new:合单支付

* 🎨 #1733 微信支付服务商配置优化,增加服务商合单支付接口

* art:微信服务商配置优化

* new:jsapi合单支付

* new:合单支付

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>

* 🎨 优化代码

* 🎨 优化重构并统一公众号和小程序的spring boot starter部分配置类和属性

* 🎨 优化企业微信消息发送接口代码,引入moco模拟测试组件,方便测试代码

* 🎨 #1722 企业微信增加互联企业发送应用消息的接口,并重构消息相关类的包结构

* 🎨 优化代码,使用java8自带的Base64类

* 🐛 #1738 修复企业微信创建用户接口自定义字段缺失的问题

* 🎨 升级依赖的Spring Boot版本为最新,并优化部分代码

* 🔖  发布 3.9.1.B 测试版本

* 🎨 #1743 企业微信获取客户群详情接口增加unionId属性

获取客户群详情对象中 增加 unionId属性

* new:电商收付通普通支付

* 🆕 #1744 微信支付增加电商收付通-普通支付相关接口

* new:电商收付通普通支付

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>

* new:电商收付通支付回调处理

* new:电商收付通支付回调处理

* 🆕 #1749 微信支付增加电商收付通支付回调处理相关方法


* new:电商收付通支付回调处理

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>

* 🎨 #1752 微信支付电商收付通二级商户进件时店铺信息增加小程序appid字段

* 🎨 优化部分代码

* 电商收付通支付调整

* 🎨 电商收付通支付接口调整

经测试小程序支付时不能使用服务商的appId签名,故增加方法返回微信接口返回的结果。

* 🎨 #1756 解决wx-java-open-spring-boot-starter中Redisson实现缺少database设置的问题

* 🎨 #1753 小程序直播部分接口代码优化重构,对照官方文档补充新增参数

* 🎨 #1747 微信支付分回调通知对象类增加缺失参数:回调摘要summary

* 🆕 #1758 微信支付增加电商收付通服务商和二级商户余额查询接口

* 🆕 #1759 微信支付增加电商收付通请求分账接口

* 增加微信收付通请求分账接口

* 🆕 #1723 企业微信增加查询应用消息发送统计的接口

* 🔖 发布 3.9.2.B 测试版本

* 🆕 #1764 微信支付电商收付通增加请求分账回退接口

* 🐛 #1766 修复电商收付通请求分账结果类未添加相关注解的问题

* 微信收付通增加请求分账回退接口

* 修复请求分账结果未添加lombok注解

* fix:电商收付通回调通知测试

* 🆕 #1768 微信支付增加电商收付通完结分账和退款接口

* 微信收付通增加完结分账和退款接口

* 🆕 #1767 企业微信外部联系人增加修改客户备注信息的接口

* 🎨 优化部分代码

* 🎨 #1646 企业微信第三方应用(服务商)模块重构实现,并提供Router、Interceptor、Handler等接口

* 🎨 #1755 完善补充第三方平台小程序相关的部分错误码

* 🎨 优化企业微信群机器人发送消息的相关接口,提供无需提前设置webhookKey即可使用的重构方法

* 🆕 #1675 企业微信增加创建日历的接口,以及相关回调事件消息通知的支持

* 🔖 发布 3.9.3.B 测试版本

* new:电商收付通合单支付、普通支付查询

* new:电商收付通商户、平台提现

* fix:命名统一调整

* 🆕  #1772 电商收付通增加支付结果查询和提现的接口

* new:分账查询、退款通知

* new:修改结算账户、退款查询

* 🆕 #1775 微信支付电商收付通增加修改二级商户结算账户和退款查询的接口

* 🐛 #1777 XML工具类修复无法解析<ExtAttr><Item>这种节点数据的问题

* 🎨 WxMpMessageRouter增加构造方法

* 🎨 升级依赖jodd-http版本,并修复不兼容代码

* 🎨 优化GraalProcessor代码

* #1782 微信支付修复分账回退查询接口签名错误的问题

Co-authored-by: lmh <lmh@weiyian.com>

* 🆕 #1774 企业微信增加系统审批事件推送的事件常量

* 🎨 优化代码

* 🎨 #1785 公众号 spring boot starter 模块增加接口自定义主机地址和redis sentinel的配置

* 🔖  发布 3.9.4.B 测试版本

* fix:字段错误

* 🆕 #1789 微信支付电商收付通增加下载账单的接口

* 🆕 #1793 企业微信添加应用管理的设置工作台自定义展示模块 

Co-authored-by: sysong <sysong@chutianyun.gov.cn>

* 🎨 优化公众号Spring Boot Starter的redisTemplate注入等代码

* 🎨 优化代码,提供toString方法,避免某些情况下出现的问题

* 🆕 #1675 企业微信增加更新、查询和删除日历的接口

* 🆕 #1686 微信公众号增加对话能力(原导购助手)部分接口,如添加顾问、获取顾问信息等

* 🆕 #1686 微信公众号增加对话能力(原导购助手)部分接口,如修改顾问、删除顾问、获取顾问列表等

* 🎨 #1797 企业微信配置客户联系「联系我」方式接口返回增加二维码链接字段

新增联系我二维码链接,仅在scene为2时返回

* 🎨 优化部分代码,重构OAuth2网页授权、网页登录等相关接口,方便接入open模块

* 🐛  修复字段错误

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>

* 🆕 #1725 微信支付分增加免确认模式(预授权方式)相关接口支持

* 🆕 #1806 开放平台增加第三方平台代公众号实现复用公众号资料快速创建小程序的接口

* 🆕 微信开发平台模块增加OAuth2相关接口(网页授权、网页登录等)的实现

* 🎨 优化部分代码,明确出错信息

* 🔖 发布 3.9.5.B 测试版本

* 🆕 #1817 企业微信增加批量获取外部联系人详情的接口,同时修复外部联系人中listGroupChat参数失效问题

* 🎨 优化代码,实现序列化接口

* 🎨 #1820 优化更新getTicket方法,调整锁调用时机避免并发问题

* Fix:调整获取相关票据的锁处理时机

* Fix:更新票据,锁之后,再次检查是否有效,避免并发同时进入多次重置票据

Co-authored-by: weiwei.xing <weiwei.xing@nplusgroup.com>

* Update CONTRIBUTING.md

* 🆕 #1814 微信支付解析扫码支付回调通知增加签名类型的重载方法

* 🔖 发布 3.9.6.B 测试版本

* 🎨 重构部分包结构

* 🎨 #1827 微信支付分相关接口优化

1. 将原有请求模型类中一些基础数据类型改为对应的包装类,因为在用户没有显式set的情况下,这些基础数据类型序列化为json时也会以默认值的形式作为参数传到微信端,造成微信端返回错误。
2. 微信支付分相关的回调数据处理方法加上签名验证。
3. 增加方法授权/解除授权服务回调数据处理

* 🎨 #1832 微信支付电商收付通增加查询提现状态的接口

* 🐛 #1824 微信支付修复分账回退接口结果错误码解析错误的问题

* 🎨 #1834 微信会员卡基本信息类增加缺少字段 use_limit

* 🐛 #1828 修复企业微信第三方应用消息路由相关方法参数错误的问题

* 🆕 #1831 生成小程序二维码的相关接口增加指定文件路径参数的重载方法

* 🔖 发布 3.9.7.B 测试版本

* 🎨 #1848 刷卡支付接口响应结果类增加服务商调用时的返回字段

* 🎨 增加点注释

* 🎨 #1849 企业微信外部联系人相关接口重构,优化重复代码,同时获取客户详情接口返回增加标签id字段

* 🎨 Update javadoc for WxMaQrcodeService.java

* 🐛 #1852 修复个性化菜单clientPlatformType字段的反序列化问题

* 🎨 补充完善单元测试

* 🐛 #1856 【微信支付】修复电商收付通查询退款状态的接口地址

* 🎨 #1857 【企业微信】获取获取部门成员详情接口返回值增加第三方应用专有的open_userid字段

* 🔖 发布 3.9.8.B 测试版本

* 🎨 修复out_trade_no 字段命名不规范问题

Co-authored-by: vcpgfw <zhaopf@xtkg.com>

* 📝  add more cases

* 🐛 #1861【微信支付】支付分后付费项目请求类的amount属性改为Integer,允许为空

* 🐛 #1864 【微信支付】WxPayConfig类的hashCode和equals方法移除 verifier 字段

* 🆕 #1863 【小程序】增加删除直播间、编辑直播间、获取直播间推流地址、获取直播间分享二维码等接口

* 🎨 #1867【企业微信】优化完善第三方应用的接入代码

* 🆕 #1869 【小程序】增加管理直播间小助手的相关接口

* 🆕 #1868 【微信支付】增加通用上传图片接口,支持传入流和文件名参数

* 🎨 优化代码,部分类增加序列化接口实现

* 🎨 增加点单元测试示例代码

* 🔖 发布 3.9.9.B 测试版本

* ⬆️ 升级xstream版本

* ⬆️ Bump xstream

Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.10-java7 to 1.4.13-java7.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* 🆕 #1873 【企业微信】第三方应用增加网页授权登陆获取访问用户身份和获取访问用户敏感信息的接口

* 🐛 修复字段错误问题

* 🐛 #1883【公众号】修复卡券导入code接口错误的返回类型

* 🎨 规范变量名

* 🆕  #1885 【微信支付】电商收付通增加资金账单下载的接口

* 🆕 #1866 【小程序】 增加提审素材上传接口请求执行器

* 🎨 重构规范小程序部分代码包结构

* 🎨 #1888【企业微信】补充完善OA审批回调事件消息部分字段缺失的问题

* 🆕 #1746: 【企业微信】第三方应用增加授权配置接口,同时增加向员工付款的接口

* 🎨 #1886 【小程序】创建直播间接口增加二维码地址字段

* 🔖 发布 4.0.0 正式版本

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>
Co-authored-by: cloudX <epdcgsi@163.com>
Co-authored-by: Boris <borisbao@users.noreply.github.com>
Co-authored-by: f00lish <f00lish@qq.com>
Co-authored-by: TomLiu <tomliuchangsha@hotmail.com>
Co-authored-by: giveme0101 <xiajun94@qq.com>
Co-authored-by: lmh <991564110@qq.com>
Co-authored-by: lmh <lmh@weiyian.com>
Co-authored-by: Dream2Land <346570926@qq.com>
Co-authored-by: amhere <songshiyu555@163.com>
Co-authored-by: sysong <sysong@chutianyun.gov.cn>
Co-authored-by: 静宏 <acvrock.cn@gmail.com>
Co-authored-by: spvycf <545997765@qq.com>
Co-authored-by: alucardxh <alucardxh@163.com>
Co-authored-by: jn老A <sytu_xww@163.com>
Co-authored-by: weiwei.xing <weiwei.xing@nplusgroup.com>
Co-authored-by: winter <winter4666@foxmail.com>
Co-authored-by: gentryhuang <gentryhuang.xw@gmail.com>
Co-authored-by: Kidwind <Kidwind@gmail.com>
Co-authored-by: zacks <zacksleo@gmail.com>
Co-authored-by: wcc1433 <37837522+wcc1433@users.noreply.github.com>
Co-authored-by: Pancras <coder.zpf@gmail.com>
Co-authored-by: vcpgfw <zhaopf@xtkg.com>
Co-authored-by: JoeWoo <xjoewoo@gmail.com>
Co-authored-by: 微同科技 <30375770+lipengjun92@users.noreply.github.com>
Co-authored-by: xworks <jzqlin@gmail.com>
Co-authored-by: GaoMinzhu <31923767+GaoMinzhu@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: huangxm129 <40385667+huangxm129@users.noreply.github.com>
Co-authored-by: ly8388 <49558207+ly8388@users.noreply.github.com>
Co-authored-by: yangyh22 <9944784+yangyh22@users.noreply.github.com>
Co-authored-by: Gyv12345 <gyv12345@163.com>
Co-authored-by: LinXiaoHuChong <louisquiet@gmail.com>
2020-11-29 23:54:57 +08:00
Binary Wang
bf92d03529 🔖 发布 4.0.0 正式版本 2020-11-29 23:50:40 +08:00
Binary Wang
b0440e0faa 🎨 #1886 【小程序】创建直播间接口增加二维码地址字段 2020-11-29 23:39:17 +08:00
LinXiaoHuChong
0e2186632a
🆕 #1746: 【企业微信】第三方应用增加授权配置接口,同时增加向员工付款的接口 2020-11-29 23:00:38 +08:00
Gyv12345
c0af379370
🎨 #1888【企业微信】补充完善OA审批回调事件消息部分字段缺失的问题 2020-11-27 09:52:55 +08:00
Binary Wang
ff064c8663 🎨 重构规范小程序部分代码包结构 2020-11-24 11:43:54 +08:00
yangyh22
e6a3e6efcc
🆕 #1866 【小程序】 增加提审素材上传接口请求执行器 2020-11-24 09:51:00 +08:00
f00lish
b4da5c9fe4
🆕 #1885 【微信支付】电商收付通增加资金账单下载的接口 2020-11-24 09:05:07 +08:00
Binary Wang
57ab245093 🎨 规范变量名 2020-11-21 21:13:03 +08:00
ly8388
1bac8f9774
🐛 #1883【公众号】修复卡券导入code接口错误的返回类型 2020-11-21 20:57:37 +08:00
Binary Wang
b351ef761c
🐛 修复字段错误问题 2020-11-17 15:09:08 +08:00
huangxm129
c80e77c047
🆕 #1873 【企业微信】第三方应用增加网页授权登陆获取访问用户身份和获取访问用户敏感信息的接口 2020-11-17 09:47:45 +08:00
dependabot[bot]
64d67bb42f
⬆️ Bump xstream
Bumps [xstream](https://github.com/x-stream/xstream) from 1.4.10-java7 to 1.4.13-java7.
- [Release notes](https://github.com/x-stream/xstream/releases)
- [Commits](https://github.com/x-stream/xstream/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-17 08:57:12 +08:00
Binary Wang
940f69a763
⬆️ 升级xstream版本 2020-11-16 17:52:42 +08:00
Binary Wang
384dd35b9a 🔖 发布 3.9.9.B 测试版本 2020-11-15 22:26:22 +08:00
Binary Wang
5986698d42 🎨 增加点单元测试示例代码 2020-11-15 22:18:15 +08:00
Binary Wang
6d556f8b1d 🎨 优化代码,部分类增加序列化接口实现 2020-11-14 15:22:01 +08:00
f00lish
30aca49ab9
🆕 #1868 【微信支付】增加通用上传图片接口,支持传入流和文件名参数 2020-11-13 12:59:49 +08:00
GaoMinzhu
c605330661
🆕 #1869 【小程序】增加管理直播间小助手的相关接口 2020-11-13 12:57:38 +08:00
xworks
a2074a4d39
🎨 #1867【企业微信】优化完善第三方应用的接入代码 2020-11-12 17:30:27 +08:00
微同科技
edc04cb0ae
🆕 #1863 【小程序】增加删除直播间、编辑直播间、获取直播间推流地址、获取直播间分享二维码等接口 2020-11-11 23:50:31 +08:00
JoeWoo
f301912154
🐛 #1864 【微信支付】WxPayConfig类的hashCode和equals方法移除 verifier 字段 2020-11-11 23:48:38 +08:00
winter
4af70b2c7c
🐛 #1861【微信支付】支付分后付费项目请求类的amount属性改为Integer,允许为空 2020-11-10 16:27:43 +08:00
Binary Wang
e9125872d1
📝 add more cases 2020-11-10 15:38:49 +08:00
Pancras
bf4c8c2064
🎨 修复out_trade_no 字段命名不规范问题
Co-authored-by: vcpgfw <zhaopf@xtkg.com>
2020-11-10 10:21:41 +08:00
Binary Wang
6037002c27 🔖 发布 3.9.8.B 测试版本 2020-11-08 17:08:50 +08:00
Binary Wang
3b439113ac 🎨 #1857 【企业微信】获取获取部门成员详情接口返回值增加第三方应用专有的open_userid字段 2020-11-08 15:12:52 +08:00
f00lish
9850151dfa
🐛 #1856 【微信支付】修复电商收付通查询退款状态的接口地址 2020-11-06 09:44:36 +08:00
Binary Wang
b693c5fb4e 🎨 补充完善单元测试 2020-11-05 12:17:19 +08:00
wcc1433
a2de4ac26c
🐛 #1852 修复个性化菜单clientPlatformType字段的反序列化问题 2020-11-05 12:11:07 +08:00
zacks
c235018374
🎨 Update javadoc for WxMaQrcodeService.java 2020-11-05 09:00:59 +08:00
Binary Wang
a3250c9865 🎨 #1849 企业微信外部联系人相关接口重构,优化重复代码,同时获取客户详情接口返回增加标签id字段 2020-11-04 17:36:46 +08:00
Binary Wang
474ce2aa7a 🎨 增加点注释 2020-11-04 16:24:07 +08:00
Kidwind
f2b423bcd7
🎨 #1848 刷卡支付接口响应结果类增加服务商调用时的返回字段 2020-11-03 17:30:16 +08:00
Binary Wang
7bca440f93 🔖 发布 3.9.7.B 测试版本 2020-11-01 09:22:55 +08:00
gentryhuang
e6a550dc70
🆕 #1831 生成小程序二维码的相关接口增加指定文件路径参数的重载方法 2020-11-01 08:59:59 +08:00
Binary Wang
aa26d6b2e4 🐛 #1828 修复企业微信第三方应用消息路由相关方法参数错误的问题 2020-10-31 20:53:39 +08:00
Binary Wang
c584cd07d2 🎨 #1834 微信会员卡基本信息类增加缺少字段 use_limit 2020-10-31 20:40:49 +08:00
Binary Wang
7fdfe2ce7e 🐛 #1824 微信支付修复分账回退接口结果错误码解析错误的问题 2020-10-31 20:36:11 +08:00
f00lish
73f30b1a82
🎨 #1832 微信支付电商收付通增加查询提现状态的接口 2020-10-31 16:47:21 +08:00
winter
7eb11c8799
🎨 #1827 微信支付分相关接口优化
1. 将原有请求模型类中一些基础数据类型改为对应的包装类,因为在用户没有显式set的情况下,这些基础数据类型序列化为json时也会以默认值的形式作为参数传到微信端,造成微信端返回错误。
2. 微信支付分相关的回调数据处理方法加上签名验证。
3. 增加方法授权/解除授权服务回调数据处理
2020-10-29 15:20:21 +08:00
Binary Wang
8bd95bcc22 🎨 重构部分包结构 2020-10-26 15:14:44 +08:00
Binary Wang
4654f42656 🔖 发布 3.9.6.B 测试版本 2020-10-25 15:32:50 +08:00
Binary Wang
3c7d470210 🆕 #1814 微信支付解析扫码支付回调通知增加签名类型的重载方法 2020-10-25 15:10:09 +08:00
Binary Wang
c9d8509a11
Update CONTRIBUTING.md 2020-10-25 14:55:38 +08:00
Binary Wang
fc6428c457 Merge branch 'master' into develop 2020-10-25 13:01:06 +08:00
jn老A
15e02d725c
🎨 #1820 优化更新getTicket方法,调整锁调用时机避免并发问题
* Fix:调整获取相关票据的锁处理时机

* Fix:更新票据,锁之后,再次检查是否有效,避免并发同时进入多次重置票据

Co-authored-by: weiwei.xing <weiwei.xing@nplusgroup.com>
2020-10-25 12:59:52 +08:00
Binary Wang
449bda4009 🎨 优化代码,实现序列化接口 2020-10-23 20:26:14 +08:00
Binary Wang
0bb343dfda
Update README.md 2020-10-23 11:08:12 +08:00
alucardxh
1849890b82
🆕 #1817 企业微信增加批量获取外部联系人详情的接口,同时修复外部联系人中listGroupChat参数失效问题 2020-10-23 11:03:52 +08:00
Binary Wang
08bb3991a3 🔖 发布 3.9.5.B 测试版本 2020-10-19 00:52:31 +08:00
Binary Wang
151004110f 🎨 优化部分代码,明确出错信息 2020-10-19 00:24:17 +08:00
Binary Wang
07bc5a5eac 🆕 微信开发平台模块增加OAuth2相关接口(网页授权、网页登录等)的实现 2020-10-19 00:18:15 +08:00
Binary Wang
77e3c8e3e8 🆕 #1806 开放平台增加第三方平台代公众号实现复用公众号资料快速创建小程序的接口 2020-10-17 21:40:01 +08:00
spvycf
7c9e2e4a12
🆕 #1725 微信支付分增加免确认模式(预授权方式)相关接口支持 2020-10-15 13:39:54 +08:00
cloudX
5599c0d833
🐛 修复字段错误
Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>
2020-10-13 15:08:55 +08:00
Binary Wang
c7b1abc796 🎨 优化部分代码,重构OAuth2网页授权、网页登录等相关接口,方便接入open模块 2020-10-12 11:17:04 +08:00
静宏
6cc5ebdcce
🎨 #1797 企业微信配置客户联系「联系我」方式接口返回增加二维码链接字段
新增联系我二维码链接,仅在scene为2时返回
2020-10-12 10:43:59 +08:00
Binary Wang
9c91aeba6e 🆕 #1686 微信公众号增加对话能力(原导购助手)部分接口,如修改顾问、删除顾问、获取顾问列表等 2020-10-07 20:00:59 +08:00
Binary Wang
6948044ab9 🆕 #1686 微信公众号增加对话能力(原导购助手)部分接口,如添加顾问、获取顾问信息等 2020-10-06 21:25:53 +08:00
Binary Wang
64402ab1de 🆕 #1675 企业微信增加更新、查询和删除日历的接口 2020-10-06 00:00:55 +08:00
Binary Wang
18f3f4001c 🎨 优化代码,提供toString方法,避免某些情况下出现的问题 2020-10-05 15:37:49 +08:00
Dream2Land
8929fc41ab 🎨 优化公众号Spring Boot Starter的redisTemplate注入等代码 2020-10-03 00:04:08 +08:00
amhere
8428270e67
🆕 #1793 企业微信添加应用管理的设置工作台自定义展示模块
Co-authored-by: sysong <sysong@chutianyun.gov.cn>
2020-09-30 12:52:52 +08:00
Binary Wang
cd0c63fde6
修改退款接口字段错误 (#1788)
* art:证书类配置读取优化调整

* new:电商收付通二级商户进件

* art:微信服务商配置优化

* new:jsapi合单支付

* new:合单支付

* new:电商收付通普通支付

* new:电商收付通支付回调处理

* new:电商收付通支付回调处理

* 电商收付通支付调整

* fix:电商收付通回调通知测试

* new:电商收付通合单支付、普通支付查询

* new:电商收付通商户、平台提现

* fix:命名统一调整

* new:分账查询、退款通知

* new:修改结算账户、退款查询

* fix:字段错误

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>
Co-authored-by: Binary Wang <binarywang@users.noreply.github.com>
2020-09-29 12:41:28 +08:00
f00lish
429f1706a4
🆕 #1789 微信支付电商收付通增加下载账单的接口 2020-09-29 12:40:11 +08:00
曾浩
9603199597 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-28 14:05:58 +08:00
曾浩
d248c0e868 fix:字段错误 2020-09-28 14:05:45 +08:00
Binary Wang
b797152199 🔖 发布 3.9.4.B 测试版本 2020-09-27 17:42:05 +08:00
Dream2Land
7e3e16da10
🎨 #1785 公众号 spring boot starter 模块增加接口自定义主机地址和redis sentinel的配置 2020-09-27 17:25:32 +08:00
曾浩
a28a17a76b Merge remote-tracking branch 'wechat/develop' into develop 2020-09-27 09:20:21 +08:00
Binary Wang
1d7344309a 🎨 优化代码 2020-09-26 16:21:02 +08:00
Binary Wang
5ecfaf7cd0 🆕 #1774 企业微信增加系统审批事件推送的事件常量 2020-09-26 15:39:40 +08:00
lmh
f212f02ee0
#1782 微信支付修复分账回退查询接口签名错误的问题
Co-authored-by: lmh <lmh@weiyian.com>
2020-09-26 15:19:29 +08:00
曾浩
f0f21e1432 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-25 09:43:43 +08:00
Binary Wang
17583a49a0 🎨 优化GraalProcessor代码 2020-09-24 14:54:54 +08:00
Binary Wang
32f72774fe 🎨 升级依赖jodd-http版本,并修复不兼容代码 2020-09-24 14:46:35 +08:00
Binary Wang
697a6809d5 🎨 WxMpMessageRouter增加构造方法 2020-09-24 14:34:23 +08:00
giveme0101
e0c995e1f8 🐛 #1777 XML工具类修复无法解析<ExtAttr><Item>这种节点数据的问题 2020-09-24 14:33:26 +08:00
曾浩
07edd5bc41 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-23 17:44:32 +08:00
cloudX
807ed7d0b5
🆕 #1775 微信支付电商收付通增加修改二级商户结算账户和退款查询的接口 2020-09-23 12:27:45 +08:00
曾浩
7df0e7508d new:修改结算账户、退款查询 2020-09-23 10:26:19 +08:00
曾浩
58ac339beb new:分账查询、退款通知 2020-09-22 21:05:51 +08:00
曾浩
3b4bb74ce7 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-22 13:31:12 +08:00
cloudX
5f0d1b320a
🆕 #1772 电商收付通增加支付结果查询和提现的接口 2020-09-22 12:21:00 +08:00
曾浩
203790064d fix:命名统一调整 2020-09-21 10:51:22 +08:00
曾浩
00bc9656b6 new:电商收付通商户、平台提现 2020-09-21 10:29:00 +08:00
曾浩
9b20c749ce new:电商收付通合单支付、普通支付查询 2020-09-21 09:53:54 +08:00
曾浩
aa2fe98895 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-20 17:19:24 +08:00
Binary Wang
020cd0aed4 🔖 发布 3.9.3.B 测试版本 2020-09-20 16:43:23 +08:00
Binary Wang
1598c61e56 🆕 #1675 企业微信增加创建日历的接口,以及相关回调事件消息通知的支持 2020-09-20 16:12:16 +08:00
Binary Wang
6713787bb9 🎨 优化企业微信群机器人发送消息的相关接口,提供无需提前设置webhookKey即可使用的重构方法 2020-09-20 15:27:16 +08:00
Binary Wang
489942a99b 🎨 #1755 完善补充第三方平台小程序相关的部分错误码 2020-09-20 14:58:04 +08:00
Binary Wang
cdda57d4e1 🎨 #1646 企业微信第三方应用(服务商)模块重构实现,并提供Router、Interceptor、Handler等接口 2020-09-20 14:23:59 +08:00
Binary Wang
e00320dd1c 🎨 优化部分代码 2020-09-20 00:33:48 +08:00
Binary Wang
7261f23689 🆕 #1767 企业微信外部联系人增加修改客户备注信息的接口 2020-09-20 00:09:40 +08:00
f00lish
115f910e3c
🆕 #1768 微信支付增加电商收付通完结分账和退款接口
* 微信收付通增加完结分账和退款接口
2020-09-18 14:07:03 +08:00
曾浩
5b606fddf4 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-17 10:45:44 +08:00
曾浩
60c63a51f1 fix:电商收付通回调通知测试 2020-09-17 10:45:30 +08:00
f00lish
b660bfd4a0
🐛 #1766 修复电商收付通请求分账结果类未添加相关注解的问题
* 微信收付通增加请求分账回退接口

* 修复请求分账结果未添加lombok注解
2020-09-17 09:35:20 +08:00
曾浩
e56289f4c8 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-15 20:02:20 +08:00
f00lish
7c10cdd078
🆕 #1764 微信支付电商收付通增加请求分账回退接口 2020-09-14 12:28:35 +08:00
曾浩
3fbeec4018 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-14 09:13:15 +08:00
Binary Wang
cc83bcb415 🔖 发布 3.9.2.B 测试版本 2020-09-13 10:11:14 +08:00
Binary Wang
37a009c790 🆕 #1723 企业微信增加查询应用消息发送统计的接口 2020-09-13 09:53:07 +08:00
f00lish
91d484f730
🆕 #1759 微信支付增加电商收付通请求分账接口
* 增加微信收付通请求分账接口
2020-09-13 09:28:43 +08:00
f00lish
6c31059020
🆕 #1758 微信支付增加电商收付通服务商和二级商户余额查询接口 2020-09-13 09:26:54 +08:00
Binary Wang
b15142a06c 🎨 #1747 微信支付分回调通知对象类增加缺失参数:回调摘要summary 2020-09-12 10:15:08 +08:00
Binary Wang
ef0b34bb92 🎨 #1753 小程序直播部分接口代码优化重构,对照官方文档补充新增参数 2020-09-12 10:08:20 +08:00
TomLiu
19b033c41f
🎨 #1756 解决wx-java-open-spring-boot-starter中Redisson实现缺少database设置的问题 2020-09-12 09:23:52 +08:00
曾浩
c2552def43 Merge remote-tracking branch 'wechat/develop' into develop 2020-09-11 14:48:03 +08:00
cloudX
efdf64eb6b
🎨 电商收付通支付接口调整
经测试小程序支付时不能使用服务商的appId签名,故增加方法返回微信接口返回的结果。
2020-09-11 13:49:41 +08:00
曾浩
34f0d99df1 电商收付通支付调整 2020-09-11 11:23:47 +08:00
曾浩
4f157b08ea Merge remote-tracking branch 'wechat/develop' into develop
# Conflicts:
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/CombineTransactionsNotifyResult.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/NotifyResponse.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/PartnerTransactionsNotifyResult.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/SignatureHeader.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/enums/TradeTypeEnum.java
2020-09-10 13:28:08 +08:00
Binary Wang
7bf811aa57 🎨 优化部分代码 2020-09-10 12:45:40 +08:00
f00lish
060576148b
🎨 #1752 微信支付电商收付通二级商户进件时店铺信息增加小程序appid字段 2020-09-10 12:38:52 +08:00
cloudX
6927eaa139
🆕 #1749 微信支付增加电商收付通支付回调处理相关方法
* new:电商收付通支付回调处理

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>
2020-09-10 12:34:32 +08:00
曾浩
c8fc670f52 new:电商收付通支付回调处理 2020-09-10 11:02:47 +08:00
曾浩
b8d9a157f3 Merge remote-tracking branch 'wechat/develop' into develop
# Conflicts:
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EcommerceService.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImpl.java
2020-09-10 11:02:31 +08:00
曾浩
f18c62b152 new:电商收付通支付回调处理 2020-09-10 11:00:33 +08:00
cloudX
935988530d
🆕 #1744 微信支付增加电商收付通-普通支付相关接口
* new:电商收付通普通支付

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>
2020-09-09 11:32:43 +08:00
曾浩
97409a7fbc new:电商收付通普通支付 2020-09-08 15:02:46 +08:00
曾浩
9f6051634a Merge remote-tracking branch 'wechat/develop' into develop 2020-09-08 13:15:53 +08:00
Binary Wang
35d7c3eee0
Update demo.md 2020-09-07 11:46:24 +08:00
Boris
dfec2e3aef
🎨 #1743 企业微信获取客户群详情接口增加unionId属性
获取客户群详情对象中 增加 unionId属性
2020-09-07 10:52:53 +08:00
Binary Wang
391fa2b831
Update demo.md 2020-09-07 10:40:09 +08:00
Binary Wang
e4661117ce
Update README.md 2020-09-05 10:19:33 +08:00
Binary Wang
e04eaf4389 🔖 发布 3.9.1.B 测试版本 2020-09-05 10:06:41 +08:00
Binary Wang
010b43194f 🎨 升级依赖的Spring Boot版本为最新,并优化部分代码 2020-09-05 09:30:39 +08:00
Binary Wang
07352d183c 🐛 #1738 修复企业微信创建用户接口自定义字段缺失的问题 2020-09-04 21:46:57 +08:00
Binary Wang
31ecd4d83d 🎨 优化代码,使用java8自带的Base64类 2020-09-04 21:45:36 +08:00
曾浩
541899a5af Merge remote-tracking branch 'wechat/develop' into develop 2020-09-04 09:54:36 +08:00
Binary Wang
53ad42e6ac 🎨 #1722 企业微信增加互联企业发送应用消息的接口,并重构消息相关类的包结构 2020-08-30 21:42:52 +08:00
Binary Wang
c01347cac6 🎨 优化企业微信消息发送接口代码,引入moco模拟测试组件,方便测试代码 2020-08-30 17:43:26 +08:00
Binary Wang
7cfabab628 🎨 优化重构并统一公众号和小程序的spring boot starter部分配置类和属性 2020-08-30 10:53:14 +08:00
Binary Wang
64f7adcc29 🎨 优化代码 2020-08-30 10:42:30 +08:00
曾浩
84b9b992b1 Merge remote-tracking branch 'wechat/develop' into develop 2020-08-30 08:57:06 +08:00
cloudX
6c490e3295
🎨 #1733 微信支付服务商配置优化,增加服务商合单支付接口
* art:微信服务商配置优化

* new:jsapi合单支付

* new:合单支付

Co-authored-by: 曾浩 <epdcgsi@dingtalk.com>
2020-08-29 21:20:21 +08:00
曾浩
e0d87ebe49 new:合单支付 2020-08-26 12:17:30 +08:00
曾浩
5db9706ba0 new:jsapi合单支付 2020-08-24 20:21:07 +08:00
曾浩
10e0ca568e art:微信服务商配置优化 2020-08-24 20:14:53 +08:00
曾浩
cee37531c7 Merge remote-tracking branch 'wechat/develop' into develop
# Conflicts:
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/ApplymentsRequest.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/ApplymentsResult.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/ApplymentsStatusResult.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EcommerceService.java
#	weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImpl.java
2020-08-24 13:43:47 +08:00
Binary Wang
a8901aa1f1
📝 update 2020-08-24 12:24:45 +08:00
Binary Wang
425b08245a Merge branch 'master' into develop 2020-08-24 00:52:02 +08:00
Binary Wang
33701efaf3
📝 更新版本信息 2020-08-24 00:50:05 +08:00
Binary Wang
a3ec26138c
Merge branch 'develop' into develop 2020-08-18 09:35:07 +08:00
曾浩
2b27ee9c9f new:电商收付通二级商户进件 2020-08-17 20:14:28 +08:00
曾浩
1812b233bb art:证书类配置读取优化调整 2020-08-17 13:32:42 +08:00
2532 changed files with 155001 additions and 25279 deletions

View File

@ -1,15 +0,0 @@
# EditorConfig: http://editorconfig.org/
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

View File

@ -1,19 +0,0 @@
强烈建议大家到 `github` 相关页面提交问题方便统一查询管理具体页面地址https://github.com/Wechat-Group/WxJava/issues
当然如果必须在这里提问,请务必按以下格式填写,谢谢配合~
# 提问前请确保阅读过项目首页说明以及wiki开发文档相关内容尤其是常见问题部分。完成内容后请务必移除包括本句在内的无用内容以免影响阅读谢谢合作~
# 另外如果确认属于bug而且已明确如何修复请参考贡献指南直接提交PR省的浪费时间在这里描述问题非常感谢配合
### 简要描述
__简单概括描述下你所遇到的问题。__
### 模块版本情况
* `WxJava` 模块名:
* `WxJava` 版本号:
### 详细描述
__尽量详细描述。请不要使用截图尽量使用文字描述代码直接贴上来日志则请附在后面所示区域。__
### 日志
__将日志放在 [`Pastebin`](https://paste.ubuntu.com/) 或者其他地方并将其url地址贴在这里__

4
.github/FUNDING.yml vendored
View File

@ -1,4 +0,0 @@
# These are supported funding model platforms
github: [binarywang]
custom: https://github.com/Wechat-Group/WxJava/blob/master/images/qrcodes/wepay.jpg?raw=true

View File

@ -1,24 +0,0 @@
---
name: Bug报告
about: 如果发现Bug请告诉我们我们会尽快修复
title: ''
labels: ''
assignees: ''
---
# 提问前请确保阅读过项目首页说明以及wiki开发文档相关内容尤其是常见问题部分。完成内容后请务必移除包括本句在内的无用内容以免影响阅读否则直接关闭谢谢合作~
# 另外如果确认属于bug而且已明确如何修复请参考贡献指南直接提交PR省的浪费时间在这里描述问题非常感谢配合
### 简要描述
__简单概括描述下你所遇到的问题。__
### 模块版本情况
* WxJava 模块名:
* WxJava 版本号:
### 详细描述
__尽量详细描述。请不要使用截图尽量使用文字描述代码直接贴上来日志则请附在后面所示区域。__
### 日志
__将日志放在 [pastebin](https://paste.ubuntu.com/) 或者其他地方并将其url地址贴在这里__

View File

@ -1,16 +0,0 @@
---
name: 请求添加新功能
about: 如果有什么新功能需要添加,请告诉我们
title: ''
labels: ''
assignees: ''
---
# 提问前请确保阅读过项目首页说明以及wiki开发文档相关内容完成内容后请务必移除包括本句在内的无用内容以免影响他人阅读否则直接关闭谢谢合作~
### 简要描述
### 官方文档地址
__请提供所需功能对应的微信官方文档地址以便进行确认。__

269
.gitignore vendored
View File

@ -1,52 +1,235 @@
*.class
test-output
### Gradle ###
.gradle
build/
# Package Files #
*.jar
*.war
*.ear
# Ignore Gradle GUI config
gradle-app.setting
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
target
bin
.project
.classpath
.settings
# Cache of project
.gradletasknamecache
sw-pom.xml
*.iml
test-config.xml
.idea
/.gradle/
/gradle/
*.bat
/gradlew
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
### Gradle Patch ###
**/build/
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
._*
.DS_Store
.AppleDouble
.LSOverride
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.vscode
.VolumeIcon.icns
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
/.sonar/
sonar-project.properties
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
!/.mvn/wrapper/maven-wrapper.jar
*.versionsBackup
# Generated files
.idea/**/contentModel.xml
# STS
.factorypath
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Intellij+iml ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij+iml Patch ###
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
.flattened-pom.xml
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint

16
.idea/checkstyle-idea.xml generated Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CheckStyle-IDEA" serialisationVersion="2">
<checkstyleVersion>10.22.0</checkstyleVersion>
<scanScope>JavaOnly</scanScope>
<copyLibs>true</copyLibs>
<option name="thirdPartyClasspath" />
<option name="activeLocationIds" />
<option name="locations">
<list>
<ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
<ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
</list>
</option>
</component>
</project>

18
.idea/compiler.xml generated Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="wechat-j-open" />
<module name="wechat-j-pay" />
<module name="wechat-j-work" />
<module name="wechat-j-common" />
<module name="wechat-j-mp" />
<module name="wechat-j-oa" />
</profile>
</annotationProcessing>
</component>
</project>

19
.idea/encodings.xml generated Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/mp/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/mp/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/oa/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/oa/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/open/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/open/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/pay/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/pay/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/work/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/work/src/main/resources" charset="UTF-8" />
</component>
</project>

30
.idea/jarRepositories.xml generated Normal file
View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="ossez-repo-releases" />
<option name="name" value="iSharkFly Private Releases" />
<option name="url" value="https://repo.isharkfly.com/repository/isharkfly-maven-releases/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.isharkfly.com/repository/maven/" />
</remote-repository>
<remote-repository>
<option name="id" value="ossez-repo-snapshots" />
<option name="name" value="iSharkFly Private Snapshots" />
<option name="url" value="https://repo.isharkfly.com/repository/isharkfly-maven-snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -1,18 +0,0 @@
language: java
jdk:
- openjdk8
script: "mvn clean package -DskipTests=true -Dcheckstyle.skip=true"
branches:
only:
- develop
cache:
directories:
- '$HOME/.m2/repository'
notifications:
email:
- binarywang@vip.qq.com

View File

@ -1,36 +0,0 @@
# 代码贡献指南
1. 首先非常欢迎和感谢对本项目发起Pull Request的同学。
1. **特别提示请务必在develop分支提交PRmaster分支目前仅是正式版的代码即发布正式版本后才会从develop分支进行合并。**
1. 本项目代码风格为使用2个空格代表一个Tab因此在提交代码时请注意一下否则很容易在IDE格式化代码后与原代码产生大量diff这样会给其他人阅读代码带来极大的困扰。
1. 为了便于设置本项目引入editorconfig支持请使用Eclipse的同学在贡献代码前安装相关插件而IntelliJ IDEA新版本自带支持如果没有可自行安装插件。
1. **提交代码前请检查代码是否已经格式化并且保证新增加或者修改的方法都有完整的参数说明而public方法必须拥有相应的单元测试并通过测试。**
1. 本项目可以采用两种方式接受代码贡献:
- 第一种就是基于[Git Flow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)开发流程因此在发起Pull Request的时候请选择develop分支详细步骤参考后文推荐使用此种方式贡献代码。
- ***暂停此种方式,请使用第一种***另外一种贡献代码的方式就是加入SDK Developers开发组前提是对自己的代码足够自信就可以申请加入加入之后可以随时直接提交代码但要注意对所做的修改或新增的代码进行单元测试保证提交代码没有明显问题。
### PR方式贡献代码步骤
* 在 GitHub 上 `fork` 到自己的仓库,如 `my_user/WxJava`,然后 `clone` 到本地,并设置用户信息。
```bash
$ git clone git@github.com:{your-github-username}/WxJava.git
$ cd WxJava
$ git config user.name "yourname"
$ git config user.email "your email"
```
* 修改代码后提交,并推送到自己的仓库。
```bash
$ #do some change on the content
$ git commit -am "Fix issue #1: change something"
$ git push
```
* 在 GitHub 网站上提交 Pull Request。
* 定期使用项目仓库内容更新自己仓库内容。
```bash
$ git remote add upstream https://github.com/Wechat-Group/WxJava
$ git fetch upstream
$ git checkout develop
$ git rebase upstream/develop
$ git push -f origin develop
```

66
LICENSE
View File

@ -1,53 +1,21 @@
Apache License
MIT License
Version 2.0, January 2004
Copyright (c) 2023 OSSEZ
http://www.apache.org/licenses/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of this License; and
You must cause any modified files to carry prominent notices stating that You changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

266
README.md
View File

@ -1,174 +1,150 @@
## WxJava - 微信开发 Java SDK开发工具包 [![LICENSE](https://img.shields.io/badge/License-Anti%20996-blue.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE) [![Badge](https://img.shields.io/badge/Link-996.icu-red.svg)](https://996.icu/#/zh_CN)
# WeChat-J - 微信开发 Java SDK
[![码云Gitee](https://gitee.com/binary/weixin-java-tools/badge/star.svg?theme=blue)](https://gitee.com/binary/weixin-java-tools)
[![Github](http://github-svg-buttons.herokuapp.com/star.svg?user=Wechat-Group&repo=WxJava&style=flat&background=1081C1)](https://github.com/Wechat-Group/WxJava)
[![GitHub release](https://img.shields.io/github/release/Wechat-Group/WxJava.svg)](https://github.com/Wechat-Group/WxJava/releases)
[![Maven Central](https://img.shields.io/maven-central/v/com.github.binarywang/wx-java.svg)](http://mvnrepository.com/artifact/com.github.binarywang/wx-java)
[![Build Status](https://travis-ci.org/Wechat-Group/WxJava.svg?branch=develop)](https://travis-ci.org/Wechat-Group/WxJava)
[![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/?from=WxJava-weixin-java-tools)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
#### 支持包括微信支付、开放平台、公众号、企业微信/企业号、小程序等微信功能的后端开发。
<table border="0">
<tbody>
<tr>
<td align="left" valign="middle">
<a href="http://mp.weixin.qq.com/mp/homepage?__biz=MzI3MzAwMzk4OA==&hid=1&sn=f31af3bf562b116b061c9ab4edf70b61&scene=18#wechat_redirect" target="_blank">
<img height="120" src="https://gitee.com/binary/weixin-java-tools/raw/master/images/qrcodes/mp.png">
<p align="center">
<a href="https://github.com/honeymoose">
<img height=85 src="https://avatars1.githubusercontent.com/u/45009982?s=200&v=4">
</a>
</td>
<td align="center" valign="middle">
<a href="https://cloud.tencent.com/redirect.php?redirect=1014&cps_key=a4c06ffe004dbcda44036daa1bf8f876&from=console" target="_blank">
<img height="120" src="https://gitee.com/binary/weixin-java-tools/raw/master/images/banners/tcloud.jpg">
</a>
</td>
<td align="center" valign="middle">
<a href="https://www.vultr.com/?ref=7888900-4F" target="_blank">
<img height="120" src="https://gitee.com/binary/weixin-java-tools/raw/master/images/banners/vultr.jpg">
</a>
</td>
<td align="center" valign="middle">
<a href="https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=7makzf5h" target="_blank">
<img height="120" src="https://gitee.com/binary/weixin-java-tools/raw/master/images/banners/aliyun.jpg">
</a>
</td>
</tr>
</tbody>
</table>
<br>This project builds by JDK 11 and OpenJ9 for JVM.
</p>
### 重要信息
1. **2020-05-24 发布 [【3.8.0正式版】](https://mp.weixin.qq.com/s/1YvMLcSOzhDHhIeX1bLRuQ)**
1. 新手重要提示本项目仅是一个SDK开发工具包未提供Web实现建议使用 `maven``gradle` 引用本项目即可使用本SDK提供的各种功能详情可参考 **[【Demo项目】](demo.md)** 或本项目中的部分单元测试代码;另外微信开发新手请务必阅读[【开发文档 Wiki 首页】](https://github.com/Wechat-Group/WxJava/wiki)的常见问题部分,可以少走很多弯路,节省不少时间。
1. 技术交流群想获得QQ群/微信群/钉钉企业群等信息的同学,请使用微信扫描上面的微信公众号二维码关注 `WxJava` 后点击相关菜单即可获取加入方式,同时也可以在微信中搜索 `weixin-java-tools``WxJava` 后选择正确的公众号进行关注该公众号会及时通知SDK相关更新信息并不定期分享微信Java开发相关技术知识
1. 付费QQ群**注意刚入群会有5分钟禁言稍等片刻即可正常发言** [![加入QQ群](https://img.shields.io/badge/QQ群-343954419-blue.svg)](http://shang.qq.com/wpa/qunwpa?idkey=731dc3e7ea31ebe25376cc1a791445468612c63fd0e9e05399b088ec81fd9e15) 或 [![加入QQ群](https://img.shields.io/badge/QQ群-343954419-blue.svg)](http://jq.qq.com/?_wv=1027&k=40lRskK),或者请自行搜索群号`343954419`进行添加;当然由于某种原因无法入群的,可关注公众号后获取其他群的加入方式;
1. 钉钉技术交流群: `30294972`
1. 微信开发新手或者Java开发新手在群内提问或新开Issue提问前请先阅读[【提问的智慧】](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md),并确保已查阅过 [【开发文档Wiki】](https://github.com/wechat-group/WxJava/wiki) ,避免浪费大家的宝贵时间;
1. 寻求帮助时需贴代码或大长串异常信息的,请利用 http://paste.ubuntu.com
* [社区和讨论 (community)](https://www.ossez.com/tag/wechat)
--------------------------------
### 其他说明
1. **阅读源码的同学请注意本SDK为简化代码编译时加入了`lombok`支持,如果不了解`lombok`的话,请先学习下相关知识,比如可以阅读[此文章](https://mp.weixin.qq.com/s/cUc-bUcprycADfNepnSwZQ)**
1. 如有新功能需求发现BUG或者由于微信官方接口调整导致的代码问题可以直接在[【Issues】](https://github.com/Wechat-Group/WxJava/issues)页提出issue便于讨论追踪问题
1. 如果需要贡献代码请务必在提交PR之前先仔细阅读[【代码贡献指南】](CONTRIBUTING.md),谢谢理解配合;
1. 本SDK要求的最低JDK版本是1.7还在使用JDK6的用户请参考[【此项目】]( https://github.com/binarywang/weixin-java-tools-for-jdk6) 而其他更早的JDK版本则需要自己改造实现。
1. [开源中国本项目的首页](https://www.oschina.net/p/weixin-java-tools-new),欢迎大家积极留言评分 🙂
1. SDK开发文档请查阅 [【开发文档Wiki】](https://github.com/wechat-group/WxJava/wiki),部分文档可能未能及时更新,如有发现,可以及时上报或者自行修改。
1. **如果本开发工具包对您有所帮助,欢迎对我们的努力进行肯定,可以直接前往[【托管于码云的项目首页】](http://gitee.com/binary/weixin-java-tools),在页尾部分找到“捐助”按钮进行打赏,多多益善 😄。非常感谢各位打赏和捐助的同学!**
1. 各个模块的Javadoc可以在线查看[weixin-java-miniapp](http://binary.ac.cn/weixin-java-miniapp-javadoc/)、[weixin-java-pay](http://binary.ac.cn/weixin-java-pay-javadoc/)、[weixin-java-mp](http://binary.ac.cn/weixin-java-mp-javadoc/)、[weixin-java-common](http://binary.ac.cn/weixin-java-common-javadoc/)、[weixin-java-cp](http://binary.ac.cn/weixin-java-cp-javadoc/)、[weixin-java-open](http://binary.ac.cn/weixin-java-open-javadoc/)
1. 本SDK项目在以下代码托管网站同步更新:
* 码云https://gitee.com/binary/weixin-java-tools
* GitHubhttps://github.com/wechat-group/WxJava
WeChat-J 开发使用的库。
---------------------------------
### Maven 引用方式
注意:最新版本(包括测试版)为 [![Maven Central](https://img.shields.io/maven-central/v/com.github.binarywang/wx-java.svg)](http://mvnrepository.com/artifact/com.github.binarywang/wx-java),以下为最新正式版。
我们旨在提供一个初始化的开发框架,能够让应用在使用 Spring Boot 框架的基础上让你的微信公众号快速接入微信平台。
# 项目说明
我们在网上找了一些微信相关的 SDK要不就是缺少维护要不就是集成了非常多的功能因我们的公众号希望能够尽量的自动化处理所以我们在已有的基础上进行了一些修改和整合。
## 必要的准备
因微信开发 Java SDK 的开发其实并不非常复杂,主要是通过 HTTP 发送请求并且将获得的返回数据进行一些处理返回对象就可以了。
我们需要调用微信的 HTTP 接口,所以我们需要在 Java 中使用一个 Http 客户端,在当前我们的环境中,我们只使用 OkHttp 来进行实现。
在老的项目中,可能不少人会使用 Apache 的 HttpClient 来进行实现,但因为 OkHttp 广泛的被使用在安卓的手机上,所以使用 OkHttp
会更加简便。
* [Retrofit 是什么](https://www.ossez.com/t/retrofit/14302)
* [RxJava 是什么](https://www.ossez.com/t/rxjava/14305)
* [微信测试平台获得测试账号](https://www.ossez.com/t/topic/14281)
### Maven 和依赖
当前我们还没有把正式版发布到仓库中,我们还在使用 0.0.1-SNAPSHOT 版本进行内部测试。
最好的版本就是下载我们的源代码后 Fork 到你本地,然后直接使用 Maven 来进行编译。
#### 微信公众号WeChat Java Official Account
模块名wechat-j-oa
```xml
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>(不同模块参考下文)</artifactId>
<version>3.8.0</version>
<groupId>com.ossez.wechat</groupId>
<artifactId>wechat-j-oa</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
```
- 微信小程序:`weixin-java-miniapp`
- 微信支付:`weixin-java-pay`
- 微信开放平台:`weixin-java-open`
- 公众号(包括订阅号和服务号):`weixin-java-mp`
- 企业号/企业微信:`weixin-java-cp`
#### 微信小程序WeChat Java Mini Programs
模块名wechat-j-mp
---------------------------------
### 版本说明
```xml
<details>
<summary>点此展开查看</summary>
<dependency>
<groupId>com.ossez.wechat</groupId>
<artifactId>wechat-j-mp</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
```
1. 本项目定为大约每两个月发布一次正式版(同时 `develop` 分支代码合并进入 `master` 分支),版本号格式为 `X.X.0`(如`2.1.0``2.2.0`遇到重大问题需修复会及时提交新版本欢迎大家随时提交Pull Request
1. BUG修复和新特性一般会先发布成小版本作为临时测试版本`3.6.8.B`即尾号不为0并添加B以区别于正式版代码仅存在于 `develop` 分支中;
1. 目前最新版本号为 [![Maven Central](https://img.shields.io/maven-central/v/com.github.binarywang/wx-java.svg)](http://mvnrepository.com/artifact/com.github.binarywang/wx-java) ,也可以通过访问链接 [【微信支付】](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.binarywang%22%20AND%20a%3A%22weixin-java-pay%22) 、[【微信小程序】](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.binarywang%22%20AND%20a%3A%22weixin-java-miniapp%22) 、[【公众号】](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.binarywang%22%20AND%20a%3A%22weixin-java-mp%22) 、[【企业微信】](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.binarywang%22%20AND%20a%3A%22weixin-java-cp%22)、[【开放平台】](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.binarywang%22%20AND%20a%3A%22weixin-java-open%22)
分别查看所有最新的版本。
#### 微信支付WeChat Java Pay
</details>
模块名wechat-j-pay
----------------------------------
### 使用案例
完整案例登记列表,请[【访问这里】](https://github.com/Wechat-Group/weixin-java-tools/issues/729)查看,欢迎登记更多的案例。
```xml
以下为部分案例列表:
<dependency>
<groupId>com.ossez.wechat</groupId>
<artifactId>wechat-j-pay</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
```
#### 开源项目:
- 基于微信公众号的签到、抽奖、发送弹幕程序https://github.com/workcheng/weiya
- XxPay聚合支付https://github.com/jmdhappy/xxpay-master
- 微同商城https://gitee.com/fuyang_lipengjun/platform
- 微信点餐系统https://github.com/sqmax/springboot-project
- 专注批量推送的小而美的工具https://github.com/rememberber/WePush
- yshop意象商城系统https://gitee.com/guchengwuyue/yshopmall
- wx-manage微信公众号管理项目https://github.com/niefy/wx-manage
- 基于若依开发的微信公众号管理系统https://gitee.com/joolun/JooLun-wx
#### 企业微信WeChat Java WeCom
#### 小程序:
- (京东)友家铺子,友家铺子店长版,京粉精选
- [喵星人贴吧助手(扫码关注)](http://p98ahz3tg.bkt.clouddn.com/miniappqrcode.jpg)
- 树懒揽书+
- 广廉快线,鹏城巴士等
- 当燃挑战、sportlight轻灵运动
- 360考试宝典
- 民医台
- 来一团商家版
- 史必达(史丹利)
- 嘀嗒云印
- 维沃吼吼
- 王朝社区(比亚迪新能源社区)
- 极吼吼手机上门回收换新
模块名wechat-j-work
```xml
#### 公众号:
- 中国电信上海网厅sh_189
- E答平台
- 宁夏生鲜365
- 通服货滴
- 神龙养车
- 沃音乐商务智能
- 光环云社群
- 手机排队
- [全民约跑健身便利店](http://www.oneminsport.com/)
- 民医台
- YshopMall
- 好行景区直通车以及全国40多个公众号
- 我奥篮球公众号
<dependency>
<groupId>com.ossez.wechat</groupId>
<artifactId>wechat-j-work</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
```
#### 企业号/企业微信:
- HTC企业微信
- 掌上史丹利
#### 微信开放平台WeChat Java Open
#### 其他:
- 高善人力资源
- 小猪餐餐
- 餐饮系统
- 微信公众号管理系统http://demo.joolun.com
- 锐捷网络Saleslink
模块名wechat-j-open
----------------------------------
### 贡献者列表
特别感谢参与贡献的所有同学,所有贡献者列表请在[此处](https://github.com/Wechat-Group/WxJava/graphs/contributors)查看,欢迎大家继续踊跃贡献代码!
<details>
<summary>点击此处展开查看贡献次数最多的几位同学</summary>
```xml
1. [chanjarster (Daniel Qian)](https://github.com/chanjarster)
1. [binarywang (Binary Wang)](https://github.com/binarywang)
1. [007gzs](https://github.com/007gzs)
1. [Silloy](https://github.com/silloy)
1. [mgcnrx11](https://github.com/mgcnrx11)
1. [yuanqixun](https://github.com/yuanqixun)
1. [kakotor](https://github.com/kakotor)
1. [aimilin6688 (Jonk)](https://github.com/aimilin6688)
1. [lkqm (Mario Luo)](https://github.com/lkqm)
1. [kareanyi (MillerLin)](https://github.com/kareanyi)
<dependency>
<groupId>com.ossez.wechat</groupId>
<artifactId>wechat-j-open</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
```
</details>
### 其他内容
### GitHub Stargazers over time
* 任何有关讨论,请访问 [社区](https://www.ossez.com/tag/wechat)您可以在这里提出功能需求Bug 修复,问题解答。
* 可以考虑使用 http://paste.ubuntu.com 来对你在提交问题的时候出现的为代码进行简化。
[![Stargazers over time](https://starchart.cc/Wechat-Group/WxJava.svg)](https://starchart.cc/Wechat-Group/WxJava)
### 框架和案例
如果你想登记你的项目,请[访问这里](https://www.ossez.com/t/wechat-j-demo/14303)。
同时,我们也提供了一些开发框架,能够让你直接检出项目就可以直接对微信 SDK 进行接入和测试。
* [公众号 Spring Boot 测试程序](https://github.com/honeymoose/WeChat-Official-Account-Spring)
# 联系方式
请使用下面的联系方式和我们联系。
* [社区和讨论](https://www.ossez.com/tag/chat-gpt)
| 联系方式名称 | 联系方式 |
|------------------|-----------------------------------------------|
| 电子邮件Email | [yhu@ossez.com](mailto:yhu@ossez.com) |
| QQ 或微信WeChat | 103899765 |
| QQ 交流群 | 15186112 |
| 社区论坛 Community | https://www.ossez.com/c/computer-technology/7 |
# 公众平台
我们建议您通过社区论坛来和我们进行沟通,请关注我们公众平台上的账号
## 微信公众号
![](https://cdn.ossez.com/img/cwikius/cwikius-qr-wechat-search-w400.png)
## 头条号
我们也在头条号上创建了我们的公众号,请扫描下面的 QR 关注我们的头条号。
![](https://cdn.ossez.com/img/cwikius/cwikus-qr-toutiao.png)
## 知乎
请关注我们的知乎https://www.zhihu.com/people/huyuchengus
# License
[WeChat-J is licensed under the MIT License](https://src.ossez.com/honeymoose/WeChat-J/src/branch/main/LICENSE)

186
common/pom.xml Normal file
View File

@ -0,0 +1,186 @@
<?xml version="1.0"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ossez.wechat</groupId>
<artifactId>wechat-j-common</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>com.ossez.wechat</groupId>
<artifactId>wechat-j</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<name>WeChat Java Common</name>
<description>The module is common for all other package</description>
<dependencies>
<dependency>
<groupId>org.jodd</groupId>
<artifactId>jodd-http</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.36</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-guava</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
<exclusions>
<exclusion>
<groupId>pull-parser</groupId>
<artifactId>pull-parser</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>com.github.jedis-lock</groupId>
<artifactId>jedis-lock</artifactId>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>native-image</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<annotationProcessors>
com.github.binarywang.wx.graal.GraalProcessor,lombok.launch.AnnotationProcessorHider$AnnotationProcessor,lombok.launch.AnnotationProcessorHider$ClaimingProcessor
</annotationProcessors>
<annotationProcessorPaths>
<path>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-graal</artifactId>
<version>${project.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.annotation;
package com.ossez.wechat.common.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@ -0,0 +1,32 @@
package com.ossez.wechat.common.api;
import com.ossez.wechat.common.model.WeChatAccessToken;
import com.ossez.wechat.common.model.WeChatApiDomainIp;
import com.ossez.wechat.common.model.req.NetworkCheck;
import com.ossez.wechat.common.model.req.QueryQuota;
import com.ossez.wechat.common.model.res.NetworkCheckResponse;
import com.ossez.wechat.common.model.res.QueryQuotaResponse;
import io.reactivex.Single;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface WeChatOfficialAccountApi {
@GET("/cgi-bin/token")
Single<WeChatAccessToken> getAccessToken(@Query("grant_type") String grantType, @Query("appid") String appId, @Query("secret") String secret);
@GET("/cgi-bin/get_api_domain_ip")
Single<WeChatApiDomainIp> getDomainIPs();
@POST("/cgi-bin/callback/check")
Single<NetworkCheckResponse> checkNetwork(@Body NetworkCheck request);
@POST("/cgi-bin/clear_quota")
Single<NetworkCheckResponse> clearQuota(@Body NetworkCheck request);
@POST("/cgi-bin/openapi/quota/get")
Single<QueryQuotaResponse> queryQuota(@Body QueryQuota request);
}

View File

@ -0,0 +1,26 @@
package com.ossez.wechat.common.api;
import com.ossez.wechat.common.model.WeChatAccessToken;
import com.ossez.wechat.common.model.WeChatApiDomainIp;
import com.ossez.wechat.common.model.WeChatOAuth2AccessToken;
import com.ossez.wechat.common.model.entity.WeChatOAuth2UserInfo;
import com.ossez.wechat.common.model.req.NetworkCheck;
import com.ossez.wechat.common.model.req.QueryQuota;
import com.ossez.wechat.common.model.res.NetworkCheckResponse;
import com.ossez.wechat.common.model.res.QueryQuotaResponse;
import io.reactivex.Single;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface WeChatOpenApi {
@GET("/sns/oauth2/access_token")
Single<WeChatOAuth2AccessToken> getAccessToken(@Query("grant_type") String grantType, @Query("appid") String appId, @Query("secret") String secret, @Query("code") String code);
@GET("/sns/userinfo")
Single<WeChatOAuth2UserInfo> getWeChatUserInfo(@Query("access_token") String accessToken, @Query("openid") String openId);
}

View File

@ -1,6 +1,6 @@
package me.chanjar.weixin.common.api;
package com.ossez.wechat.common.api;
import me.chanjar.weixin.common.error.WxErrorException;
import com.ossez.wechat.common.exception.WxErrorException;
/**
* WxErrorException处理器.

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.api;
package com.ossez.wechat.common.api;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@ -8,10 +8,12 @@ import java.util.concurrent.atomic.AtomicBoolean;
* <pre>
* 默认消息重复检查器.
* 将每个消息id保存在内存里每隔5秒清理已经过期的消息id每个消息id的过期时间是15秒
* 替换类WxMessageInMemoryDuplicateCheckerSingleton
* </pre>
*
* @author Daniel Qian
*/
@Deprecated
public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChecker {
/**
@ -61,9 +63,7 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec
if (this.backgroundProcessStarted.getAndSet(true)) {
return;
}
Thread t = new Thread(new Runnable() {
@Override
public void run() {
Thread t = new Thread(() -> {
try {
while (true) {
Thread.sleep(WxMessageInMemoryDuplicateChecker.this.clearPeriod);
@ -78,7 +78,6 @@ public class WxMessageInMemoryDuplicateChecker implements WxMessageDuplicateChec
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
t.setDaemon(true);
t.start();

View File

@ -0,0 +1,91 @@
package com.ossez.wechat.common.api;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @author jiangby
* @version 1.0
* <p>
* 消息去重记录消息ID首次出现时的时间戳
* 15S后定时任务触发时废除该记录消息ID
* </p>
* created on 2022/5/26 1:32
*/
@Slf4j
public class WxMessageInMemoryDuplicateCheckerSingleton implements WxMessageDuplicateChecker {
/**
* 一个消息ID在内存的过期时间15秒.
*/
private static final Long TIME_TO_LIVE = 15L;
/**
* 每隔多少周期检查消息ID是否过期5秒.
*/
private static final Long CLEAR_PERIOD = 5L;
/**
* 线程池
*/
private static final ScheduledThreadPoolExecutor SCHEDULED_THREAD_POOL_EXECUTOR = new ScheduledThreadPoolExecutor(1,
new ThreadFactoryBuilder().setNameFormat("wxMessage-memory-pool-%d").setDaemon(true).build(), new ThreadPoolExecutor.AbortPolicy());
/**
* 消息id->消息时间戳的map.
*/
private static final ConcurrentHashMap<String, Long> MSG_ID_2_TIMESTAMP = new ConcurrentHashMap<>();
static {
SCHEDULED_THREAD_POOL_EXECUTOR.scheduleAtFixedRate(() -> {
try {
Long now = System.currentTimeMillis();
MSG_ID_2_TIMESTAMP.entrySet().removeIf(entry -> now - entry.getValue() > TIME_TO_LIVE * 1000);
} catch (Exception ex) {
log.error("重复消息去重任务出现异常", ex);
}
}, 1, CLEAR_PERIOD, TimeUnit.SECONDS);
}
/**
* 私有化构造方法避免外部调用
*/
private WxMessageInMemoryDuplicateCheckerSingleton() {
}
/**
* 获取单例
*
* @return 单例对象
*/
public static WxMessageInMemoryDuplicateCheckerSingleton getInstance() {
return WxMessageInnerClass.CHECKER_SINGLETON;
}
/**
* 内部类实现单例
*/
private static class WxMessageInnerClass {
static final WxMessageInMemoryDuplicateCheckerSingleton CHECKER_SINGLETON = new WxMessageInMemoryDuplicateCheckerSingleton();
}
/**
* messageId是否重复
*
* @param messageId messageId
* @return 是否
*/
@Override
public boolean isDuplicate(String messageId) {
if (messageId == null) {
return false;
}
Long timestamp = MSG_ID_2_TIMESTAMP.putIfAbsent(messageId, System.currentTimeMillis());
return timestamp != null;
}
}

View File

@ -0,0 +1,15 @@
package com.ossez.wechat.common.bean;
/**
* 包含toJson()方法的接口.
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* created on 2020-10-05
*/
public interface ToJson {
/**
* 转换为json字符串
* @return json字符串
*/
String toJson();
}

View File

@ -1,9 +1,9 @@
package me.chanjar.weixin.common.bean;
package com.ossez.wechat.common.bean;
import java.io.Serializable;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
/**
* 卡券Api签名.

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.bean;
package com.ossez.wechat.common.bean;
import java.io.Serializable;

View File

@ -1,7 +1,7 @@
package me.chanjar.weixin.common.bean;
package com.ossez.wechat.common.bean;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
import java.util.ArrayList;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.imgproc;
package com.ossez.wechat.common.bean.imgproc;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
import java.util.List;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.imgproc;
package com.ossez.wechat.common.bean.imgproc;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
import java.util.List;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.imgproc;
package com.ossez.wechat.common.bean.imgproc;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
import java.util.List;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
@ -10,7 +10,7 @@ import java.io.Serializable;
* OCR身份证识别结果.
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* @date 2019-06-23
* created on 2019-06-23
*/
@Data
public class WxOcrIdCardResult implements Serializable {
@ -22,6 +22,12 @@ public class WxOcrIdCardResult implements Serializable {
private String name;
@SerializedName("id")
private String id;
@SerializedName("addr")
private String addr;
@SerializedName("gender")
private String gender;
@SerializedName("nationality")
private String nationality;
@SerializedName("valid_date")
private String validDate;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.bean.ocr;
package com.ossez.wechat.common.bean.ocr;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;

View File

@ -1,9 +1,9 @@
package me.chanjar.weixin.common.bean.result;
package com.ossez.wechat.common.bean.result;
import java.io.Serializable;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
/**
*

View File

@ -0,0 +1,39 @@
package com.ossez.wechat.common.bean.result;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import java.io.Serializable;
@Data
public class WxMinishopImageUploadCustomizeResult implements Serializable {
private String errcode;
private String errmsg;
private WxMinishopPicFileCustomizeResult imgInfo;
public static WxMinishopImageUploadCustomizeResult fromJson(String json) {
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
WxMinishopImageUploadCustomizeResult result = new WxMinishopImageUploadCustomizeResult();
result.setErrcode(jsonObject.get("errcode").getAsNumber().toString());
if (result.getErrcode().equals("0")) {
WxMinishopPicFileCustomizeResult picFileResult = new WxMinishopPicFileCustomizeResult();
JsonObject picObject = jsonObject.get("img_info").getAsJsonObject();
if (picObject.has("media_id")) {
picFileResult.setMediaId(picObject.get("media_id").getAsString());
}
if (picObject.has("temp_img_url")) {
picFileResult.setTempImgUrl(picObject.get("temp_img_url").getAsString());
}
result.setImgInfo(picFileResult);
}
return result;
}
@Override
public String toString() {
return WxGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,45 @@
package com.ossez.wechat.common.bean.result;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import java.io.Serializable;
@Data
public class WxMinishopImageUploadResult implements Serializable {
private static final long serialVersionUID = 330834334738622332L;
private String errcode;
private String errmsg;
private WxMinishopPicFileResult picFile;
public static WxMinishopImageUploadResult fromJson(String json) {
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
WxMinishopImageUploadResult result = new WxMinishopImageUploadResult();
result.setErrcode(jsonObject.get("errcode").getAsNumber().toString());
if (result.getErrcode().equals("0")) {
WxMinishopPicFileResult picFileResult = new WxMinishopPicFileResult();
JsonObject picObject = jsonObject.get("pic_file").getAsJsonObject();
JsonElement mediaId = picObject.get("media_id");
picFileResult.setMediaId(mediaId==null ? "" : mediaId.getAsString());
JsonElement payMediaId = picObject.get("pay_media_id");
picFileResult.setPayMediaId(payMediaId==null ? "" : payMediaId.getAsString());
JsonElement tempImgUrl = picObject.get("temp_img_url");
picFileResult.setTempImgUrl(tempImgUrl==null ? "" : tempImgUrl.getAsString());
result.setPicFile(picFileResult);
}
return result;
}
@Override
public String toString() {
return WxGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,11 @@
package com.ossez.wechat.common.bean.result;
import lombok.Data;
import java.io.Serializable;
@Data
public class WxMinishopPicFileCustomizeResult implements Serializable {
private String mediaId;
private String tempImgUrl;
}

View File

@ -0,0 +1,12 @@
package com.ossez.wechat.common.bean.result;
import lombok.Data;
import java.io.Serializable;
@Data
public class WxMinishopPicFileResult implements Serializable {
private String mediaId;
private String payMediaId;
private String tempImgUrl;
}

View File

@ -0,0 +1,19 @@
package com.ossez.wechat.common.bean.subscribemsg;
import lombok.Data;
import java.io.Serializable;
/**
* .
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* created on 2021-01-27
*/
@Data
public class CategoryData implements Serializable {
private static final long serialVersionUID = -5935548352317679892L;
private int id;
private String name;
}

View File

@ -0,0 +1,21 @@
package com.ossez.wechat.common.bean.subscribemsg;
import lombok.Data;
import java.io.Serializable;
/**
* .
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* created on 2021-01-27
*/
@Data
public class PubTemplateKeyword implements Serializable {
private static final long serialVersionUID = -1100641668859815647L;
private int kid;
private String name;
private String example;
private String rule;
}

View File

@ -0,0 +1,36 @@
package com.ossez.wechat.common.bean.subscribemsg;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author ArBing
*/
@Data
public class PubTemplateTitleListResult implements Serializable {
private static final long serialVersionUID = -7718911668757837527L;
private int count;
private List<TemplateItem> data;
public static PubTemplateTitleListResult fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, PubTemplateTitleListResult.class);
}
@Data
public static class TemplateItem implements Serializable {
private static final long serialVersionUID = 6888726696879905332L;
private Integer type;
private Integer tid;
private String categoryId;
private String title;
}
}

View File

@ -0,0 +1,22 @@
package com.ossez.wechat.common.bean.subscribemsg;
import lombok.Data;
import java.io.Serializable;
/**
* .
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* created on 2021-01-27
*/
@Data
public class TemplateInfo implements Serializable {
private static final long serialVersionUID = 6971785763573992264L;
private String priTmplId;
private String title;
private String content;
private String example;
private int type;
}

View File

@ -0,0 +1,227 @@
package com.ossez.wechat.common.config;
import com.ossez.wechat.common.model.WeChatAccessToken;
import com.ossez.wechat.common.enums.TicketType;
import com.ossez.wechat.common.util.http.apache.ApacheHttpClientBuilder;
import java.io.File;
import java.util.concurrent.locks.Lock;
/**
* 微信客户端配置存储.
*
* @author chanjarster
*/
public interface ConfigStorage {
/**
* Gets access token.
*
* @return the access token
*/
String getAccessToken();
/**
* Gets access token lock.
*
* @return the access token lock
*/
Lock getAccessTokenLock();
/**
* Is access token expired boolean.
*
* @return the boolean
*/
boolean isAccessTokenExpired();
/**
* 强制将access token过期掉.
*/
void expireAccessToken();
/**
* 应该是线程安全的.
*
* @param accessToken 要更新的WxAccessToken对象
*/
void updateAccessToken(WeChatAccessToken accessToken);
/**
* 应该是线程安全的.
*
* @param accessToken 新的accessToken值
* @param expiresInSeconds 过期时间以秒为单位
*/
void updateAccessToken(String accessToken, int expiresInSeconds);
/**
* Gets ticket.
*
* @param type the type
* @return the ticket
*/
String getTicket(TicketType type);
/**
* Gets ticket lock.
*
* @param type the type
* @return the ticket lock
*/
Lock getTicketLock(TicketType type);
/**
* Is ticket expired boolean.
*
* @param type the type
* @return the boolean
*/
boolean isTicketExpired(TicketType type);
/**
* 强制将ticket过期掉.
*
* @param type the type
*/
void expireTicket(TicketType type);
/**
* 更新ticket.
* 应该是线程安全的
*
* @param type ticket类型
* @param ticket 新的ticket值
* @param expiresInSeconds 过期时间以秒为单位
*/
void updateTicket(TicketType type, String ticket, int expiresInSeconds);
String getOpenAppId();
String getOpenSecret();
/**
* Gets app id.
*
* @return the app id
*/
String getAppId();
/**
* Gets secret.
*
* @return the secret
*/
String getSecret();
/**
* Gets token.
*
* @return the token
*/
String getToken();
/**
* Gets aes key.
*
* @return the aes key
*/
String getAesKey();
/**
* Gets template id.
*
* @return the template id
*/
String getTemplateId();
/**
* Gets expires time.
*
* @return the expires time
*/
long getExpiresTime();
/**
* Gets oauth 2 redirect uri.
*
* @return the oauth 2 redirect uri
*/
String getOauth2redirectUri();
/**
* Gets http proxy host.
*
* @return the http proxy host
*/
String getHttpProxyHost();
/**
* Gets http proxy port.
*
* @return the http proxy port
*/
int getHttpProxyPort();
/**
* Gets http proxy username.
*
* @return the http proxy username
*/
String getHttpProxyUsername();
/**
* Gets http proxy password.
*
* @return the http proxy password
*/
String getHttpProxyPassword();
/**
* http 请求重试间隔
* <pre>
* {@link BaseWeChatOfficialAccountServiceImpl#setRetrySleepMillis(int)}
* </pre>
*/
int getRetrySleepMillis();
/**
* http 请求最大重试次数
* <pre>
* {@link BaseWeChatOfficialAccountServiceImpl#setMaxRetryTimes(int)}
* </pre>
*/
int getMaxRetryTimes();
/**
* Gets tmp dir file.
*
* @return the tmp dir file
*/
File getTmpDirFile();
/**
* http client builder.
*
* @return ApacheHttpClientBuilder apache http client builder
*/
ApacheHttpClientBuilder getApacheHttpClientBuilder();
/**
* 是否自动刷新token.
*
* @return the boolean
*/
boolean autoRefreshToken();
/**
* 得到微信接口地址域名部分的自定义设置信息.
*
* @return the host config
*/
WxMpHostConfig getHostConfig();
/**
* 设置微信接口地址域名部分的自定义设置信息.
*
* @param hostConfig host config
*/
void setHostConfig(WxMpHostConfig hostConfig);
}

View File

@ -1,12 +1,9 @@
package me.chanjar.weixin.mp.config.impl;
package com.ossez.wechat.common.config;
import lombok.Data;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.enums.TicketType;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
import me.chanjar.weixin.mp.bean.WxMpHostConfig;
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import com.ossez.wechat.common.model.WeChatAccessToken;
import com.ossez.wechat.common.enums.TicketType;
import com.ossez.wechat.common.util.http.apache.ApacheHttpClientBuilder;
import java.io.File;
import java.io.Serializable;
@ -19,9 +16,11 @@ import java.util.concurrent.locks.ReentrantLock;
* @author chanjarster
*/
@Data
public class WxMpDefaultConfigImpl implements WxMpConfigStorage, Serializable {
public class DefaultConfigStorage implements ConfigStorage, Serializable {
private static final long serialVersionUID = -6646519023303395185L;
protected volatile String openAppId;
protected volatile String openSecret;
protected volatile String appId;
protected volatile String secret;
protected volatile String token;
@ -37,6 +36,9 @@ public class WxMpDefaultConfigImpl implements WxMpConfigStorage, Serializable {
protected volatile String httpProxyUsername;
protected volatile String httpProxyPassword;
protected volatile int retrySleepMillis = 1000;
protected volatile int maxRetryTimes = 5;
protected volatile String jsapiTicket;
protected volatile long jsapiTicketExpiresTime;
@ -63,7 +65,7 @@ public class WxMpDefaultConfigImpl implements WxMpConfigStorage, Serializable {
}
@Override
public synchronized void updateAccessToken(WxAccessToken accessToken) {
public synchronized void updateAccessToken(WeChatAccessToken accessToken) {
updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
}
@ -173,10 +175,6 @@ public class WxMpDefaultConfigImpl implements WxMpConfigStorage, Serializable {
}
}
@Override
public String toString() {
return WxMpGsonBuilder.create().toJson(this);
}
@Override
public boolean autoRefreshToken() {

View File

@ -0,0 +1,45 @@
package com.ossez.wechat.common.config;
import com.ossez.wechat.common.config.DefaultConfigStorage;
import lombok.Data;
import com.ossez.wechat.common.model.WeChatAccessToken;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author Brayden Wong
* created on 2021/1/16
* 提供accesstoken保存在concurrenthashmap中的实现支持高并发仅限于单机部署
*/
public class MapConfigStorage extends DefaultConfigStorage {
private static final long serialVersionUID = 5311395137835650104L;
private static final ConcurrentHashMap<String, String> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>(1);
private static final String MAP_KEY = "access_token";
@Override
public String getAccessToken() {
return CONCURRENT_HASH_MAP.get(MAP_KEY);
}
@Override
public void setAccessToken(String accessToken) {
CONCURRENT_HASH_MAP.put(MAP_KEY, accessToken);
}
@Override
public void updateAccessToken(WeChatAccessToken accessToken) {
updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
}
@Override
public void updateAccessToken(String accessToken, int expiresInSeconds) {
CONCURRENT_HASH_MAP.put(MAP_KEY, accessToken);
this.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L;
}
}

View File

@ -0,0 +1,98 @@
package com.ossez.wechat.common.config;
import com.ossez.wechat.common.config.DefaultConfigStorage;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.ossez.wechat.common.enums.TicketType;
import com.ossez.wechat.common.redis.WxRedisOps;
import java.util.concurrent.TimeUnit;
/**
* 基于Redis的微信配置provider.
*
* <pre>
* 使用说明本实现仅供参考并不完整
* 比如为减少项目依赖未加入redis分布式锁的实现如有需要请自行实现
* </pre>
*
* @author nickwong
*/
public class RedisConfigStorage extends DefaultConfigStorage {
private static final long serialVersionUID = -988502871997239733L;
private static final String ACCESS_TOKEN_KEY_TPL = "%s:access_token:%s";
private static final String TICKET_KEY_TPL = "%s:ticket:key:%s:%s";
private static final String LOCK_KEY_TPL = "%s:lock:%s:";
private final WxRedisOps redisOps;
private final String keyPrefix;
private String accessTokenKey;
private String lockKey;
public RedisConfigStorage(WxRedisOps redisOps, String keyPrefix) {
this.redisOps = redisOps;
this.keyPrefix = keyPrefix;
}
/**
* 每个公众号生成独有的存储key.
*/
@Override
public void setAppId(String appId) {
super.setAppId(appId);
this.accessTokenKey = String.format(ACCESS_TOKEN_KEY_TPL, this.keyPrefix, appId);
this.lockKey = String.format(LOCK_KEY_TPL, this.keyPrefix, appId);
accessTokenLock = this.redisOps.getLock(lockKey.concat("accessTokenLock"));
jsapiTicketLock = this.redisOps.getLock(lockKey.concat("jsapiTicketLock"));
sdkTicketLock = this.redisOps.getLock(lockKey.concat("sdkTicketLock"));
cardApiTicketLock = this.redisOps.getLock(lockKey.concat("cardApiTicketLock"));
}
private String getTicketRedisKey(TicketType type) {
return String.format(TICKET_KEY_TPL, this.keyPrefix, appId, type.getCode());
}
@Override
public String getAccessToken() {
return redisOps.getValue(this.accessTokenKey);
}
@Override
public boolean isAccessTokenExpired() {
Long expire = redisOps.getExpire(this.accessTokenKey);
return expire == null || expire < 2;
}
@Override
public synchronized void updateAccessToken(String accessToken, int expiresInSeconds) {
redisOps.setValue(this.accessTokenKey, accessToken, expiresInSeconds - 200, TimeUnit.SECONDS);
}
@Override
public void expireAccessToken() {
redisOps.expire(this.accessTokenKey, 0, TimeUnit.SECONDS);
}
@Override
public String getTicket(TicketType type) {
return redisOps.getValue(this.getTicketRedisKey(type));
}
@Override
public boolean isTicketExpired(TicketType type) {
return redisOps.getExpire(this.getTicketRedisKey(type)) < 2;
}
@Override
public synchronized void updateTicket(TicketType type, String jsapiTicket, int expiresInSeconds) {
redisOps.setValue(this.getTicketRedisKey(type), jsapiTicket, expiresInSeconds - 200, TimeUnit.SECONDS);
}
@Override
public void expireTicket(TicketType type) {
redisOps.expire(this.getTicketRedisKey(type), 0, TimeUnit.SECONDS);
}
}

View File

@ -0,0 +1,68 @@
package com.ossez.wechat.common.config;
import com.ossez.wechat.common.constant.WeChatConstant;
/**
* 微信接口地址域名部分的自定义设置信息.
*/
public class WxMpHostConfig {
/**
* 对应于https://api.weixin.qq.com
*/
private String apiHost;
/**
* 对应于https://open.weixin.qq.com
*/
private String openHost;
/**
* 对应于https://mp.weixin.qq.com
*/
private String mpHost;
public static String buildUrl(WxMpHostConfig hostConfig, String prefix, String path) {
if (hostConfig == null) {
return prefix + path;
}
if (hostConfig.getApiHost() != null && prefix.equals(WeChatConstant.ENDPOINT_WECHAT)) {
return hostConfig.getApiHost() + path;
}
if (hostConfig.getMpHost() != null && prefix.equals(WeChatConstant.ENDPOINT_MP)) {
return hostConfig.getMpHost() + path;
}
if (hostConfig.getOpenHost() != null && prefix.equals(WeChatConstant.ENDPOINT_OPEN)) {
return hostConfig.getOpenHost() + path;
}
return prefix + path;
}
public String getApiHost() {
return apiHost;
}
public void setApiHost(String apiHost) {
this.apiHost = apiHost;
}
public String getOpenHost() {
return openHost;
}
public void setOpenHost(String openHost) {
this.openHost = openHost;
}
public String getMpHost() {
return mpHost;
}
public void setMpHost(String mpHost) {
this.mpHost = mpHost;
}
}

View File

@ -0,0 +1,16 @@
package com.ossez.wechat.common.constant;
import com.google.common.net.MediaType;
/**
* HttpClient send request the type constant.
* Because okHttp need to use MediaType to construct object, but if we use guava MediaType, the two package will get conflict
* at the same class.
* <p>
* So, we get MediaType String first before we convert to okHttp MediaType.
*
* @author YuCheng Hu
*/
public final class HttpClientMediaType {
public static final String APPLICATION_JSON = MediaType.JSON_UTF_8.toString();
}

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.mp.constant;
package com.ossez.wechat.common.constant;
/**
* <pre>
@ -8,7 +8,7 @@ package me.chanjar.weixin.mp.constant;
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public class WxMpEventConstants {
public class OfficialAccountEventConstants {
/**
* 门店审核事件.
*/
@ -141,4 +141,14 @@ public class WxMpEventConstants {
public static final String CLOUD_INVOICE_INVOICERESULT_EVENT = "cloud_invoice_invoiceresult_event";
}
/**
* 对话助手相关事件
*/
public static class Guide {
/**
* 顾问邀请结果通知事件.
*/
public static final String GUIDE_INVITE_RESULT_EVENT = "guide_invite_result_event";
}
}

View File

@ -0,0 +1,5 @@
package com.ossez.wechat.common.constant;
public class WeChatApiParameter {
public static final String ACCESS_TOKEN_GRANT_TYPE_CLIENT_CREDENTIAL = "client_credential";
}

View File

@ -0,0 +1,556 @@
package com.ossez.wechat.common.constant;
import com.ossez.wechat.common.enums.WeChatErrorCode;
import java.util.*;
/**
* The constant of WeChat
*
* @author YuCheng Hu
*/
public class WeChatConstant {
public static final String ENDPOINT_WECHAT = "https://api.weixin.qq.com";
public static final String ENDPOINT_MP = "https://mp.weixin.qq.com";
public static final String ENDPOINT_OPEN = "https://open.weixin.qq.com";
/**
* access_token 相关错误代码
* <pre>
* 发生以下情况时尝试刷新access_token
* 40001 获取access_token时AppSecret错误或者access_token无效
* 42001 access_token超时
* 40014 不合法的access_token请开发者认真比对access_token的有效性如是否过期或查看是否正在为恰当的公众号调用接口
* </pre>
*/
public static final EnumSet<WeChatErrorCode> ACCESS_TOKEN_ERROR_CODES_SET = EnumSet.of(WeChatErrorCode.CODE_40001, WeChatErrorCode.CODE_40014, WeChatErrorCode.CODE_42001);
@Deprecated
public static final List<Integer> ACCESS_TOKEN_ERROR_CODES = Arrays.asList(WeChatErrorCode.CODE_40001.getCode(),
WeChatErrorCode.CODE_40014.getCode(), WeChatErrorCode.CODE_42001.getCode());
/**
* 微信推送过来的消息的类型和发送给微信xml格式消息的消息类型.
*/
public static class XmlMsgType {
public static final String TEXT = "text";
public static final String IMAGE = "image";
public static final String VOICE = "voice";
public static final String SHORTVIDEO = "shortvideo";
public static final String VIDEO = "video";
public static final String NEWS = "news";
public static final String MUSIC = "music";
public static final String LOCATION = "location";
public static final String LINK = "link";
public static final String EVENT = "event";
public static final String DEVICE_TEXT = "device_text";
public static final String DEVICE_EVENT = "device_event";
public static final String DEVICE_STATUS = "device_status";
public static final String HARDWARE = "hardware";
public static final String TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service";
public static final String UPDATE_TASKCARD = "update_taskcard";
public static final String UPDATE_BUTTON = "update_button";
}
/**
* 主动发送消息(即客服消息)的消息类型.
*/
public static class MsgType {
/**
* 消息类型:
* text(文本)
* image(图片)
* voice(语音)
* video(视频)
* music(音乐)
* news(图文消息 - 点击跳转到外链)
* mpnews(图文消息 - 点击跳转到图文消息页面)
* wxcard(卡券)
* miniprogrampage(小程序)
* markdown(目前仅支持markdown语法的子集微工作台原企业号不支持展示markdown消息)
* file(发送文件 - CP专用)
* textcard(文本卡片消息 - CP专用)
* wxcard(卡券消息)
*/
public static final String TEXT = "text";
public static final String IMAGE = "image";
public static final String VOICE = "voice";
public static final String VIDEO = "video";
public static final String MUSIC = "music";
public static final String NEWS = "news";
public static final String MPNEWS = "mpnews";
public static final String MARKDOWN = "markdown";
public static final String FILE = "file";
public static final String TEXTCARD = "textcard";
public static final String WXCARD = "wxcard";
/**
* 转发到客服的消息.
*/
public static final String TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service";
/**
* 小程序卡片(要求小程序与公众号已关联).
*/
public static final String MINIPROGRAMPAGE = "miniprogrampage";
/**
* 任务卡片消息.
*/
public static final String TASKCARD = "taskcard";
/**
* 菜单消息.
*/
public static final String MSGMENU = "msgmenu";
/**
* 小程序通知消息.
*/
public static final String MINIPROGRAM_NOTICE = "miniprogram_notice";
/**
* 模板卡片消息.
*/
public static final String TEMPLATE_CARD = "template_card";
/**
* 发送图文消息点击跳转到图文消息页面使用通过 发布 系列接口得到的 article_id(草稿箱功能上线后不再支持客服接口中带 media_id mpnews 类型的图文消息)
*/
public static final String MP_NEWS_ARTICLE = "mpnewsarticle";
}
/**
* 发送学校通知类型
* https://developer.work.weixin.qq.com/document/path/92321
*/
public static class SchoolContactMsgType {
/**
* 文本消息.
*/
public static final String TEXT = "text";
/**
* 图片消息.
*/
public static final String IMAGE = "image";
/**
* 语音消息.
*/
public static final String VOICE = "voice";
/**
* 视频消息.
*/
public static final String VIDEO = "video";
/**
* 文件消息
*/
public static final String FILE = "file";
/**
* 图文消息
*/
public static final String NEWS = "news";
/**
* 图文消息mpnews
*/
public static final String MPNEWS = "mpnews";
/**
* 小程序消息
*/
public static final String MINIPROGRAM = "miniprogram";
}
/**
* 企业微信模板卡片消息的卡片类型
*/
public static class TemplateCardType {
/**
* 文本通知型卡片
*/
public static final String TEXT_NOTICE = "text_notice";
/**
* 图文展示型卡片
*/
public static final String NEWS_NOTICE = "news_notice";
/**
* 按钮交互型卡片
*/
public static final String BUTTON_INTERACTION = "button_interaction";
/**
* 投票选择型卡片
*/
public static final String VOTE_INTERACTION = "vote_interaction";
/**
* 多项选择型卡片
*/
public static final String MULTIPLE_INTERACTION = "multiple_interaction";
}
/**
* 表示是否是保密消息0表示否1表示是默认0.
*/
public static class KefuMsgSafe {
public static final String NO = "0";
public static final String YES = "1";
}
/**
* 群发消息的消息类型.
*/
public static class MassMsgType {
public static final String MPNEWS = "mpnews";
public static final String TEXT = "text";
public static final String VOICE = "voice";
public static final String IMAGE = "image";
public static final String IMAGES = "images";
public static final String MPVIDEO = "mpvideo";
}
/**
* 群发消息后微信端推送给服务器的反馈消息.
*/
public static class MassMsgStatus {
public static final String SEND_SUCCESS = "send success";
public static final String SEND_FAIL = "send fail";
public static final String ERR_10001 = "err(10001)";
public static final String ERR_20001 = "err(20001)";
public static final String ERR_20004 = "err(20004)";
public static final String ERR_20002 = "err(20002)";
public static final String ERR_20006 = "err(20006)";
public static final String ERR_20008 = "err(20008)";
public static final String ERR_20013 = "err(20013)";
public static final String ERR_22000 = "err(22000)";
public static final String ERR_21000 = "err(21000)";
public static final String ERR_30001 = "err(30001)";
public static final String ERR_30002 = "err(30002)";
public static final String ERR_30003 = "err(30003)";
public static final String ERR_40001 = "err(40001)";
public static final String ERR_40002 = "err(40002)";
/**
* 群发反馈消息代码所对应的文字描述.
*/
public static final Map<String, String> STATUS_DESC = new HashMap<>();
static {
STATUS_DESC.put(SEND_SUCCESS, "发送成功");
STATUS_DESC.put(SEND_FAIL, "发送失败");
STATUS_DESC.put(ERR_10001, "涉嫌广告");
STATUS_DESC.put(ERR_20001, "涉嫌政治");
STATUS_DESC.put(ERR_20004, "涉嫌社会");
STATUS_DESC.put(ERR_20002, "涉嫌色情");
STATUS_DESC.put(ERR_20006, "涉嫌违法犯罪");
STATUS_DESC.put(ERR_20008, "涉嫌欺诈");
STATUS_DESC.put(ERR_20013, "涉嫌版权");
STATUS_DESC.put(ERR_22000, "涉嫌互推_互相宣传");
STATUS_DESC.put(ERR_21000, "涉嫌其他");
STATUS_DESC.put(ERR_30001, "原创校验出现系统错误且用户选择了被判为转载就不群发");
STATUS_DESC.put(ERR_30002, "原创校验被判定为不能群发");
STATUS_DESC.put(ERR_30003, "原创校验被判定为转载文且用户选择了被判为转载就不群发");
STATUS_DESC.put(ERR_40001, "管理员拒绝");
STATUS_DESC.put(ERR_40002, "管理员30分钟内无响应超时");
}
}
/**
* 微信端推送过来的事件类型.
*/
public static class EventType {
public static final String SUBSCRIBE = "subscribe";
public static final String UNSUBSCRIBE = "unsubscribe";
public static final String SCAN = "SCAN";
public static final String LOCATION = "LOCATION";
public static final String CLICK = "CLICK";
public static final String VIEW = "VIEW";
public static final String MASS_SEND_JOB_FINISH = "MASSSENDJOBFINISH";
/**
* 扫码推事件的事件推送
*/
public static final String SCANCODE_PUSH = "scancode_push";
/**
* 扫码推事件且弹出消息接收中提示框的事件推送.
*/
public static final String SCANCODE_WAITMSG = "scancode_waitmsg";
/**
* 弹出系统拍照发图的事件推送.
*/
public static final String PIC_SYSPHOTO = "pic_sysphoto";
/**
* 弹出拍照或者相册发图的事件推送.
*/
public static final String PIC_PHOTO_OR_ALBUM = "pic_photo_or_album";
/**
* 弹出微信相册发图器的事件推送.
*/
public static final String PIC_WEIXIN = "pic_weixin";
/**
* 弹出地理位置选择器的事件推送.
*/
public static final String LOCATION_SELECT = "location_select";
/**
* 授权用户资料变更事件
* 1 当部分用户的资料存在风险时平台会对用户资料进行清理并通过消息推送服务器通知最近30天授权过的公众号开发者我们建议开发者留意响应该事件及时主动更新或清理用户的头像及昵称降低风险
* 2 当用户撤回授权信息时平台会通过消息推送服务器通知给公众号开发者请开发者注意及时删除用户信息
*/
public static final String USER_INFO_MODIFIED = "user_info_modified";
/**
* 用户撤回授权事件
*/
public static final String USER_AUTHORIZATION_REVOKE = "user_authorization_revoke";
/**
* 群发模板回调事件
*/
public static final String TEMPLATE_SEND_JOB_FINISH = "TEMPLATESENDJOBFINISH";
/**
* 微信小店 订单付款通知.
*/
public static final String MERCHANT_ORDER = "merchant_order";
/**
* 卡券事件卡券通过审核
*/
public static final String CARD_PASS_CHECK = "card_pass_check";
/**
* 卡券事件卡券未通过审核
*/
public static final String CARD_NOT_PASS_CHECK = "card_not_pass_check";
/**
* 卡券事件用户领取卡券
*/
public static final String CARD_USER_GET_CARD = "user_get_card";
/**
* 卡券事件用户转赠卡券
*/
public static final String CARD_USER_GIFTING_CARD = "user_gifting_card";
/**
* 异步安全校验事件
*/
public static final String WXA_MEDIA_CHECK = "wxa_media_check";
/**
* 卡券事件用户核销卡券
*/
public static final String CARD_USER_CONSUME_CARD = "user_consume_card";
/**
* 卡券事件用户通过卡券的微信买单完成时推送
*/
public static final String CARD_USER_PAY_FROM_PAY_CELL = "user_pay_from_pay_cell";
/**
* 卡券事件用户提交会员卡开卡信息
*/
public static final String CARD_SUBMIT_MEMBERCARD_USER_INFO = "submit_membercard_user_info";
/**
* 卡券事件用户打开查看卡券
*/
public static final String CARD_USER_VIEW_CARD = "user_view_card";
/**
* 卡券事件用户删除卡券
*/
public static final String CARD_USER_DEL_CARD = "user_del_card";
/**
* 卡券事件用户在卡券里点击查看公众号进入会话时需要用户已经关注公众号
*/
public static final String CARD_USER_ENTER_SESSION_FROM_CARD = "user_enter_session_from_card";
/**
* 卡券事件当用户的会员卡积分余额发生变动时
*/
public static final String CARD_UPDATE_MEMBER_CARD = "update_member_card";
/**
* 卡券事件当某个card_id的初始库存数大于200且当前库存小于等于100时用户尝试领券会触发发送事件给商户事件每隔12h发送一次
*/
public static final String CARD_SKU_REMIND = "card_sku_remind";
/**
* 卡券事件当商户朋友的券券点发生变动时
*/
public static final String CARD_PAY_ORDER = "card_pay_order";
/**
* 小程序审核事件审核通过
*/
public static final String WEAPP_AUDIT_SUCCESS = "weapp_audit_success";
/**
* 小程序审核事件审核不通过
*/
public static final String WEAPP_AUDIT_FAIL = "weapp_audit_fail";
/**
* 小程序自定义交易组件支付通知
*/
public static final String OPEN_PRODUCT_ORDER_PAY = "open_product_order_pay";
/**
* 点击菜单跳转小程序的事件推送
*/
public static final String VIEW_MINIPROGRAM = "view_miniprogram";
/**
* 订阅通知事件用户操作订阅通知弹窗
*/
public static final String SUBSCRIBE_MSG_POPUP_EVENT = "subscribe_msg_popup_event";
/**
* 订阅通知事件用户管理订阅通知
*/
public static final String SUBSCRIBE_MSG_CHANGE_EVENT = "subscribe_msg_change_event";
/**
* 订阅通知事件发送订阅通知回调
*/
public static final String SUBSCRIBE_MSG_SENT_EVENT = "subscribe_msg_sent_event";
}
/**
* 上传多媒体临时素材文件的类型.
*/
public static class MediaFileType {
public static final String IMAGE = "image";
public static final String VOICE = "voice";
public static final String VIDEO = "video";
public static final String THUMB = "thumb";
public static final String FILE = "file";
}
/**
* 自定义菜单的按钮类型.
*/
public static class MenuButtonType {
/**
* 点击推事件.
*/
public static final String CLICK = "click";
/**
* 跳转URL.
*/
public static final String VIEW = "view";
/**
* 跳转到小程序.
*/
public static final String MINIPROGRAM = "miniprogram";
/**
* 扫码推事件.
*/
public static final String SCANCODE_PUSH = "scancode_push";
/**
* 扫码推事件且弹出消息接收中提示框.
*/
public static final String SCANCODE_WAITMSG = "scancode_waitmsg";
/**
* 弹出系统拍照发图.
*/
public static final String PIC_SYSPHOTO = "pic_sysphoto";
/**
* 弹出拍照或者相册发图.
*/
public static final String PIC_PHOTO_OR_ALBUM = "pic_photo_or_album";
/**
* 弹出微信相册发图器.
*/
public static final String PIC_WEIXIN = "pic_weixin";
/**
* 弹出地理位置选择器.
*/
public static final String LOCATION_SELECT = "location_select";
/**
* 下发消息除文本消息.
*/
public static final String MEDIA_ID = "media_id";
/**
* 跳转图文消息URL.
*/
public static final String VIEW_LIMITED = "view_limited";
}
/**
* oauth2网页授权的scope.
*/
public static class OAuth2Scope {
/**
* 不弹出授权页面直接跳转只能获取用户openid.
*/
public static final String SNSAPI_BASE = "snsapi_base";
/**
* 弹出授权页面可通过openid拿到昵称性别所在地并且即使在未关注的情况下只要用户授权也能获取其信息.
*/
public static final String SNSAPI_USERINFO = "snsapi_userinfo";
/**
* 手动授权,可获取成员的详细信息,包含手机邮箱只适用于企业微信或企业号.
*/
public static final String SNSAPI_PRIVATEINFO = "snsapi_privateinfo";
}
/**
* 网页应用登录授权作用域.
*/
public static class QrConnectScope {
public static final String SNSAPI_LOGIN = "snsapi_login";
}
/**
* 永久素材类型.
*/
public static class MaterialType {
public static final String NEWS = "news";
public static final String VOICE = "voice";
public static final String IMAGE = "image";
public static final String VIDEO = "video";
}
/**
* 网络检测入参.
*/
public static class NetCheckArgs {
public static final String ACTIONDNS = "dns";
public static final String ACTIONPING = "ping";
public static final String ACTIONALL = "all";
public static final String OPERATORUNICOM = "UNICOM";
public static final String OPERATORCHINANET = "CHINANET";
public static final String OPERATORCAP = "CAP";
public static final String OPERATORDEFAULT = "DEFAULT";
}
/**
* appId 类型
*/
public static class AppIdType {
/**
* 公众号appId类型
*/
public static final String MP_TYPE = "mp";
/**
* 小程序appId类型
*/
public static final String MINI_TYPE = "mini";
}
}

View File

@ -0,0 +1,20 @@
package com.ossez.wechat.common.enums;
/**
* The language for WeChat API can support
*
* @author YuCheng Hu
*/
public enum Language {
ZH_CN("zh_CN"), EN_US("en_US");
private String code;
Language(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.enums;
package com.ossez.wechat.common.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

View File

@ -0,0 +1,207 @@
package com.ossez.wechat.common.enums;
import com.google.common.collect.Maps;
import java.util.Map;
/**
* WeChat Error Code
* <pre>
* 微信公众平台全局返回码.
* 参考文档<a href="https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Global_Return_Code.html">公众平台全局返回码</a>
* </pre>
*
* @author YuCheng Hu
*/
public enum WeChatErrorCode {
CODE_1(-1, "系统繁忙,此时请开发者稍候再试"),
CODE_0(0, "请求成功"),
CODE_40001(40001, "获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口"),
CODE_40002(40002, "不合法的凭证类型"),
CODE_40003(40003, "不合法的 OpenID ,请开发者确认 OpenID (该用户)是否已关注公众号,或是否是其他公众号的 OpenID"),
CODE_40004(40004, "不合法的媒体文件类型"),
CODE_40005(40005, "不合法的文件类型"),
CODE_40006(40006, "不合法的文件大小"),
CODE_40007(40007, "不合法的媒体文件 id"),
CODE_40008(40008, "不合法的消息类型"),
CODE_40009(40009, "不合法的图片文件大小"),
CODE_40010(40010, "不合法的语音文件大小"),
CODE_40011(40011, "不合法的视频文件大小"),
CODE_40012(40012, "不合法的缩略图文件大小"),
CODE_40013(40013, "不合法的 AppID ,请开发者检查 AppID 的正确性,避免异常字符,注意大小写"),
CODE_40014(40014, "不合法的 access_token ,请开发者认真比对 access_token 的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口"),
CODE_40015(40015, "不合法的菜单类型"),
CODE_40016(40016, "不合法的按钮个数"),
CODE_40017(40017, "不合法的按钮类型"),
CODE_40018(40018, "不合法的按钮名字长度"),
CODE_40019(40019, "不合法的按钮 KEY 长度"),
CODE_40020(40020, "不合法的按钮 URL 长度"),
CODE_40021(40021, "不合法的菜单版本号"),
CODE_40022(40022, "不合法的子菜单级数"),
CODE_40023(40023, "不合法的子菜单按钮个数"),
CODE_40024(40024, "不合法的子菜单按钮类型"),
CODE_40025(40025, "不合法的子菜单按钮名字长度"),
CODE_40026(40026, "不合法的子菜单按钮 KEY 长度"),
CODE_40027(40027, "不合法的子菜单按钮 URL 长度"),
CODE_40028(40028, "不合法的自定义菜单使用用户"),
CODE_40029(40029, "不合法的 oauth_code"),
CODE_40030(40030, "不合法的 refresh_token"),
CODE_40031(40031, "不合法的 openid 列表"),
CODE_40032(40032, "不合法的 openid 列表长度"),
CODE_40033(40033, "不合法的请求字符,不能包含\\uxxxx 格式的字符"),
CODE_40035(40035, "不合法的参数"),
CODE_40038(40038, "不合法的请求格式"),
CODE_40039(40039, "不合法的 URL 长度"),
CODE_40050(40050, "不合法的分组 id"),
CODE_40051(40051, "分组名字不合法"),
CODE_40060(40060, "删除单篇图文时,指定的 article_idx 不合法"),
CODE_40117(40117, "分组名字不合法"),
CODE_40118(40118, "media_id 大小不合法"),
CODE_40119(40119, "button 类型错误"),
CODE_40120(40120, "button 类型错误"),
CODE_40121(40121, "不合法的 media_id 类型"),
CODE_40132(40132, "微信号不合法"),
CODE_40137(40137, "不支持的图片格式"),
CODE_40155(40155, "请勿添加其他公众号的主页链接"),
CODE_40163(40163, "oauth_code已使用"),
CODE_41001(41001, "缺少 access_token 参数"),
CODE_41002(41002, "缺少 appid 参数"),
CODE_41003(41003, "缺少 refresh_token 参数"),
CODE_41004(41004, "缺少 secret 参数"),
CODE_41005(41005, "缺少多媒体文件数据"),
CODE_41006(41006, "缺少 media_id 参数"),
CODE_41007(41007, "缺少子菜单数据"),
CODE_41008(41008, "缺少 oauth code"),
CODE_41009(41009, "缺少 openid"),
CODE_42001(42001, "access_token 超时,请检查 access_token 的有效期,请参考基础支持 - 获取 access_token 中,对 access_token 的详细机制说明"),
CODE_42002(42002, "refresh_token 超时"),
CODE_42003(42003, "oauth_code 超时"),
CODE_42007(42007, "用户修改微信密码, accesstoken 和 refreshtoken 失效,需要重新授权"),
CODE_43001(43001, "需要 GET 请求"),
CODE_43002(43002, "需要 POST 请求"),
CODE_43003(43003, "需要 HTTPS 请求"),
CODE_43004(43004, "需要接收者关注"),
CODE_43005(43005, "需要好友关系"),
CODE_43019(43019, "需要将接收者从黑名单中移除"),
CODE_44001(44001, "多媒体文件为空"),
CODE_44002(44002, "POST 的数据包为空"),
CODE_44003(44003, "图文消息内容为空"),
CODE_44004(44004, "文本消息内容为空"),
CODE_45001(45001, "多媒体文件大小超过限制"),
CODE_45002(45002, "消息内容超过限制"),
CODE_45003(45003, "标题字段超过限制"),
CODE_45004(45004, "描述字段超过限制"),
CODE_45005(45005, "链接字段超过限制"),
CODE_45006(45006, "图片链接字段超过限制"),
CODE_45007(45007, "语音播放时间超过限制"),
CODE_45008(45008, "图文消息超过限制"),
CODE_45009(45009, "接口调用超过限制"),
CODE_45010(45010, "创建菜单个数超过限制"),
CODE_45011(45011, "API 调用太频繁,请稍候再试"),
CODE_45015(45015, "回复时间超过限制"),
CODE_45016(45016, "系统分组,不允许修改"),
CODE_45017(45017, "分组名字过长"),
CODE_45018(45018, "分组数量超过上限"),
CODE_45047(45047, "客服接口下行条数超过上限"),
CODE_45159(45159, "非法的tag_id"),
CODE_45065(45065, "相同 clientmsgid 已存在群发记录,返回数据中带有已存在的群发任务的 msgid"),
CODE_45066(45066, "相同 clientmsgid 重试速度过快请间隔1分钟重试"),
CODE_45067(45067, "clientmsgid 长度超过限制"),
CODE_46001(46001, "不存在媒体数据"),
CODE_46002(46002, "不存在的菜单版本"),
CODE_46003(46003, "不存在的菜单数据"),
CODE_46004(46004, "不存在的用户"),
CODE_47001(47001, "解析 JSON/XML 内容错误"),
CODE_48001(48001, "api 功能未授权,请确认公众号已获得该接口,可以在公众平台官网 - 开发者中心页中查看接口权限"),
CODE_48002(48002, "粉丝拒收消息(粉丝在公众号选项中,关闭了 “ 接收消息 ” "),
CODE_48004(48004, "api 接口被封禁,请登录 mp.weixin.qq.com 查看详情"),
CODE_48005(48005, "api 禁止删除被自动回复和自定义菜单引用的素材"),
CODE_48006(48006, "api 禁止清零调用次数,因为清零次数达到上限"),
CODE_48008(48008, "没有该类型消息的发送权限"),
CODE_50001(50001, "用户未授权该 api"),
CODE_50002(50002, "用户受限,可能是违规后接口被封禁"),
CODE_50005(50005, "用户未关注公众号"),
CODE_61451(61451, "参数错误 (invalid parameter)"),
CODE_61452(61452, "无效客服账号 (invalid kf_account)"),
CODE_61453(61453, "客服帐号已存在 (kf_account exsited)"),
CODE_61454(61454, "客服帐号名长度超过限制 ( 仅允许 10 个英文字符,不包括 @ 及 @ 后的公众号的微信号 )(invalid kf_acount length)"),
CODE_61455(61455, "客服帐号名包含非法字符 ( 仅允许英文 + 数字 )(illegal character in kf_account)"),
CODE_61456(61456, "客服帐号个数超过限制 (10 个客服账号 )(kf_account count exceeded)"),
CODE_61457(61457, "无效头像文件类型 (invalid file type)"),
CODE_61450(61450, "系统错误 (system error)"),
CODE_61500(61500, "日期格式错误"),
CODE_65301(65301, "不存在此 menuid 对应的个性化菜单"),
CODE_65302(65302, "没有相应的用户"),
CODE_65303(65303, "没有默认菜单,不能创建个性化菜单"),
CODE_65304(65304, "MatchRule 信息为空"),
CODE_65305(65305, "个性化菜单数量受限"),
CODE_65306(65306, "不支持个性化菜单的帐号"),
CODE_65307(65307, "个性化菜单信息为空"),
CODE_65308(65308, "包含没有响应类型的 button"),
CODE_65309(65309, "个性化菜单开关处于关闭状态"),
CODE_65310(65310, "填写了省份或城市信息,国家信息不能为空"),
CODE_65311(65311, "填写了城市信息,省份信息不能为空"),
CODE_65312(65312, "不合法的国家信息"),
CODE_65313(65313, "不合法的省份信息"),
CODE_65314(65314, "不合法的城市信息"),
CODE_65316(65316, "该公众号的菜单设置了过多的域名外跳(最多跳转到 3 个域名的链接)"),
CODE_65317(65317, "不合法的 URL"),
CODE_9001001(9001001, "POST 数据参数不合法"),
CODE_9001002(9001002, "远端服务不可用"),
CODE_9001003(9001003, "Ticket 不合法"),
CODE_9001004(9001004, "获取摇周边用户信息失败"),
CODE_9001005(9001005, "获取商户信息失败"),
CODE_9001006(9001006, "获取 OpenID 失败"),
CODE_9001007(9001007, "上传文件缺失"),
CODE_9001008(9001008, "上传素材的文件类型不合法"),
CODE_9001009(9001009, "上传素材的文件尺寸不合法"),
CODE_9001010(9001010, "上传失败"),
CODE_9001020(9001020, "帐号不合法"),
CODE_9001021(9001021, "已有设备激活率低于 50% ,不能新增设备"),
CODE_9001022(9001022, "设备申请数不合法,必须为大于 0 的数字"),
CODE_9001023(9001023, "已存在审核中的设备 ID 申请"),
CODE_9001024(9001024, "一次查询设备 ID 数量不能超过 50"),
CODE_9001025(9001025, "设备 ID 不合法"),
CODE_9001026(9001026, "页面 ID 不合法"),
CODE_9001027(9001027, "页面参数不合法"),
CODE_9001028(9001028, "一次删除页面 ID 数量不能超过 10"),
CODE_9001029(9001029, "页面已应用在设备中,请先解除应用关系再删除"),
CODE_9001030(9001030, "一次查询页面 ID 数量不能超过 50"),
CODE_9001032(9001032, "保存设备与页面的绑定关系参数错误"),
CODE_9001033(9001033, "门店 ID 不合法"),
CODE_9001034(9001034, "设备备注信息过长"),
CODE_9001035(9001035, "设备申请参数不合法"),
CODE_9001036(9001036, "查询起始值 begin 不合法"),
CODE_45083(45083, "设置的 speed 参数不在0到4的范围内"),
CODE_45084(45084, "没有设置 speed 参数");
private final int code;
private final String msg;
WeChatErrorCode(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
static final Map<Integer, String> valueMap = Maps.newHashMap();
static {
for (WeChatErrorCode value : WeChatErrorCode.values()) {
valueMap.put(value.code, value.msg);
}
}
/**
* 通过错误代码查找其中文含义..
*/
public static String findMsgByCode(int code) {
return valueMap.getOrDefault(code, null);
}
}

View File

@ -0,0 +1,12 @@
package com.ossez.wechat.common.enums;
/**
* WeChat's Storage Category
*
* We provide implement for MEM(RAM) and REDIS
*
* @author YuCheng Hu
*/
public enum WeChatStorageCategory {
MEM, REDIS
}

View File

@ -0,0 +1,25 @@
package com.ossez.wechat.common.enums;
/**
* 微信卡券
*
* @author YuCheng
*/
public enum WxCardType {
MEMBER_CARD("MEMBER_CARD"),
GROUPON("GROUPON"),
CASH("CASH"),
DISCOUNT("DISCOUNT"),
GIFT("GIFT"),
GENERAL_COUPON("GENERAL_COUPON");
private String code;
WxCardType(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.enums;
package com.ossez.wechat.common.enums;
/**
* <pre>

View File

@ -0,0 +1,26 @@
package com.ossez.wechat.common.exception;
/**
* @author Daniel Qian
*/
public class DataStructureException extends WxErrorException {
private static final long serialVersionUID = -6357149550353160810L;
private final WxError error;
private static final int DEFAULT_ERROR_CODE = -99;
public DataStructureException(String message) {
this(WxError.builder().errorCode(DEFAULT_ERROR_CODE).errorMsg(message).build());
}
public DataStructureException(WxError error) {
super(error.toString());
this.error = error;
}
public WxError getError() {
return this.error;
}
}

View File

@ -1,7 +1,10 @@
package me.chanjar.weixin.common.error;
package com.ossez.wechat.common.exception;
import com.google.common.collect.Maps;
import lombok.Getter;
import java.util.Map;
/**
* <pre>
* 企业微信全局错误码.
@ -245,6 +248,10 @@ public enum WxCpErrorMsgEnum {
* 不合法的URL缺少主页URL参数或者URL不合法链接需要带上协议头 http:// 或者 https:// 开头.
*/
CODE_40094(40094, "不合法的URL缺少主页URL参数或者URL不合法链接需要带上协议头以 http:// 或者 https:// 开头)"),
/**
* 不合法的外部联系人userid
*/
CODE_40096(40096,"不合法的外部联系人userid"),
/**
* 缺少access_token参数.
*/
@ -1089,6 +1096,26 @@ public enum WxCpErrorMsgEnum {
* 通用错误码提交审批单内部接口失败
*/
CODE_301057(301057, "通用错误码,提交审批单内部接口失败"),
/**
* 输入userid无对应成员
*/
CODE_301069(301069,"输入userid无对应成员"),
/**
* 系统错误请稍后再试
*/
CODE_301070(301070,"系统错误,请稍后再试"),
/**
* 企业内有其他人员有相似人脸此情况下人脸仍然会录入成功
*/
CODE_301071(301071,"企业内有其他人员有相似人脸,此情况下人脸仍然会录入成功"),
/**
* 人脸图像数据错误请更换图片
*/
CODE_301072(301072,"企业内有其他人员有相似人脸,此情况下人脸仍然会录入成功"),
/**
* 输入参数错误
*/
CODE_301075(301075,"输入参数错误"),
/**
* 批量导入任务的文件中userid有重复.
*/
@ -1114,24 +1141,26 @@ public enum WxCpErrorMsgEnum {
*/
CODE_2000002(2000002, "CorpId参数无效指定的CorpId不存在");
private int code;
private String msg;
private final int code;
private final String msg;
WxCpErrorMsgEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
static final Map<Integer, String> valueMap = Maps.newHashMap();
static {
for (WxCpErrorMsgEnum value : WxCpErrorMsgEnum.values()) {
valueMap.put(value.code, value.msg);
}
}
/**
* 通过错误代码查找其中文含义..
*/
public static String findMsgByCode(int code) {
for (WxCpErrorMsgEnum value : WxCpErrorMsgEnum.values()) {
if (value.code == code) {
return value.msg;
}
}
return null;
return valueMap.getOrDefault(code, null);
}
}

View File

@ -1,9 +1,12 @@
package me.chanjar.weixin.common.error;
package com.ossez.wechat.common.exception;
import com.ossez.wechat.common.enums.WeChatErrorCode;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import me.chanjar.weixin.common.enums.WxType;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import lombok.NoArgsConstructor;
import com.ossez.wechat.common.enums.WxType;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
@ -11,15 +14,17 @@ import java.io.Serializable;
/**
* 微信错误码.
* 请阅读
* 公众平台<a href="http://mp.weixin.qq.com/wiki/10/6380dc743053a91c544ffd2b7c959166.html">全局返回码说明</a>
* 公众平台<a href="https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Global_Return_Code.html">全局返回码说明</a>
* 企业微信<a href="https://work.weixin.qq.com/api/doc#10649">全局错误码</a>
*
* @author Daniel Qian & Binary Wang
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class WxError implements Serializable {
private static final long serialVersionUID = 7869786563361406291L;
private static final long serialVersionUID = -2696724276555657960L;
/**
* 微信错误代码.
@ -39,6 +44,11 @@ public class WxError implements Serializable {
private String json;
public WxError(int errorCode, String errorMsg) {
this.errorCode = errorCode;
this.errorMsg = errorMsg;
}
public static WxError fromJson(String json) {
return fromJson(json, null);
}
@ -55,7 +65,7 @@ public class WxError implements Serializable {
switch (type) {
case MP: {
final String msg = WxMpErrorMsgEnum.findMsgByCode(wxError.getErrorCode());
final String msg = WeChatErrorCode.findMsgByCode(wxError.getErrorCode());
if (msg != null) {
wxError.setErrorMsg(msg);
}
@ -75,6 +85,13 @@ public class WxError implements Serializable {
}
break;
}
case Open: {
final String msg = WxOpenErrorMsgEnum.findMsgByCode(wxError.getErrorCode());
if (msg != null) {
wxError.setErrorMsg(msg);
}
break;
}
default:
return wxError;
}

View File

@ -0,0 +1,37 @@
package com.ossez.wechat.common.exception;
import static com.ossez.wechat.common.exception.WxError.*;
/**
* @author Daniel Qian
*/
public class WxErrorException extends Exception {
private static final long serialVersionUID = -6357149550353160810L;
private final WxError error;
private static final int DEFAULT_ERROR_CODE = -99;
public WxErrorException(String message) {
this(WxError.builder().errorCode(DEFAULT_ERROR_CODE).errorMsg(message).build());
}
public WxErrorException(WxError error) {
super(error.toString());
this.error = error;
}
public WxErrorException(WxError error, Throwable cause) {
super(error.toString(), cause);
this.error = error;
}
public WxErrorException(Throwable cause) {
super(cause.getMessage(), cause);
this.error = WxError.builder().errorCode(DEFAULT_ERROR_CODE).errorMsg(cause.getMessage()).build();
}
public WxError getError() {
return this.error;
}
}

View File

@ -1,7 +1,10 @@
package me.chanjar.weixin.common.error;
package com.ossez.wechat.common.exception;
import com.google.common.collect.Maps;
import lombok.Getter;
import java.util.Map;
/**
* 微信小程序错误码
*
@ -409,7 +412,7 @@ public enum WxMaErrorMsgEnum {
CODE_85012(85012, "无效的审核 id"),
CODE_87013(87013, "撤回次数达到上限(每天次,每个月 10 次)"),
CODE_87013(87013, "撤回次数达到上限(每天5次,每个月 10 次)"),
CODE_85019(85019, "没有审核版本"),
@ -464,27 +467,218 @@ public enum WxMaErrorMsgEnum {
CODE_85004(85004, "微信号已经绑定"),
/**
* 53010
* 名称格式不合法
*/
CODE_53010(53010, "名称格式不合法"),
/**
* 53011
* 名称检测命中频率限制
*/
CODE_53011(53011, "名称检测命中频率限制"),
/**
* 53012
* 禁止使用该名称
*/
CODE_53012(53012, "禁止使用该名称"),
/**
* 53013
* 公众号名称与已有公众号名称重复;小程序该名称与已有小程序名称重复
*/
CODE_53013(53013, "公众号:名称与已有公众号名称重复;小程序:该名称与已有小程序名称重复"),
/**
* 53014
* 公众号公众号已有{名称 A+}需与该帐号相同主体才可申请{名称 A};小程序小程序已有{名称 A+}需与该帐号相同主体才可申请{名称 A}
*/
CODE_53014(53014, "公众号:公众号已有{名称 A+}时,需与该帐号相同主体才可申请{名称 A};小程序:小程序已有{名称 A+}时,需与该帐号相同主体才可申请{名称 A}"),
/**
* 53015
* 公众号该名称与已有小程序名称重复需与该小程序帐号相同主体才可申请;小程序该名称与已有公众号名称重复需与该公众号帐号相同主体才可申请
*/
CODE_53015(53015, "公众号:该名称与已有小程序名称重复,需与该小程序帐号相同主体才可申请;小程序:该名称与已有公众号名称重复,需与该公众号帐号相同主体才可申请"),
/**
* 53016
* 公众号该名称与已有多个小程序名称重复暂不支持申请;小程序该名称与已有多个公众号名称重复暂不支持申请
*/
CODE_53016(53016, "公众号:该名称与已有多个小程序名称重复,暂不支持申请;小程序:该名称与已有多个公众号名称重复,暂不支持申请"),
/**
* 53017
* 公众号小程序已有{名称 A+}需与该帐号相同主体才可申请{名称 A};小程序公众号已有{名称 A+}需与该帐号相同主体才可申请{名称 A}
*/
CODE_53017(53017, "公众号:小程序已有{名称 A+}时,需与该帐号相同主体才可申请{名称 A};小程序:公众号已有{名称 A+}时,需与该帐号相同主体才可申请{名称 A}"),
/**
* 53018
* 名称命中微信号
*/
CODE_53018(53018, "名称命中微信号"),
/**
* 53019
* 名称在保护期内
*/
CODE_53019(53019, "名称在保护期内"),
/**
* 61070
* 法人姓名与微信号不一致 name, wechat name not in accordance
*/
CODE_61070(61070, "法人姓名与微信号不一致"),
/**
* 85015
* 该账号不是小程序账号
*/
CODE_85015(85015, "该账号不是小程序账号"),
/**
* 85066
* 链接错误
*/
CODE_85066(85066, "链接错误"),
/**
* 85068
* 测试链接不是子链接
*/
CODE_85068(85068, "测试链接不是子链接"),
/**
* 85069
* 校验文件失败
*/
CODE_85069(85069, "校验文件失败"),
/**
* 85070
* 个人类型小程序无法设置二维码规则
*/
CODE_85070(85070, "个人类型小程序无法设置二维码规则"),
/**
* 85071
* 已添加该链接请勿重复添加
*/
CODE_85071(85071, "已添加该链接,请勿重复添加"),
/**
* 85072
* 该链接已被占用
*/
CODE_85072(85072, "该链接已被占用"),
/**
* 85073
* 二维码规则已满
*/
CODE_85073(85073, "二维码规则已满"),
/**
* 85074
* 小程序未发布, 小程序必须先发布代码才可以发布二维码跳转规则
*/
CODE_85074(85074, "小程序未发布, 小程序必须先发布代码才可以发布二维码跳转规则"),
/**
* 85075
* 个人类型小程序无法设置二维码规则
*/
CODE_85075(85075, "个人类型小程序无法设置二维码规则"),
/**
* 86004
* 无效微信号 invalid wechat
*/
CODE_86004(86004, "无效微信号"),
/**
* 89247
* 内部错误 inner error
*/
CODE_89247(89247, "内部错误"),
/**
* 89248
* 企业代码类型无效请选择正确类型填写 invalid code_type type
*/
CODE_89248(89248, "企业代码类型无效,请选择正确类型填写"),
/**
* 89249
* 该主体已有任务执行中距上次任务 24h 后再试 task running
*/
CODE_89249(89249, "该主体已有任务执行中,距上次任务 24h 后再试"),
/**
* 89250
* 未找到该任务 task not found
*/
CODE_89250(89250, "未找到该任务"),
/**
* 89251
* 待法人人脸核身校验 legal person checking
*/
CODE_89251(89251, "待法人人脸核身校验"),
/**
* 89252
* 法人&企业信息一致性校验中 front checking
*/
CODE_89252(89252, "法人&企业信息一致性校验中"),
/**
* 89253
* 缺少参数 lack of some params
*/
CODE_89253(89253, "缺少参数s"),
/**
* 89254
* 第三方权限集不全补全权限集全网发布后生效 lack of some component rights
*/
CODE_89254(89254, "第三方权限集不全,补全权限集全网发布后生效"),
/**
* 89255
* code参数无效请检查code长度以及内容是否正确 code参数无效请检查code长度以及内容是否正确_
* 注意code_type的值不同需要传的code长度不一样 注意code_type的值不同需要传的code长度不一样 enterprise code_invalid invalid
*/
CODE_89255(89255, "code参数无效请检查code长度以及内容是否正确_注意code_type的值不同需要传的code长度不一样 注意code_type的值不同需要传的code长度不一样"),
// CODE_504002(-504002, "云函数未找到 Function not found"),
;
private int code;
private String msg;
private final int code;
private final String msg;
WxMaErrorMsgEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
static final Map<Integer, String> valueMap = Maps.newHashMap();
static {
for (WxMaErrorMsgEnum value : WxMaErrorMsgEnum.values()) {
valueMap.put(value.code, value.msg);
}
}
/**
* 通过错误代码查找其中文含义.
*/
public static String findMsgByCode(int code) {
for (WxMaErrorMsgEnum value : WxMaErrorMsgEnum.values()) {
if (value.code == code) {
return value.msg;
}
}
return null;
return valueMap.getOrDefault(code, null);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
package com.ossez.wechat.common.exception;
/**
* WxJava专用的runtime exception.
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* created on 2020-09-26
*/
public class WxRuntimeException extends RuntimeException {
private static final long serialVersionUID = 4881698471192264412L;
public WxRuntimeException(Throwable e) {
super(e);
}
public WxRuntimeException(String msg) {
super(msg);
}
public WxRuntimeException(String msg, Throwable e) {
super(msg, e);
}
}

View File

@ -0,0 +1,44 @@
package com.ossez.wechat.common.model;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
/**
* WeChatAccessToken Response Object
*
* @author YuCheng Hu
*/
public class WeChatAccessToken {
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("expires_in")
private int expiresIn = -1;
public static WeChatAccessToken fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WeChatAccessToken.class);
}
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public int getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(int expiresIn) {
this.expiresIn = expiresIn;
}
}

View File

@ -0,0 +1,27 @@
package com.ossez.wechat.common.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import java.util.List;
/**
* WeChatAccessToken Response Object
*
* @author YuCheng Hu
*/
public class WeChatApiDomainIp {
@JsonProperty("ip_list")
private List<String> ipList;
public List<String> getIpList() {
return ipList;
}
public void setIpList(List<String> ipList) {
this.ipList = ipList;
}
}

View File

@ -0,0 +1,16 @@
package com.ossez.wechat.common.model;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
public class WeChatHost implements Serializable {
private static final long serialVersionUID = -7648920647310280817L;
private String apiHost;
private String openHost;
private String mpHost;
}

View File

@ -0,0 +1,107 @@
package com.ossez.wechat.common.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import java.io.Serializable;
/**
* https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
*
* @author Daniel Qian
*/
public class WeChatOAuth2AccessToken implements Serializable {
private static final long serialVersionUID = 5755678830089329526L;
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("expires_in")
private int expiresIn = -1;
@JsonProperty("refresh_token")
private String refreshToken;
@JsonProperty("openid")
private String openId;
@JsonProperty("scope")
private String scope;
@JsonProperty("is_snapshotuser")
private Integer snapshotUser;
/**
* https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&announce_id=11513156443eZYea&version=&lang=zh_CN.
* 本接口在scope参数为snsapi_base时不再提供unionID字段
*/
@SerializedName("unionid")
private String unionId;
public static WeChatOAuth2AccessToken fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WeChatOAuth2AccessToken.class);
}
@Override
public String toString() {
return WxGsonBuilder.create().toJson(this);
}
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public int getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(int expiresIn) {
this.expiresIn = expiresIn;
}
public String getRefreshToken() {
return refreshToken;
}
public void setRefreshToken(String refreshToken) {
this.refreshToken = refreshToken;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public Integer getSnapshotUser() {
return snapshotUser;
}
public void setSnapshotUser(Integer snapshotUser) {
this.snapshotUser = snapshotUser;
}
public String getUnionId() {
return unionId;
}
public void setUnionId(String unionId) {
this.unionId = unionId;
}
}

View File

@ -0,0 +1,34 @@
package com.ossez.wechat.common.model;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* WeChatStatus Response Object
*
* @author YuCheng Hu
*/
public class WeChatStatus {
@JsonProperty("errcode")
private int errCode = 0;
@JsonProperty("errmsg")
private String errMsg;
public int getErrCode() {
return errCode;
}
public void setErrCode(int errCode) {
this.errCode = errCode;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
}

View File

@ -0,0 +1,129 @@
package com.ossez.wechat.common.model.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import java.io.Serializable;
/**
* oauth2用户个人信息.
* <pre>
* {
* "openid":"OPENID",
* "nickname":"NICKNAME",
* "sex":1,
* "province":"PROVINCE",
* "city":"CITY",
* "country":"COUNTRY",
* "headimgurl": "https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
* "privilege":[
* "PRIVILEGE1",
* "PRIVILEGE2"
* ],
* "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
*
* }
* </pre>
*
* @author YuCheng
*/
@Data
public class WeChatOAuth2UserInfo implements Serializable {
private static final long serialVersionUID = 3181943506448954725L;
@JsonProperty("openid")
private String openid;
@JsonProperty("nickname")
private String nickname;
@JsonProperty("sex")
private Integer sex;
@JsonProperty("city")
private String city;
@JsonProperty("province")
private String province;
@JsonProperty("country")
private String country;
@JsonProperty("headimgurl")
private String headImgUrl;
@JsonProperty("unionid")
private String unionId;
@JsonProperty("privilege")
private String[] privileges;
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getHeadImgUrl() {
return headImgUrl;
}
public void setHeadImgUrl(String headImgUrl) {
this.headImgUrl = headImgUrl;
}
public String getUnionId() {
return unionId;
}
public void setUnionId(String unionId) {
this.unionId = unionId;
}
public String[] getPrivileges() {
return privileges;
}
public void setPrivileges(String[] privileges) {
this.privileges = privileges;
}
}

View File

@ -0,0 +1,31 @@
package com.ossez.wechat.common.model.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* WeChatAccessToken Response Object
*
* @author YuCheng Hu
*/
public class WeChatResponseStatus {
@JsonProperty("errcode")
private Integer errorCode;
@JsonProperty("errmsg")
private String errorMsg;
public Integer getErrorCode() {
return errorCode;
}
public void setErrorCode(Integer errorCode) {
this.errorCode = errorCode;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
}

View File

@ -0,0 +1,104 @@
package com.ossez.wechat.common.model.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.experimental.Accessors;
@Accessors(chain = true)
public class WeChatUser {
@JsonProperty(value = "openid", required = true)
private String openId;
@JsonProperty(required = true)
private String nickname;
private Integer sex;
private String language;
private String city;
private String province;
private String country;
@JsonProperty(value = "headimgurl")
private String headImgURL;
@JsonProperty(value = "unionid", required = true)
private String unionId;
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getHeadImgURL() {
return headImgURL;
}
public void setHeadImgURL(String headImgURL) {
this.headImgURL = headImgURL;
}
public String getUnionId() {
return unionId;
}
public void setUnionId(String unionId) {
this.unionId = unionId;
}
}

View File

@ -0,0 +1,43 @@
package com.ossez.wechat.common.model.entity.builder;
import com.ossez.wechat.common.model.entity.menu.MenuButton;
import com.ossez.wechat.common.model.req.MenuRequest;
import java.util.List;
public class MenuButtonBuilder {
private List<MenuButton> subButtonList;
private String type;
private String name;
private String key;
private String url;
public MenuButtonBuilder setSubButtonList(List<MenuButton> subButtonList) {
this.subButtonList = subButtonList;
return this;
}
public MenuButtonBuilder setType(String type) {
this.type = type;
return this;
}
public MenuButtonBuilder setName(String name) {
this.name = name;
return this;
}
public MenuButtonBuilder setKey(String key) {
this.key = key;
return this;
}
public MenuButtonBuilder setUrl(String url) {
this.url = url;
return this;
}
public MenuButton createMenuButton() {
return new MenuButton(subButtonList, type, name, key, url);
}
}

View File

@ -0,0 +1,40 @@
package com.ossez.wechat.common.model.entity.menu;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.model.req.MenuRequest;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
/**
* menu button.
*
* @author Daniel Qian
*/
@Data
public class MenuButton implements Serializable {
private static final long serialVersionUID = -1070939403109776555L;
public MenuButton(List<MenuButton> subButtonList, String type, String name, String key, String url) {
this.subButtonList = subButtonList;
this.type = type;
this.name = name;
this.key = key;
this.url = url;
}
@JsonProperty(value = "sub_button")
private List<MenuButton> subButtonList;
@JsonProperty("type")
private String type;
@JsonProperty("name")
private String name;
@JsonProperty("key")
private String key;
@JsonProperty("url")
private String url;
}

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.bean.menu;
package com.ossez.wechat.common.model.entity.menu;
import java.io.InputStream;
import java.io.InputStreamReader;
@ -7,8 +7,8 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
/**
* 菜单公众号和企业号共用的.
@ -19,13 +19,16 @@ import me.chanjar.weixin.common.util.json.WxGsonBuilder;
public class WxMenu implements Serializable {
private static final long serialVersionUID = -7083914585539687746L;
private List<WxMenuButton> buttons = new ArrayList<>();
private List<MenuButton> buttons = new ArrayList<>();
private WxMenuRule matchRule;
/**
* 要用 http://mp.weixin.qq.com/wiki/16/ff9b7b85220e1396ffa16794a9d95adc.html 格式来反序列化
* 相比 http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html 的格式外层多套了一个menu
*
* @param json
* @return
*/
public static WxMenu fromJson(String json) {
return WxGsonBuilder.create().fromJson(json, WxMenu.class);

View File

@ -1,10 +1,10 @@
package me.chanjar.weixin.common.bean.menu;
package com.ossez.wechat.common.model.entity.menu;
import java.io.Serializable;
import com.google.gson.annotations.SerializedName;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
/**
* menu rule.
@ -24,6 +24,7 @@ public class WxMenuRule implements Serializable {
private String country;
private String province;
private String city;
@SerializedName("client_platform_type")
private String clientPlatformType;
private String language;

View File

@ -0,0 +1,128 @@
package com.ossez.wechat.common.model.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
/**
* CustomMessage
*
* @author YuCheng
*/
public class CustomMessage implements Serializable {
private static final long serialVersionUID = -9196732086954365246L;
@JsonProperty("touser")
private String toUser;
@JsonProperty("msgtype")
private String msgType;
@JsonProperty("text")
private KfText text;
@JsonProperty("image")
private KfImage image;
@JsonProperty("link")
private KfLink link;
@JsonProperty("miniprogrampage")
private KfMaPage maPage;
@Data
@AllArgsConstructor
public static class KfText implements Serializable {
private static final long serialVersionUID = 151122958720941270L;
private String content;
}
@Data
@AllArgsConstructor
public static class KfImage implements Serializable {
private static final long serialVersionUID = -5409342945117300782L;
@SerializedName("media_id")
private String mediaId;
}
@Data
@Builder
public static class KfLink implements Serializable {
private static final long serialVersionUID = -6728776817556127413L;
private String title;
private String description;
private String url;
@SerializedName("thumb_url")
private String thumbUrl;
}
@Data
@Builder
public static class KfMaPage implements Serializable {
private static final long serialVersionUID = -5633492281871634466L;
private String title;
@SerializedName("pagepath")
private String pagePath;
@SerializedName("thumb_media_id")
private String thumbMediaId;
}
public String getToUser() {
return toUser;
}
public void setToUser(String toUser) {
this.toUser = toUser;
}
public String getMsgType() {
return msgType;
}
public void setMsgType(String msgType) {
this.msgType = msgType;
}
public KfText getText() {
return text;
}
public void setText(KfText text) {
this.text = text;
}
public KfImage getImage() {
return image;
}
public void setImage(KfImage image) {
this.image = image;
}
public KfLink getLink() {
return link;
}
public void setLink(KfLink link) {
this.link = link;
}
public KfMaPage getMaPage() {
return maPage;
}
public void setMaPage(KfMaPage maPage) {
this.maPage = maPage;
}
}

View File

@ -0,0 +1,40 @@
package com.ossez.wechat.common.model.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
/**
* CustomMessage
*
* @author YuCheng
*/
public class DataCubeRequest implements Serializable {
private static final long serialVersionUID = -9196732086954365246L;
@JsonProperty(value = "begin_date", required = true)
private String beginDate;
@JsonProperty(value = "end_date", required = true)
private String endDate;
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.beginDate = beginDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}

View File

@ -0,0 +1,28 @@
package com.ossez.wechat.common.model.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ossez.wechat.common.model.entity.menu.MenuButton;
import com.ossez.wechat.common.model.res.DataCubeArticle;
import java.io.Serializable;
import java.util.List;
/**
* CustomMessage
*
* @author YuCheng
*/
public class MenuRequest implements Serializable {
private static final long serialVersionUID = -9196732086954365246L;
@JsonProperty(value = "button", required = true)
private List<MenuButton> buttonList;
public List<MenuButton> getButtonList() {
return buttonList;
}
public void setButtonList(List<MenuButton> buttonList) {
this.buttonList = buttonList;
}
}

View File

@ -0,0 +1,33 @@
package com.ossez.wechat.common.model.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ossez.wechat.common.util.json.WxGsonBuilder;
import org.apache.commons.lang3.StringUtils;
/**
* WeChatAccessToken Response Object
*
* @author YuCheng Hu
*/
public class NetworkCheck {
@JsonProperty("action")
private String action = "all";
@JsonProperty("check_operator")
private String checkOperator = StringUtils.upperCase("DEFAULT");
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getCheckOperator() {
return checkOperator;
}
public void setCheckOperator(String checkOperator) {
this.checkOperator = checkOperator;
}
}

View File

@ -0,0 +1,22 @@
package com.ossez.wechat.common.model.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.lang3.StringUtils;
/**
* WeChatAccessToken Response Object
*
* @author YuCheng Hu
*/
public class QueryQuota {
@JsonProperty("cgi_path")
private String cgiPath = "/cgi-bin/message/custom/send";
public String getCgiPath() {
return cgiPath;
}
public void setCgiPath(String cgiPath) {
this.cgiPath = cgiPath;
}
}

View File

@ -0,0 +1,130 @@
package com.ossez.wechat.common.model.res;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
/**
* UserSummaryResponse Object
*
* @author YuCheng Hu
*/
public class DataCubeArticle {
@JsonProperty("list")
private List<ArticleData> articleDataList;
public static class ArticleData {
@JsonProperty("ref_date")
private String refDate;
@JsonProperty("msgid")
private String msgId;
@JsonProperty("title")
private String title;
@JsonProperty("int_page_read_user")
private Long intPageReadUser;
@JsonProperty("ori_page_read_user")
private Long oriPageReadUser;
@JsonProperty("ori_page_read_count")
private Long oriPageReadCount;
@JsonProperty("share_user")
private Long shareUser;
@JsonProperty("shareCount")
private Long shareCount;
@JsonProperty("add_to_fav_user")
private Long addToFavUser;
@JsonProperty("add_to_fav_count")
private Long addToFavCount;
public String getRefDate() {
return refDate;
}
public void setRefDate(String refDate) {
this.refDate = refDate;
}
public String getMsgId() {
return msgId;
}
public void setMsgId(String msgId) {
this.msgId = msgId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Long getIntPageReadUser() {
return intPageReadUser;
}
public void setIntPageReadUser(Long intPageReadUser) {
this.intPageReadUser = intPageReadUser;
}
public Long getOriPageReadUser() {
return oriPageReadUser;
}
public void setOriPageReadUser(Long oriPageReadUser) {
this.oriPageReadUser = oriPageReadUser;
}
public Long getOriPageReadCount() {
return oriPageReadCount;
}
public void setOriPageReadCount(Long oriPageReadCount) {
this.oriPageReadCount = oriPageReadCount;
}
public Long getShareUser() {
return shareUser;
}
public void setShareUser(Long shareUser) {
this.shareUser = shareUser;
}
public Long getShareCount() {
return shareCount;
}
public void setShareCount(Long shareCount) {
this.shareCount = shareCount;
}
public Long getAddToFavUser() {
return addToFavUser;
}
public void setAddToFavUser(Long addToFavUser) {
this.addToFavUser = addToFavUser;
}
public Long getAddToFavCount() {
return addToFavCount;
}
public void setAddToFavCount(Long addToFavCount) {
this.addToFavCount = addToFavCount;
}
}
public List<ArticleData> getArticleDataList() {
return articleDataList;
}
public void setArticleDataList(List<ArticleData> articleDataList) {
this.articleDataList = articleDataList;
}
}

View File

@ -0,0 +1,78 @@
package com.ossez.wechat.common.model.res;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
/**
* UserSummaryResponse Object
*
* @author YuCheng Hu
*/
public class DataCubeUser {
@JsonProperty("list")
private List<UserData> userDataList;
public static class UserData {
@JsonProperty("ref_date")
private String refDate;
@JsonProperty("user_source")
private Long userSource;
@JsonProperty("new_user")
private Long newUser;
@JsonProperty("cancel_user")
private Long cancelUser;
@JsonProperty("cumulate_user")
private Long cumulateUser;
public String getRefDate() {
return refDate;
}
public void setRefDate(String refDate) {
this.refDate = refDate;
}
public Long getUserSource() {
return userSource;
}
public void setUserSource(Long userSource) {
this.userSource = userSource;
}
public Long getNewUser() {
return newUser;
}
public void setNewUser(Long newUser) {
this.newUser = newUser;
}
public Long getCancelUser() {
return cancelUser;
}
public void setCancelUser(Long cancelUser) {
this.cancelUser = cancelUser;
}
public Long getCumulateUser() {
return cumulateUser;
}
public void setCumulateUser(Long cumulateUser) {
this.cumulateUser = cumulateUser;
}
}
public List<UserData> getUserDataList() {
return userDataList;
}
public void setUserDataList(List<UserData> userDataList) {
this.userDataList = userDataList;
}
}

View File

@ -0,0 +1,35 @@
package com.ossez.wechat.common.model.res;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ossez.wechat.common.api.WxMessageInMemoryDuplicateCheckerSingleton;
import org.apache.commons.lang3.StringUtils;
/**
* WeChatAccessToken Response Object
*
* @author YuCheng Hu
*/
public class NetworkCheckResponse {
@JsonProperty("dns")
private String dns;
@JsonProperty("ping")
private Ping ping;
private static class dns {
@JsonProperty("ip")
private String ip;
@JsonProperty("real_operator")
private String realOperator;
}
private static class Ping {
@JsonProperty("ip")
private String ip;
@JsonProperty("from_operator")
private String fromOperator;
@JsonProperty("package_loss")
private String packageLoss;
@JsonProperty("time")
private String time;
}
}

View File

@ -0,0 +1,66 @@
package com.ossez.wechat.common.model.res;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* WeChatAccessToken Response Object
*
* @author YuCheng Hu
*/
public class QueryQuotaResponse {
@JsonProperty("errcode")
private Integer errorCode;
@JsonProperty("errmsg")
private String errorMsg;
@JsonProperty("quota")
private Quota quota;
private static class Quota {
@JsonProperty("daily_limit")
private String dailyLimit;
@JsonProperty("used")
private String used;
@JsonProperty("remain")
private String remain;
public String getDailyLimit() {
return dailyLimit;
}
public void setDailyLimit(String dailyLimit) {
this.dailyLimit = dailyLimit;
}
public String getUsed() {
return used;
}
public void setUsed(String used) {
this.used = used;
}
public String getRemain() {
return remain;
}
public void setRemain(String remain) {
this.remain = remain;
}
}
public Integer getErrorCode() {
return errorCode;
}
public void setErrorCode(Integer errorCode) {
this.errorCode = errorCode;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
}

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.redis;
package com.ossez.wechat.common.redis;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;

View File

@ -1,8 +1,8 @@
package me.chanjar.weixin.common.redis;
package com.ossez.wechat.common.redis;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.common.util.locks.RedisTemplateSimpleDistributedLock;
import com.ossez.wechat.common.util.locks.RedisTemplateSimpleDistributedLock;
import org.springframework.data.redis.core.StringRedisTemplate;
import java.util.concurrent.TimeUnit;

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.redis;
package com.ossez.wechat.common.redis;
import lombok.RequiredArgsConstructor;
import org.redisson.api.RedissonClient;

View File

@ -1,4 +1,4 @@
package me.chanjar.weixin.common.redis;
package com.ossez.wechat.common.redis;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
@ -8,6 +8,7 @@ import java.util.concurrent.locks.Lock;
* <p>
* 该接口不承诺稳定, 外部实现请继承{@link BaseWxRedisOps}
*
* @author Mario Luo
* @see BaseWxRedisOps 实现需要继承该类
* @see JedisWxRedisOps jedis实现
* @see RedissonWxRedisOps redisson实现

View File

@ -1,10 +1,10 @@
package me.chanjar.weixin.common.requestexecuter.ocr;
package com.ossez.wechat.common.requestexecuter.ocr;
import me.chanjar.weixin.common.enums.WxType;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.apache.Utf8ResponseHandler;
import com.ossez.wechat.common.enums.WxType;
import com.ossez.wechat.common.exception.WxError;
import com.ossez.wechat.common.exception.WxErrorException;
import com.ossez.wechat.common.util.http.RequestHttp;
import com.ossez.wechat.common.util.http.apache.Utf8ResponseHandler;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
@ -21,7 +21,7 @@ import java.io.IOException;
* .
*
* @author : zhayueran
* @date 2019/6/27 14:06
* created on 2019/6/27 14:06
*/
public class OcrDiscernApacheHttpRequestExecutor extends OcrDiscernRequestExecutor<CloseableHttpClient, HttpHost> {
public OcrDiscernApacheHttpRequestExecutor(RequestHttp requestHttp) {

View File

@ -1,10 +1,10 @@
package me.chanjar.weixin.common.requestexecuter.ocr;
package com.ossez.wechat.common.requestexecuter.ocr;
import me.chanjar.weixin.common.enums.WxType;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.common.util.http.ResponseHandler;
import com.ossez.wechat.common.enums.WxType;
import com.ossez.wechat.common.exception.WxErrorException;
import com.ossez.wechat.common.util.http.RequestExecutor;
import com.ossez.wechat.common.util.http.RequestHttp;
import com.ossez.wechat.common.util.http.ResponseHandler;
import java.io.File;
import java.io.IOException;
@ -13,7 +13,7 @@ import java.io.IOException;
* .
*
* @author zhayueran
* @date 2019/6/27 15:06
* created on 2019/6/27 15:06
*/
public abstract class OcrDiscernRequestExecutor<H, P> implements RequestExecutor<String, File> {
protected RequestHttp<H, P> requestHttp;

View File

@ -1,9 +1,9 @@
package me.chanjar.weixin.common.api;
package com.ossez.wechat.common.service;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.bean.imgproc.WxImgProcAiCropResult;
import me.chanjar.weixin.common.bean.imgproc.WxImgProcQrCodeResult;
import me.chanjar.weixin.common.bean.imgproc.WxImgProcSuperResolutionResult;
import com.ossez.wechat.common.exception.WxErrorException;
import com.ossez.wechat.common.bean.imgproc.WxImgProcAiCropResult;
import com.ossez.wechat.common.bean.imgproc.WxImgProcQrCodeResult;
import com.ossez.wechat.common.bean.imgproc.WxImgProcSuperResolutionResult;
import java.io.File;

View File

@ -0,0 +1,83 @@
package com.ossez.wechat.common.service;
import com.ossez.wechat.common.model.entity.WeChatOAuth2UserInfo;
import com.ossez.wechat.common.model.WeChatOAuth2AccessToken;
import com.ossez.wechat.common.exception.WxErrorException;
/**
* oauth2 相关接口.
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* created on 2020-08-08
*/
public interface WxOAuth2Service {
/**
* <pre>
* 构造oauth2授权的url连接.
* 详情请见: <a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html">网页授权</a>
* </pre>
*
* @param redirectUri 用户授权完成后的重定向链接无需urlencode, 方法内会进行encode
* @param scope scope,静默:snsapi_base, 带信息授权:snsapi_userinfo
* @param state state
* @return url
*/
String buildAuthorizationUrl(String redirectUri, String scope, String state);
/**
* <pre>
* 用code换取oauth2的access token.
* 详情请见: <a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html">网页授权获取用户基本信息</a>
* </pre>
*
* @param code code
* @return token对象
* @throws WxErrorException .
*/
WeChatOAuth2AccessToken getAccessToken(String code) throws WxErrorException;
/**
* 用code换取oauth2的access token.
*
* @param appId the appid
* @param appSecret the secret
* @param code code
* @return token对象
* @throws WxErrorException .
*/
WeChatOAuth2AccessToken getAccessToken(String appId, String appSecret, String code) throws WxErrorException;
/**
* <pre>
* 刷新oauth2的access token.
* </pre>
*
* @param refreshToken 刷新token
* @return 新的token对象
* @throws WxErrorException .
*/
WeChatOAuth2AccessToken refreshAccessToken(String refreshToken) throws WxErrorException;
/**
* <pre>
* 用oauth2获取用户信息, 当前面引导授权时的scope是snsapi_userinfo的时候才可以.
* </pre>
*
* @param oAuth2AccessToken token对象
* @param lang zh_CN, zh_TW, en
* @return 用户对象
* @throws WxErrorException .
*/
WeChatOAuth2UserInfo getUserInfo(WeChatOAuth2AccessToken oAuth2AccessToken, String lang) throws WxErrorException;
/**
* <pre>
* 验证oauth2的access token是否有效.
* </pre>
*
* @param oAuth2AccessToken token对象
* @return 是否有效
*/
boolean validateAccessToken(WeChatOAuth2AccessToken oAuth2AccessToken);
}

View File

@ -0,0 +1,16 @@
package com.ossez.wechat.common.service;
import lombok.AllArgsConstructor;
import lombok.experimental.Delegate;
/**
* 微信 oauth2服务 装饰器
*
* @author <a href="https://www.sacoc.cn">广州跨界</a>
*/
@AllArgsConstructor
public class WxOAuth2ServiceDecorator implements WxOAuth2Service {
@Delegate
private final WxOAuth2Service wxOAuth2Service;
}

Some files were not shown because too many files have changed in this diff Show More