diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..f49a4e1
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 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:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) 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
+
+ (d) 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
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..411a1e5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,41 @@
+# 微信支付 Spring Boot 组件
+
+为了满足业务中出现app支付、公众号支付、小程序支付等多appid并存的场景,对原有的进行了增强开发出了多租户版本。
+
+请给[Payment Spring Boot](https://github.com/NotFound403/payment-spring-boot) **Star**以鼓励,谢谢。
+
+
+## Maven 最新中央仓库坐标
+
+```xml
+
+ cn.felord
+ payment-spring-boot-starter
+ 1.0.3.RELEASE
+
+```
+
+## 功能
+- 实现微信支付多商户
+- 集成支付宝SDK、快速接入Spring Boot
+- 实现微信支付V3 基础支付
+- 实现微信支付V3 合单支付
+- 实现微信支付V3 代金券
+- 实现微信支付V3 微信支付分
+- 实现微信支付V3 先享卡
+
+## 开源协议
+**Apache 2.0**
+
+## 仓库地址
+- [GitHub](https://github.com/NotFound403/payment-spring-boot)
+- [Gitee](https://gitee.com/felord/payment-spring-boot)
+
+## 文档地址
+- [payment-spring-boot GitHub文档](https://notfound403.github.io/payment-spring-boot)
+- [payment-spring-boot Gitee文档](https://felord.gitee.io/payment-spring-boot)
+
+## QQ交流群
+为了交流解惑,新建QQ群,可通过扫码进入。
+
+
\ No newline at end of file
diff --git a/docs/.nojekyll b/docs/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..6a5a65e
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,48 @@
+## 前言
+大部分的 **Java Web** 项目都会使用 **Spring**,尤其是 **Spring Boot**。所以笔者在开发过程中萌生一种直接构建于Spring依赖之上的支付开发包的想法。由于支付宝已经提供了SDK,所以只要将其初始化委托给 **Spring** 即可。剩下的硬骨头就是微信支付了。
+
+## 微信支付V3的优势
+
+笔者最开始实现微信支付的时候刚好**微信支付V3**版本的 **API**公布了。相比较于 **V2**版本:
+
+- [x] 遵循统一的 **Restful** 的设计风格
+- [x] 使用 **JSON** 作为数据交互的格式,不再使用XML
+- [x] 使用基于非对称密钥的 **SHA256-RSA** 的数字签名算法,不再使用 **MD5** 或 **HMAC-SHA256**
+- [x] 不再要求 **HTTPS** 客户端证书
+- [x] 使用 **AES-256-GCM**,对回调中的关键信息进行加密保护
+
+这种开发体验要远远好于之前的 **V2**,因此选择了微信支付V3。
+
+## 目前支持的渠道
+
+- [x] **微信支付V3** 全量支持,并支持多租户以同时满足移动应用App、公众号、小程序等支付场景
+- [x] **支付宝** 集成SDK,作简单适配
+
+## 微信支付V3进度
+- 微信支付营销-代金券 `WechatMarketingFavorApi` 100%
+- 微信支付 支付功能-普通支付直连模式 `WechatDirectPayApi` 100%
+- 微信合单支付 `WechatCombinePayApi` 100%
+
+## Maven 中央仓库坐标
+> 推荐使用最新版本
+```xml
+
+ cn.felord
+ payment-spring-boot-starter
+ 1.0.3.RELEASE
+
+```
+## 采用技术
+只依赖了 **Spring**已有的东西,做到了低依赖。
+
+- **Spring**
+- **Jackson**
+- **Ali-pay-sdk**
+
+## 开源协议
+
+本项目采用[Apache2.0](https://www.apache.org/licenses/LICENSE-2.0)开源协议。
+
+## **免责声明**
+
+**本项目涉及到资金交易开发,开发者需要经严格测试后方能用于生产环境,本项目不对使用者的行为负责。 **
\ No newline at end of file
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
new file mode 100644
index 0000000..b6d6e26
--- /dev/null
+++ b/docs/_coverpage.md
@@ -0,0 +1,14 @@
+
+# Payment Spring Boot
+
+> Spring Boot 风格支付开发包
+
+- 简单、快捷、融合Spring Boot生态
+
+
+[GitHub](https://github.com/NotFound403/payment-spring-boot)
+[示例项目](https://github.com/NotFound403/payment-spring-boot-samples)
+[技术博客](https://felord.cn)
+[快速开始](README.md)
+
+
\ No newline at end of file
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
new file mode 100644
index 0000000..6be5292
--- /dev/null
+++ b/docs/_sidebar.md
@@ -0,0 +1,7 @@
+* [首页](/)
+* [项目简介](README.md)
+* [快速接入](quick_start.md)
+* [JavaDoc](apidocs/index.html ':ignore')
+* [微信支付V3接口文档](wechat_v3_api.md)
+* [日常踩坑](stackoverflow.md)
+* [更新日志](changelog.md)
diff --git a/docs/apidocs/allclasses-frame.html b/docs/apidocs/allclasses-frame.html
new file mode 100644
index 0000000..8a9ff02
--- /dev/null
+++ b/docs/apidocs/allclasses-frame.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+所有类 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+所有类
+
+
+
diff --git a/docs/apidocs/allclasses-noframe.html b/docs/apidocs/allclasses-noframe.html
new file mode 100644
index 0000000..d943732
--- /dev/null
+++ b/docs/apidocs/allclasses-noframe.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+所有类 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+所有类
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/PayException.html b/docs/apidocs/cn/felord/payment/PayException.html
new file mode 100644
index 0000000..2721956
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/PayException.html
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+PayException (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+PayException
+public PayException()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+PayException
+public PayException(String message,
+ Throwable cause,
+ boolean enableSuppression,
+ boolean writableStackTrace)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/AliPayConfiguration.html b/docs/apidocs/cn/felord/payment/alipay/AliPayConfiguration.html
new file mode 100644
index 0000000..85502fd
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/AliPayConfiguration.html
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+AliPayConfiguration (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/AliPayProperties.V1.html b/docs/apidocs/cn/felord/payment/alipay/AliPayProperties.V1.html
new file mode 100644
index 0000000..de9f70f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/AliPayProperties.V1.html
@@ -0,0 +1,417 @@
+
+
+
+
+
+
+AliPayProperties.V1 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+V1 ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+serverUrl
+private String serverUrl
+alipay server
+
+
+
+
+
+
+
+appId
+private String appId
+your app ID
+
+
+
+
+
+
+
+
+
+
+
+signType
+private String signType
+sign type default RSA2
+
+
+
+
+
+
+
+
+
+
+
+charset
+private String charset
+charset default utf-8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/AliPayProperties.html b/docs/apidocs/cn/felord/payment/alipay/AliPayProperties.html
new file mode 100644
index 0000000..be2fc81
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/AliPayProperties.html
@@ -0,0 +1,308 @@
+
+
+
+
+
+
+AliPayProperties (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayConfiguration.html b/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayConfiguration.html
new file mode 100644
index 0000000..af5619d
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayConfiguration.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.alipay.AliPayConfiguration的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.alipay.AliPayConfiguration的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayProperties.V1.html b/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayProperties.V1.html
new file mode 100644
index 0000000..5bc57e1
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayProperties.V1.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.alipay.AliPayProperties.V1的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayProperties.html b/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayProperties.html
new file mode 100644
index 0000000..78688f0
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/class-use/AliPayProperties.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.alipay.AliPayProperties的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/package-frame.html b/docs/apidocs/cn/felord/payment/alipay/package-frame.html
new file mode 100644
index 0000000..5556faf
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/package-frame.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+cn.felord.payment.alipay (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/package-summary.html b/docs/apidocs/cn/felord/payment/alipay/package-summary.html
new file mode 100644
index 0000000..734cbc4
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/package-summary.html
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+cn.felord.payment.alipay (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/package-tree.html b/docs/apidocs/cn/felord/payment/alipay/package-tree.html
new file mode 100644
index 0000000..f3fb8b3
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/package-tree.html
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+cn.felord.payment.alipay 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/alipay/package-use.html b/docs/apidocs/cn/felord/payment/alipay/package-use.html
new file mode 100644
index 0000000..7e3950e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/alipay/package-use.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+程序包 cn.felord.payment.alipay的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/EnableMobilePay.html b/docs/apidocs/cn/felord/payment/autoconfigure/EnableMobilePay.html
new file mode 100644
index 0000000..9eac4b2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/EnableMobilePay.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+EnableMobilePay (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/PayConfiguration.html b/docs/apidocs/cn/felord/payment/autoconfigure/PayConfiguration.html
new file mode 100644
index 0000000..1e93a63
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/PayConfiguration.html
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+PayConfiguration (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/class-use/EnableMobilePay.html b/docs/apidocs/cn/felord/payment/autoconfigure/class-use/EnableMobilePay.html
new file mode 100644
index 0000000..94c22ca
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/class-use/EnableMobilePay.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.autoconfigure.EnableMobilePay的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.autoconfigure.EnableMobilePay的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/class-use/PayConfiguration.html b/docs/apidocs/cn/felord/payment/autoconfigure/class-use/PayConfiguration.html
new file mode 100644
index 0000000..2f5f405
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/class-use/PayConfiguration.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.autoconfigure.PayConfiguration的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.autoconfigure.PayConfiguration的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/package-frame.html b/docs/apidocs/cn/felord/payment/autoconfigure/package-frame.html
new file mode 100644
index 0000000..570fefb
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/package-frame.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+cn.felord.payment.autoconfigure (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/package-summary.html b/docs/apidocs/cn/felord/payment/autoconfigure/package-summary.html
new file mode 100644
index 0000000..7c1c73f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/package-summary.html
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+cn.felord.payment.autoconfigure (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/package-tree.html b/docs/apidocs/cn/felord/payment/autoconfigure/package-tree.html
new file mode 100644
index 0000000..688fad2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/package-tree.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+cn.felord.payment.autoconfigure 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/autoconfigure/package-use.html b/docs/apidocs/cn/felord/payment/autoconfigure/package-use.html
new file mode 100644
index 0000000..f5d8685
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/autoconfigure/package-use.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+程序包 cn.felord.payment.autoconfigure的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.autoconfigure的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/class-use/PayException.html b/docs/apidocs/cn/felord/payment/class-use/PayException.html
new file mode 100644
index 0000000..39dcc64
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/class-use/PayException.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.PayException的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.PayException的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/package-frame.html b/docs/apidocs/cn/felord/payment/package-frame.html
new file mode 100644
index 0000000..cad14b3
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/package-frame.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+cn.felord.payment (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/package-summary.html b/docs/apidocs/cn/felord/payment/package-summary.html
new file mode 100644
index 0000000..5e5c60a
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/package-summary.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+cn.felord.payment (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/package-tree.html b/docs/apidocs/cn/felord/payment/package-tree.html
new file mode 100644
index 0000000..d11ce66
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/package-tree.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+cn.felord.payment 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/package-use.html b/docs/apidocs/cn/felord/payment/package-use.html
new file mode 100644
index 0000000..9f7ca8e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/package-use.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+程序包 cn.felord.payment的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/WechatPayConfiguration.html b/docs/apidocs/cn/felord/payment/wechat/WechatPayConfiguration.html
new file mode 100644
index 0000000..a5931fc
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/WechatPayConfiguration.html
@@ -0,0 +1,405 @@
+
+
+
+
+
+
+WechatPayConfiguration (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private static String
+CERT_ALIAS
+The constant CERT_ALIAS.
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/WechatPayProperties.V3.html b/docs/apidocs/cn/felord/payment/wechat/WechatPayProperties.V3.html
new file mode 100644
index 0000000..7a7d43d
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/WechatPayProperties.V3.html
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+WechatPayProperties.V3 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+appId
+app id for wechat pay is required
+
+
+
+private String
+appSecret
+app secret for wechat pay is required
+
+
+
+private String
+appV3Secret
+app V3 secret is required by wechat pay V3
+
+
+
+private String
+certPath
+wechat pay certificate Path
+
+
+
+private String
+domain
+your pay server domain
+
+
+
+private String
+mchId
+mchId for wechat pay is required
+
+
+
+private String
+partnerKey
+partnerKey for wechat pay is optional
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+V3 ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/WechatPayProperties.html b/docs/apidocs/cn/felord/payment/wechat/WechatPayProperties.html
new file mode 100644
index 0000000..5611684
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/WechatPayProperties.html
@@ -0,0 +1,307 @@
+
+
+
+
+
+
+WechatPayProperties (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/WechatPayResponseErrorHandler.html b/docs/apidocs/cn/felord/payment/wechat/WechatPayResponseErrorHandler.html
new file mode 100644
index 0000000..71dc9c5
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/WechatPayResponseErrorHandler.html
@@ -0,0 +1,311 @@
+
+
+
+
+
+
+WechatPayResponseErrorHandler (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+org.springframework.web.client.DefaultResponseErrorHandler
+
+
+cn.felord.payment.wechat.WechatPayResponseErrorHandler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+所有方法 实例方法 具体方法
+
+限定符和类型
+方法和说明
+
+
+boolean
+hasError (org.springframework.http.client.ClientHttpResponse response)
+
+
+
+
+
+
+从类继承的方法 org.springframework.web.client.DefaultResponseErrorHandler
+getCharset, getHttpStatusCode, getResponseBody, handleError, handleError, hasError, hasError
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+从接口继承的方法 org.springframework.web.client.ResponseErrorHandler
+handleError
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayConfiguration.html b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayConfiguration.html
new file mode 100644
index 0000000..00bd3fd
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayConfiguration.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.WechatPayConfiguration的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.wechat.WechatPayConfiguration的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayProperties.V3.html b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayProperties.V3.html
new file mode 100644
index 0000000..d2d18ad
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayProperties.V3.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.WechatPayProperties.V3的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayProperties.html b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayProperties.html
new file mode 100644
index 0000000..983c022
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayProperties.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.WechatPayProperties的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayResponseErrorHandler.html b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayResponseErrorHandler.html
new file mode 100644
index 0000000..0fa0cb9
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/class-use/WechatPayResponseErrorHandler.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.WechatPayResponseErrorHandler的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.wechat.WechatPayResponseErrorHandler的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/BankCode.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/BankCode.html
new file mode 100644
index 0000000..07e0a52
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/BankCode.html
@@ -0,0 +1,1091 @@
+
+
+
+
+
+
+BankCode (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/CouponBgColor.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/CouponBgColor.html
new file mode 100644
index 0000000..195a4ca
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/CouponBgColor.html
@@ -0,0 +1,497 @@
+
+
+
+
+
+
+CouponBgColor (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/CouponStatus.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/CouponStatus.html
new file mode 100644
index 0000000..7bf5322
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/CouponStatus.html
@@ -0,0 +1,371 @@
+
+
+
+
+
+
+CouponStatus (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/StockStatus.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/StockStatus.html
new file mode 100644
index 0000000..8ba06e9
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/StockStatus.html
@@ -0,0 +1,490 @@
+
+
+
+
+
+
+StockStatus (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+枚举常量概要
+
+枚举常量
+
+枚举常量和说明
+
+
+AUDIT
+Audit stock status.
+
+
+
+PAUSED
+Paused stock status.
+
+
+
+RUNNING
+Running stock status.
+
+
+
+STOPED
+Stoped stock status.
+
+
+
+UNACTIVATED
+Unactivated stock status.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+value
+public String value()
+Value string.
+
+返回:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/TradeState.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/TradeState.html
new file mode 100644
index 0000000..740e291
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/TradeState.html
@@ -0,0 +1,431 @@
+
+
+
+
+
+
+TradeState (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/TradeType.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/TradeType.html
new file mode 100644
index 0000000..65f3cae
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/TradeType.html
@@ -0,0 +1,416 @@
+
+
+
+
+
+
+TradeType (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/WeChatServer.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/WeChatServer.html
new file mode 100644
index 0000000..205ec03
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/WeChatServer.html
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+WeChatServer (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+domain
+public String domain()
+Gets type.
+
+返回:
+the type
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/WechatPayV3Type.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/WechatPayV3Type.html
new file mode 100644
index 0000000..e3f49c2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/WechatPayV3Type.html
@@ -0,0 +1,878 @@
+
+
+
+
+
+
+WechatPayV3Type (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private org.springframework.http.HttpMethod
+method
+The Method.
+
+
+
+private String
+pattern
+The Pattern.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+pattern
+public String pattern()
+Pattern string.
+
+返回:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/BankCode.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/BankCode.html
new file mode 100644
index 0000000..84e5f60
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/BankCode.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.BankCode的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/CouponBgColor.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/CouponBgColor.html
new file mode 100644
index 0000000..3c77c7c
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/CouponBgColor.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.CouponBgColor的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/CouponStatus.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/CouponStatus.html
new file mode 100644
index 0000000..65ca370
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/CouponStatus.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.CouponStatus的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/StockStatus.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/StockStatus.html
new file mode 100644
index 0000000..10e5206
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/StockStatus.html
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.StockStatus的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/TradeState.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/TradeState.html
new file mode 100644
index 0000000..030ca75
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/TradeState.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.TradeState的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/TradeType.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/TradeType.html
new file mode 100644
index 0000000..0c1d49f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/TradeType.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.TradeType的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/WeChatServer.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/WeChatServer.html
new file mode 100644
index 0000000..cfca260
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/WeChatServer.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.WeChatServer的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/WechatPayV3Type.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/WechatPayV3Type.html
new file mode 100644
index 0000000..f5afafb
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/class-use/WechatPayV3Type.html
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.enumeration.WechatPayV3Type的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+参数类型为WechatPayV3Type 的cn.felord.payment.wechat.v3 中的方法
+
+限定符和类型
+方法和说明
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. billDownloadFunction (WechatPayV3Type type,
+ String link)
+Bill download function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatDirectPayApi. closeByOutTradeNoFunction (WechatPayV3Type type,
+ String outTradeNo)
+
+
+private org.springframework.http.RequestEntity<?>
+WechatCombinePayApi. combinePayFunction (WechatPayV3Type type,
+ CombineH5PayParams params)
+Combine pay function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatCombinePayApi. combinePayFunction (WechatPayV3Type type,
+ CombinePayParams params)
+Combine pay function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. couponDetailFunction (WechatPayV3Type type,
+ CouponDetailsQueryParams params)
+Coupon detail function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. createStocksFunction (WechatPayV3Type type,
+ StocksCreateParams params)
+Create stocks function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. downloadFlowFunction (WechatPayV3Type type,
+ String stockId)
+Download flow function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. marketingImageUploadFunction (WechatPayV3Type type,
+ org.springframework.web.multipart.MultipartFile file)
+Marketing image upload function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatDirectPayApi. payFunction (WechatPayV3Type type,
+ PayParams payParams)
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. queryMerchantsByStockIdFunction (WechatPayV3Type type,
+ MchQueryParams params)
+Query stocks function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. queryStocksByMchFunction (WechatPayV3Type type,
+ StocksQueryParams params)
+Query stocks function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatDirectPayApi. queryTransactionFunction (WechatPayV3Type type,
+ TransactionQueryParams params)
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. queryUserCouponsFunction (WechatPayV3Type type,
+ UserCouponsQueryParams params)
+Query user coupons function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. sendStocksFunction (WechatPayV3Type type,
+ StocksSendParams params)
+Send stocks function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. setMarketingFavorCallbackFunction (WechatPayV3Type type,
+ String notifyUrl)
+Sets marketing favor callback function.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. startAndRestartAndPauseStockFunction (WechatPayV3Type type,
+ String stockId)
+Start and restart and pause stock function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+WechatMarketingFavorApi. stockDetailFunction (WechatPayV3Type type,
+ String stockId)
+Stock detail function request entity.
+
+
+
+<M> WechatPayClient.Executor <M>
+WechatPayClient. withType (WechatPayV3Type wechatPayV3Type,
+ M m)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/package-frame.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-frame.html
new file mode 100644
index 0000000..abf8680
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-frame.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.enumeration (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/package-summary.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-summary.html
new file mode 100644
index 0000000..d07f079
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-summary.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.enumeration (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/package-tree.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-tree.html
new file mode 100644
index 0000000..949b4c2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-tree.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.enumeration 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/enumeration/package-use.html b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-use.html
new file mode 100644
index 0000000..8d958db
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/enumeration/package-use.html
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+程序包 cn.felord.payment.wechat.enumeration的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/package-frame.html b/docs/apidocs/cn/felord/payment/wechat/package-frame.html
new file mode 100644
index 0000000..d88b0a2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/package-frame.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+cn.felord.payment.wechat (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/package-summary.html b/docs/apidocs/cn/felord/payment/wechat/package-summary.html
new file mode 100644
index 0000000..2d36d8b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/package-summary.html
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+cn.felord.payment.wechat (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/package-tree.html b/docs/apidocs/cn/felord/payment/wechat/package-tree.html
new file mode 100644
index 0000000..e09df48
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/package-tree.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+cn.felord.payment.wechat 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/package-use.html b/docs/apidocs/cn/felord/payment/wechat/package-use.html
new file mode 100644
index 0000000..1818888
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/package-use.html
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+程序包 cn.felord.payment.wechat的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/AbstractApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/AbstractApi.html
new file mode 100644
index 0000000..476ac63
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/AbstractApi.html
@@ -0,0 +1,519 @@
+
+
+
+
+
+
+AbstractApi (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+AbstractApi
+public AbstractApi(WechatPayClient wechatPayClient,
+ String tenantId)
+Instantiates a new Abstract api.
+
+参数:
+wechatPayClient - the wechat pay client
+tenantId - the tenant id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage.html b/docs/apidocs/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage.html
new file mode 100644
index 0000000..ce5d5eb
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage.html
@@ -0,0 +1,447 @@
+
+
+
+
+
+
+ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+MultipartHttpOutputMessage
+public MultipartHttpOutputMessage(OutputStream outputStream,
+ Charset charset)
+Instantiates a new Multipart http output message.
+
+参数:
+outputStream - the output stream
+charset - the charset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.html b/docs/apidocs/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.html
new file mode 100644
index 0000000..04fba0a
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.html
@@ -0,0 +1,754 @@
+
+
+
+
+
+
+ExtensionFormHttpMessageConverter (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+org.springframework.http.converter.FormHttpMessageConverter
+
+
+cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private static String
+BOUNDARY
+The constant BOUNDARY.
+
+
+
+private static boolean
+gsonPresent
+The constant gsonPresent.
+
+
+
+private static boolean
+jackson2Present
+The constant jackson2Present.
+
+
+
+private static boolean
+jackson2SmilePresent
+The constant jackson2SmilePresent.
+
+
+
+private static boolean
+jackson2XmlPresent
+The constant jackson2XmlPresent.
+
+
+
+private static boolean
+jaxb2Present
+The constant jaxb2Present.
+
+
+
+private static boolean
+jsonbPresent
+The constant jsonbPresent.
+
+
+
+private List <org.springframework.http.converter.HttpMessageConverter<?>>
+partConverters
+The Part converters.
+
+
+
+
+
+
+
+从类继承的字段 org.springframework.http.converter.FormHttpMessageConverter
+DEFAULT_CHARSET
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+所有方法 静态方法 实例方法 具体方法
+
+限定符和类型
+方法和说明
+
+
+private void
+applyDefaultCharset ()
+Apply the configured charset as a default to registered part converters.
+
+
+
+private org.springframework.http.MediaType
+getMediaType (org.springframework.http.MediaType mediaType)
+Gets media type.
+
+
+
+private boolean
+isMultipart (org.springframework.util.MultiValueMap<String ,?> map,
+ org.springframework.http.MediaType contentType)
+Is multipart boolean.
+
+
+
+void
+write (org.springframework.util.MultiValueMap<String ,?> map,
+ org.springframework.http.MediaType contentType,
+ org.springframework.http.HttpOutputMessage outputMessage)
+
+
+private void
+writeBoundary (OutputStream os,
+ byte[] boundary)
+Write boundary.
+
+
+
+private static void
+writeEnd (OutputStream os,
+ byte[] boundary)
+Write end.
+
+
+
+private void
+writeForm (org.springframework.util.MultiValueMap<String ,Object > formData,
+ org.springframework.http.MediaType contentType,
+ org.springframework.http.HttpOutputMessage outputMessage)
+Write form.
+
+
+
+private void
+writeMultipart (org.springframework.util.MultiValueMap<String ,Object > parts,
+ org.springframework.http.HttpOutputMessage outputMessage)
+Write multipart.
+
+
+
+private static void
+writeNewLine (OutputStream os)
+Write new line.
+
+
+
+private void
+writePart (String name,
+ org.springframework.http.HttpEntity<?> partEntity,
+ OutputStream os)
+Write part.
+
+
+
+private void
+writeParts (OutputStream os,
+ org.springframework.util.MultiValueMap<String ,Object > parts,
+ byte[] boundary)
+Write parts.
+
+
+
+
+
+
+
+从类继承的方法 org.springframework.http.converter.FormHttpMessageConverter
+addPartConverter, addSupportedMediaTypes, canRead, canWrite, generateMultipartBoundary, getFilename, getFormContentType, getHttpEntity, getPartConverters, getSupportedMediaTypes, read, serializeForm, setCharset, setMultipartCharset, setPartConverters, setSupportedMediaTypes
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+write
+public void write(org.springframework.util.MultiValueMap<String ,?> map,
+ @Nullable
+ org.springframework.http.MediaType contentType,
+ org.springframework.http.HttpOutputMessage outputMessage)
+ throws IOException ,
+ org.springframework.http.converter.HttpMessageNotWritableException
+
+指定者:
+write 在接口中 org.springframework.http.converter.HttpMessageConverter<org.springframework.util.MultiValueMap<String ,?>>
+覆盖:
+write 在类中 org.springframework.http.converter.FormHttpMessageConverter
+抛出:
+IOException
+org.springframework.http.converter.HttpMessageNotWritableException
+
+
+
+
+
+
+
+
+
+
+
+
+writeForm
+private void writeForm(org.springframework.util.MultiValueMap<String ,Object > formData,
+ @Nullable
+ org.springframework.http.MediaType contentType,
+ org.springframework.http.HttpOutputMessage outputMessage)
+ throws IOException
+Write form.
+
+参数:
+formData - the form data
+contentType - the content type
+outputMessage - the output message
+抛出:
+IOException - the io exception
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+writeParts
+private void writeParts(OutputStream os,
+ org.springframework.util.MultiValueMap<String ,Object > parts,
+ byte[] boundary)
+ throws IOException
+Write parts.
+
+参数:
+os - the os
+parts - the parts
+boundary - the boundary
+抛出:
+IOException - the io exception
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/KeyPairFactory.html b/docs/apidocs/cn/felord/payment/wechat/v3/KeyPairFactory.html
new file mode 100644
index 0000000..9d26ca4
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/KeyPairFactory.html
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+KeyPairFactory (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+KeyPairFactory
+public KeyPairFactory()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/SignatureProvider.html b/docs/apidocs/cn/felord/payment/wechat/v3/SignatureProvider.html
new file mode 100644
index 0000000..2aedca9
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/SignatureProvider.html
@@ -0,0 +1,553 @@
+
+
+
+
+
+
+SignatureProvider (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+decryptResponseBody
+public String decryptResponseBody(String tenantId,
+ String associatedData,
+ String nonce,
+ String ciphertext)
+解密响应体.
+
+参数:
+tenantId - the properties key
+associatedData - the associated data
+nonce - the nonce
+ciphertext - the ciphertext
+返回:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatApiProvider.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatApiProvider.html
new file mode 100644
index 0000000..0db0562
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatApiProvider.html
@@ -0,0 +1,401 @@
+
+
+
+
+
+
+WechatApiProvider (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatCombinePayApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatCombinePayApi.html
new file mode 100644
index 0000000..2ba35a6
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatCombinePayApi.html
@@ -0,0 +1,499 @@
+
+
+
+
+
+
+WechatCombinePayApi (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+WechatCombinePayApi
+public WechatCombinePayApi(WechatPayClient wechatPayClient,
+ String tenantId)
+Instantiates a new Abstract api.
+
+参数:
+wechatPayClient - the wechat pay client
+tenantId - the tenant id
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+combinePayFunction
+private org.springframework.http.RequestEntity<?> combinePayFunction(WechatPayV3Type type,
+ CombinePayParams params)
+Combine pay function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+combinePayFunction
+private org.springframework.http.RequestEntity<?> combinePayFunction(WechatPayV3Type type,
+ CombineH5PayParams params)
+Combine pay function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatDirectPayApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatDirectPayApi.html
new file mode 100644
index 0000000..0d067dc
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatDirectPayApi.html
@@ -0,0 +1,488 @@
+
+
+
+
+
+
+WechatDirectPayApi (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+WechatDirectPayApi
+public WechatDirectPayApi(WechatPayClient wechatPayClient,
+ String tenantId)
+Instantiates a new Wechat pay api.
+
+参数:
+wechatPayClient - the wechat pay client
+tenantId - the tenant id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatMarketingFavorApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatMarketingFavorApi.html
new file mode 100644
index 0000000..51b3609
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatMarketingFavorApi.html
@@ -0,0 +1,1026 @@
+
+
+
+
+
+
+WechatMarketingFavorApi (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+所有方法 实例方法 具体方法
+
+限定符和类型
+方法和说明
+
+
+String
+billDownload (String link)
+csv对账单下载。
+
+
+
+private org.springframework.http.RequestEntity<?>
+billDownloadFunction (WechatPayV3Type type,
+ String link)
+Bill download function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+couponDetailFunction (WechatPayV3Type type,
+ CouponDetailsQueryParams params)
+Coupon detail function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+createStock (StocksCreateParams params)
+创建代金券批次API
+
+ 通过调用此接口可创建代金券批次,包括 预充值 和 免充值 类型。
+
+
+
+private org.springframework.http.RequestEntity<?>
+createStocksFunction (WechatPayV3Type type,
+ StocksCreateParams params)
+Create stocks function request entity.
+
+
+
+private org.springframework.http.RequestEntity<?>
+downloadFlowFunction (WechatPayV3Type type,
+ String stockId)
+Download flow function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+downloadStockRefundFlow (String stockId)
+下载批次退款明细API
+
+ 数据结果包含在响应体的 csv 字段中
+
+ 可获取到某批次的退款明细数据,包括订单号、单品信息、银行流水号等,用于对账/数据分析。
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+downloadStockUseFlow (String stockId)
+下载批次核销明细API
+
+ 数据结果包含在响应体的 csv 字段中
+
+ 可获取到某批次的核销明细数据,包括订单号、单品信息、银行流水号等,用于对账/数据分析。
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+marketingImageUpload (org.springframework.web.multipart.MultipartFile file)
+营销图片上传API
+
+ 媒体图片只支持JPG、BMP、PNG格式,文件大小不能超过2M。
+
+
+
+private org.springframework.http.RequestEntity<?>
+marketingImageUploadFunction (WechatPayV3Type type,
+ org.springframework.web.multipart.MultipartFile file)
+Marketing image upload function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+pauseStock (String stockId)
+暂停代金券批次API
+
+ 通过此接口可暂停指定代金券批次。
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+queryCouponDetails (CouponDetailsQueryParams params)
+查询代金券详情API
+
+ 通过此接口可查询代金券信息,包括代金券的基础信息、状态。
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+queryMerchantsByStockId (MchQueryParams params)
+查询代金券可用商户API
+
+ 通过调用此接口可查询批次的可用商户号,判断券是否在某商户号可用,来决定是否展示。
+
+
+
+private org.springframework.http.RequestEntity<?>
+queryMerchantsByStockIdFunction (WechatPayV3Type type,
+ MchQueryParams params)
+Query stocks function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+queryStockDetail (String stockId)
+查询批次详情API
+
+ 通过此接口可查询批次信息,包括批次的配置信息以及批次概况数据。
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+queryStockItems (MchQueryParams params)
+查询代金券可用单品API
+
+ 通过此接口可查询批次的可用商品编码,判断券是否可用于某些商品,来决定是否展示。
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+queryStocksByMch (StocksQueryParams params)
+条件查询批次列表API
+
+ 通过此接口可查询多个批次的信息,包括批次的配置信息以及批次概况数据。
+
+
+
+private org.springframework.http.RequestEntity<?>
+queryStocksByMchFunction (WechatPayV3Type type,
+ StocksQueryParams params)
+Query stocks function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+queryUserCouponsByMchId (UserCouponsQueryParams params)
+根据商户号查用户的券API
+
+ 可通过该接口查询用户在某商户号可用的全部券,可用于商户的小程序/H5中,用户"我的代金券"或"提交订单页"展示优惠信息。
+
+
+
+private org.springframework.http.RequestEntity<?>
+queryUserCouponsFunction (WechatPayV3Type type,
+ UserCouponsQueryParams params)
+Query user coupons function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+restartStock (String stockId)
+重启代金券批次API
+
+ 通过此接口可重启指定代金券批次。
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+sendStock (StocksSendParams params)
+发放代金券API
+
+ 商户侧开发时建议增加发放流水记录。
+
+
+
+private org.springframework.http.RequestEntity<?>
+sendStocksFunction (WechatPayV3Type type,
+ StocksSendParams params)
+Send stocks function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+setMarketingFavorCallback (String notifyUrl)
+代金券核销回调通知API。
+
+
+
+private org.springframework.http.RequestEntity<?>
+setMarketingFavorCallbackFunction (WechatPayV3Type type,
+ String notifyUrl)
+Sets marketing favor callback function.
+
+
+
+private org.springframework.http.RequestEntity<?>
+startAndRestartAndPauseStockFunction (WechatPayV3Type type,
+ String stockId)
+Start and restart and pause stock function request entity.
+
+
+
+WechatResponseEntity <com.fasterxml.jackson.databind.node.ObjectNode>
+startStock (String stockId)
+激活代金券批次API
+
+ 制券成功后,通过调用此接口激活批次,如果是预充值代金券,激活时会从商户账户余额中锁定本批次的营销资金。
+
+
+
+private org.springframework.http.RequestEntity<?>
+stockDetailFunction (WechatPayV3Type type,
+ String stockId)
+Stock detail function request entity.
+
+
+
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+WechatMarketingFavorApi
+public WechatMarketingFavorApi(WechatPayClient wechatPayClient,
+ String tenantId)
+Instantiates a new Wechat marketing favor api.
+
+参数:
+wechatPayClient - the wechat pay client
+tenantId - the tenant id
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+createStocksFunction
+private org.springframework.http.RequestEntity<?> createStocksFunction(WechatPayV3Type type,
+ StocksCreateParams params)
+Create stocks function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+sendStocksFunction
+private org.springframework.http.RequestEntity<?> sendStocksFunction(WechatPayV3Type type,
+ StocksSendParams params)
+Send stocks function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+startAndRestartAndPauseStockFunction
+private org.springframework.http.RequestEntity<?> startAndRestartAndPauseStockFunction(WechatPayV3Type type,
+ String stockId)
+Start and restart and pause stock function request entity.
+
+参数:
+type - the type
+stockId - the stock id
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+queryStocksByMchFunction
+private org.springframework.http.RequestEntity<?> queryStocksByMchFunction(WechatPayV3Type type,
+ StocksQueryParams params)
+Query stocks function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+stockDetailFunction
+private org.springframework.http.RequestEntity<?> stockDetailFunction(WechatPayV3Type type,
+ String stockId)
+Stock detail function request entity.
+
+参数:
+type - the type
+stockId - the stock id
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+couponDetailFunction
+private org.springframework.http.RequestEntity<?> couponDetailFunction(WechatPayV3Type type,
+ CouponDetailsQueryParams params)
+Coupon detail function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+queryMerchantsByStockIdFunction
+private org.springframework.http.RequestEntity<?> queryMerchantsByStockIdFunction(WechatPayV3Type type,
+ MchQueryParams params)
+Query stocks function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+queryUserCouponsFunction
+private org.springframework.http.RequestEntity<?> queryUserCouponsFunction(WechatPayV3Type type,
+ UserCouponsQueryParams params)
+Query user coupons function request entity.
+
+参数:
+type - the type
+params - the params
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+downloadFlowFunction
+private org.springframework.http.RequestEntity<?> downloadFlowFunction(WechatPayV3Type type,
+ String stockId)
+Download flow function request entity.
+
+参数:
+type - the type
+stockId - the stock id
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+marketingImageUploadFunction
+private org.springframework.http.RequestEntity<?> marketingImageUploadFunction(WechatPayV3Type type,
+ org.springframework.web.multipart.MultipartFile file)
+Marketing image upload function request entity.
+
+参数:
+type - the type
+file - the file
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+setMarketingFavorCallbackFunction
+private org.springframework.http.RequestEntity<?> setMarketingFavorCallbackFunction(WechatPayV3Type type,
+ String notifyUrl)
+Sets marketing favor callback function.
+
+参数:
+type - the type
+notifyUrl - the notify url
+返回:
+the marketing favor callback function
+
+
+
+
+
+
+
+
+
+
+
+
+billDownloadFunction
+private org.springframework.http.RequestEntity<?> billDownloadFunction(WechatPayV3Type type,
+ String link)
+Bill download function request entity.
+
+参数:
+type - the type
+link - the link
+返回:
+the request entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+字段 |
+构造器 |
+方法
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatMetaBean.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatMetaBean.html
new file mode 100644
index 0000000..3bf9558
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatMetaBean.html
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+WechatMetaBean (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+keyPair
+private KeyPair keyPair
+The Key pair.
+
+
+
+
+
+
+
+
+
+
+
+tenantId
+private String tenantId
+The Tenant id.
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+WechatMetaBean
+public WechatMetaBean()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatMetaContainer.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatMetaContainer.html
new file mode 100644
index 0000000..d723b20
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatMetaContainer.html
@@ -0,0 +1,405 @@
+
+
+
+
+
+
+WechatMetaContainer (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayCallback.EventType.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayCallback.EventType.html
new file mode 100644
index 0000000..4acbdc8
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayCallback.EventType.html
@@ -0,0 +1,399 @@
+
+
+
+
+
+
+WechatPayCallback.EventType (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+event
+The Event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayCallback.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayCallback.html
new file mode 100644
index 0000000..10cd097
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayCallback.html
@@ -0,0 +1,473 @@
+
+
+
+
+
+
+WechatPayCallback (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+WechatPayCallback
+public WechatPayCallback(SignatureProvider signatureProvider,
+ String tenantId)
+Instantiates a new Wechat pay callback.
+
+参数:
+signatureProvider - the signature provider
+tenantId - the tenant id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayClient.Executor.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayClient.Executor.html
new file mode 100644
index 0000000..1ff887e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayClient.Executor.html
@@ -0,0 +1,562 @@
+
+
+
+
+
+
+WechatPayClient.Executor (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.WechatPayClient.Executor<M>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+Executor (WechatPayV3Type wechatPayV3Type,
+ M model,
+ SignatureProvider signatureProvider,
+ org.springframework.web.client.RestOperations restOperations)
+Instantiates a new Executor.
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+model
+private final M model
+The Model.
+
+
+
+
+
+
+
+requestEntityBiFunction
+private BiFunction <WechatPayV3Type ,M ,org.springframework.http.RequestEntity<?>> requestEntityBiFunction
+The Request entity bi function.
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+
+
+Executor
+Executor(WechatPayV3Type wechatPayV3Type,
+ M model,
+ SignatureProvider signatureProvider,
+ org.springframework.web.client.RestOperations restOperations)
+Instantiates a new Executor.
+
+参数:
+wechatPayV3Type - the v 3 pay type
+model - the model
+signatureProvider - the signature provider
+restOperations - the rest operations
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+request
+public void request()
+Request.
+
+
+
+
+
+
+
+download
+public String download()
+Download string.
+
+返回:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayClient.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayClient.html
new file mode 100644
index 0000000..ab49c74
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatPayClient.html
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+WechatPayClient (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatRequestEntity.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatRequestEntity.html
new file mode 100644
index 0000000..148bb20
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatRequestEntity.html
@@ -0,0 +1,427 @@
+
+
+
+
+
+
+WechatRequestEntity (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+org.springframework.http.HttpEntity<T>
+
+
+org.springframework.http.RequestEntity<T>
+
+
+cn.felord.payment.wechat.v3.WechatRequestEntity<T>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+嵌套类概要
+
+
+
+
+从类继承的嵌套类/接口 org.springframework.http.RequestEntity
+org.springframework.http.RequestEntity.BodyBuilder, org.springframework.http.RequestEntity.HeadersBuilder<B extends org.springframework.http.RequestEntity.HeadersBuilder<B>>, org.springframework.http.RequestEntity.UriTemplateRequestEntity<T>
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private Consumer <org.springframework.http.ResponseEntity<com.fasterxml.jackson.databind.node.ObjectNode>>
+responseBodyConsumer
+The Response body consumer.
+
+
+
+
+
+
+
+从类继承的字段 org.springframework.http.HttpEntity
+EMPTY
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+WechatRequestEntity (T body,
+ org.springframework.util.MultiValueMap<String ,String > headers,
+ org.springframework.http.HttpMethod method,
+ URI url,
+ Type type,
+ Consumer <org.springframework.http.ResponseEntity<com.fasterxml.jackson.databind.node.ObjectNode>> responseBodyConsumer)
+Instantiates a new Wechat request entity.
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+所有方法 静态方法 实例方法 具体方法
+
+限定符和类型
+方法和说明
+
+
+WechatRequestEntity <T >
+headers (org.springframework.http.HttpHeaders httpHeaders)
+Headers wechat request entity.
+
+
+
+static WechatRequestEntity <?>
+of (org.springframework.http.RequestEntity<?> requestEntity,
+ Consumer <org.springframework.http.ResponseEntity<com.fasterxml.jackson.databind.node.ObjectNode>> responseBodyConsumer)
+Of wechat request entity.
+
+
+
+
+
+
+
+从类继承的方法 org.springframework.http.RequestEntity
+delete, delete, equals, get, get, getMethod, getType, getUrl, hashCode, head, head, method, method, method, options, options, patch, patch, post, post, put, put, toString
+
+
+
+
+
+从类继承的方法 org.springframework.http.HttpEntity
+getBody, getHeaders, hasBody
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+
+
+WechatRequestEntity
+public WechatRequestEntity(T body,
+ org.springframework.util.MultiValueMap<String ,String > headers,
+ org.springframework.http.HttpMethod method,
+ URI url,
+ Type type,
+ Consumer <org.springframework.http.ResponseEntity<com.fasterxml.jackson.databind.node.ObjectNode>> responseBodyConsumer)
+Instantiates a new Wechat request entity.
+
+参数:
+body - the body
+headers - the headers
+method - the method
+url - the url
+type - the type
+responseBodyConsumer - the response body consumer
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+of
+public static WechatRequestEntity <?> of(org.springframework.http.RequestEntity<?> requestEntity,
+ Consumer <org.springframework.http.ResponseEntity<com.fasterxml.jackson.databind.node.ObjectNode>> responseBodyConsumer)
+Of wechat request entity.
+
+参数:
+requestEntity - the request entity
+responseBodyConsumer - the response body consumer
+返回:
+the wechat request entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/WechatResponseEntity.html b/docs/apidocs/cn/felord/payment/wechat/v3/WechatResponseEntity.html
new file mode 100644
index 0000000..8b50a87
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/WechatResponseEntity.html
@@ -0,0 +1,446 @@
+
+
+
+
+
+
+WechatResponseEntity (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.WechatResponseEntity<T>
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private T
+body
+The Body.
+
+
+
+private int
+httpStatus
+The Http status.
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+httpStatus
+private int httpStatus
+The Http status.
+
+
+
+
+
+
+
+body
+private T body
+The Body.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/AbstractApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/AbstractApi.html
new file mode 100644
index 0000000..08e3792
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/AbstractApi.html
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.AbstractApi的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage.html
new file mode 100644
index 0000000..e1ba78c
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/ExtensionFormHttpMessageConverter.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/ExtensionFormHttpMessageConverter.html
new file mode 100644
index 0000000..37e05df
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/ExtensionFormHttpMessageConverter.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/KeyPairFactory.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/KeyPairFactory.html
new file mode 100644
index 0000000..1f7180f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/KeyPairFactory.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.KeyPairFactory的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.wechat.v3.KeyPairFactory的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/SignatureProvider.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/SignatureProvider.html
new file mode 100644
index 0000000..3869ba3
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/SignatureProvider.html
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.SignatureProvider的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatApiProvider.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatApiProvider.html
new file mode 100644
index 0000000..505e74f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatApiProvider.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatApiProvider的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatCombinePayApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatCombinePayApi.html
new file mode 100644
index 0000000..e3daa48
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatCombinePayApi.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatCombinePayApi的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatDirectPayApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatDirectPayApi.html
new file mode 100644
index 0000000..c2c115e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatDirectPayApi.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatDirectPayApi的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMarketingFavorApi.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMarketingFavorApi.html
new file mode 100644
index 0000000..c4e91a9
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMarketingFavorApi.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatMarketingFavorApi的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMetaBean.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMetaBean.html
new file mode 100644
index 0000000..5412cde
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMetaBean.html
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatMetaBean的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMetaContainer.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMetaContainer.html
new file mode 100644
index 0000000..606dac2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatMetaContainer.html
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatMetaContainer的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayCallback.EventType.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayCallback.EventType.html
new file mode 100644
index 0000000..cec3f65
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayCallback.EventType.html
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatPayCallback.EventType的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayCallback.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayCallback.html
new file mode 100644
index 0000000..95f05c7
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayCallback.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatPayCallback的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayClient.Executor.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayClient.Executor.html
new file mode 100644
index 0000000..e5841c7
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayClient.Executor.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatPayClient.Executor的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayClient.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayClient.html
new file mode 100644
index 0000000..499502e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatPayClient.html
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatPayClient的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatRequestEntity.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatRequestEntity.html
new file mode 100644
index 0000000..1ee6e12
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatRequestEntity.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatRequestEntity的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatResponseEntity.html b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatResponseEntity.html
new file mode 100644
index 0000000..9c8c065
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/class-use/WechatResponseEntity.html
@@ -0,0 +1,366 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.WechatResponseEntity的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/Amount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/Amount.html
new file mode 100644
index 0000000..b8d2edf
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/Amount.html
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+Amount (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+currency
+The Currency.
+
+
+
+private int
+total
+The Total.
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+Amount ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+total
+private int total
+The Total.
+
+
+
+
+
+
+
+currency
+private String currency
+The Currency.
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+Amount
+public Amount()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CallbackParams.Resource.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CallbackParams.Resource.html
new file mode 100644
index 0000000..b947802
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CallbackParams.Resource.html
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+CallbackParams.Resource (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.CallbackParams.Resource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+algorithm
+private String algorithm
+The Algorithm.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+nonce
+private String nonce
+The Nonce.
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+Resource
+public Resource()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CallbackParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CallbackParams.html
new file mode 100644
index 0000000..b92bdf5
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CallbackParams.html
@@ -0,0 +1,386 @@
+
+
+
+
+
+
+CallbackParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+id
+private String id
+The Id.
+
+
+
+
+
+
+
+
+
+
+
+eventType
+private String eventType
+The Event type.
+
+
+
+
+
+
+
+
+
+
+
+summary
+private String summary
+The Summary.
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+CallbackParams
+public CallbackParams()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.CombineAmount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.CombineAmount.html
new file mode 100644
index 0000000..c49effd
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.CombineAmount.html
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+CombineTransactionConsumeData.CombineAmount (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineTransactionConsumeData.CombineAmount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+totalAmount
+private Long totalAmount
+标价金额,单位为分.
+
+
+
+
+
+
+
+currency
+private String currency
+标价币种.
+
+
+
+
+
+
+
+payerAmount
+private Long payerAmount
+现金支付金额.
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+CombineAmount
+public CombineAmount()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.SubOrderCallback.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.SubOrderCallback.html
new file mode 100644
index 0000000..48946f1
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.SubOrderCallback.html
@@ -0,0 +1,433 @@
+
+
+
+
+
+
+CombineTransactionConsumeData.SubOrderCallback (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineTransactionConsumeData.SubOrderCallback
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+attach
+private String attach
+The Attach.
+
+
+
+
+
+
+
+bankType
+private String bankType
+The Bank type.
+
+
+
+
+
+
+
+mchid
+private String mchid
+The Mchid.
+
+
+
+
+
+
+
+
+
+
+
+subMchid
+private String subMchid
+The Sub mchid.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+tradeType
+private String tradeType
+The Trade type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.html
new file mode 100644
index 0000000..741c243
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CombineTransactionConsumeData.html
@@ -0,0 +1,392 @@
+
+
+
+
+
+
+CombineTransactionConsumeData (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineTransactionConsumeData
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/ConsumeInformation.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/ConsumeInformation.html
new file mode 100644
index 0000000..7a132d5
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/ConsumeInformation.html
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+ConsumeInformation (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.ConsumeInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponAvailableTime.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponAvailableTime.html
new file mode 100644
index 0000000..d70c57d
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponAvailableTime.html
@@ -0,0 +1,316 @@
+
+
+
+
+
+
+CouponAvailableTime (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.CouponAvailableTime
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponConsumeData.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponConsumeData.html
new file mode 100644
index 0000000..0ef0d6c
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponConsumeData.html
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+CouponConsumeData (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponDetailsQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponDetailsQueryParams.html
new file mode 100644
index 0000000..5a00b58
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponDetailsQueryParams.html
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+CouponDetailsQueryParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.CouponDetailsQueryParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+openId
+private String openId
+用户在appid下授权得到的openid
+
+ 参考发券
+
+
+
+
+
+
+
+couponId
+private String couponId
+代金券id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponUseRule.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponUseRule.html
new file mode 100644
index 0000000..74ae0ab
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/CouponUseRule.html
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+CouponUseRule (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+CouponUseRule
+public CouponUseRule()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/Detail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/Detail.html
new file mode 100644
index 0000000..27e8412
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/Detail.html
@@ -0,0 +1,316 @@
+
+
+
+
+
+
+Detail (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+Detail ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+costPrice
+private int costPrice
+订单原价
+
+
+
+
+
+
+
+invoiceId
+private String invoiceId
+商品小票ID
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+Detail
+public Detail()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/DiscountTo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/DiscountTo.html
new file mode 100644
index 0000000..03d82da
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/DiscountTo.html
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+DiscountTo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+cutToPrice
+private Long cutToPrice
+
+
+
+
+
+
+
+maxPrice
+private Long maxPrice
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+DiscountTo
+public DiscountTo()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/FixAvailableTime.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/FixAvailableTime.html
new file mode 100644
index 0000000..5994494
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/FixAvailableTime.html
@@ -0,0 +1,317 @@
+
+
+
+
+
+
+FixAvailableTime (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+beginTime
+private Long beginTime
+The Begin time.
+
+
+
+
+
+
+
+endTime
+private Long endTime
+The End time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/FixedNormalCoupon.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/FixedNormalCoupon.html
new file mode 100644
index 0000000..fce08a2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/FixedNormalCoupon.html
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+FixedNormalCoupon (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.FixedNormalCoupon
+
+
+
+
+
+
+
+
+public class FixedNormalCoupon
+extends Object
+固定面额满减券使用规则, stock_type为NORMAL时必填
+
+ 满transactionMinimum 减少 couponAmount
+
+从以下版本开始:
+1.0.0.RELEASE
+作者:
+felord.cn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/Goods.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/Goods.html
new file mode 100644
index 0000000..30e9f7c
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/Goods.html
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+Goods (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+Goods ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+goodsName
+private String goodsName
+商品名称
+
+
+
+
+
+
+
+quantity
+private int quantity
+商品数量
+
+
+
+
+
+
+
+unitPrice
+private int unitPrice
+商品单价
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+Goods
+public Goods()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/GoodsDetail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/GoodsDetail.html
new file mode 100644
index 0000000..072c7ec
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/GoodsDetail.html
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+GoodsDetail (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+goodsId
+private String goodsId
+
+
+
+
+
+
+
+price
+private Long price
+
+
+
+
+
+
+
+quantity
+private Long quantity
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+GoodsDetail
+public GoodsDetail()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/H5Info.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/H5Info.html
new file mode 100644
index 0000000..d540637
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/H5Info.html
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+H5Info (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+H5Info ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+type
+private String type
+场景类型
+
+
+
+
+
+
+
+appName
+private String appName
+应用名称
+
+
+
+
+
+
+
+appUrl
+private String appUrl
+网站URL
+
+
+
+
+
+
+
+bundleId
+private String bundleId
+IOS 平台 BundleID
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+H5Info
+public H5Info()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/MchQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/MchQueryParams.html
new file mode 100644
index 0000000..48dbc46
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/MchQueryParams.html
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+MchQueryParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+MchQueryParams
+public MchQueryParams()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/NormalCouponInformation.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/NormalCouponInformation.html
new file mode 100644
index 0000000..22f65c9
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/NormalCouponInformation.html
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+NormalCouponInformation (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.NormalCouponInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/PatternInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/PatternInfo.html
new file mode 100644
index 0000000..c876707
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/PatternInfo.html
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+PatternInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+PatternInfo
+public PatternInfo()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/PayParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/PayParams.html
new file mode 100644
index 0000000..bb8b22c
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/PayParams.html
@@ -0,0 +1,458 @@
+
+
+
+
+
+
+PayParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+appid
+private String appid
+
+
+
+
+
+
+
+mchid
+private String mchid
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+goodsTag
+private String goodsTag
+订单优惠标记
+
+
+
+
+
+
+
+amount
+private Amount amount
+支付金额
+
+
+
+
+
+
+
+payer
+private Payer payer
+支付者 JSAPI/小程序下单 必传
+
+
+
+
+
+
+
+detail
+private Detail detail
+优惠功能
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+PayParams
+public PayParams()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/Payer.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/Payer.html
new file mode 100644
index 0000000..a8c7354
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/Payer.html
@@ -0,0 +1,316 @@
+
+
+
+
+
+
+Payer (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+Payer ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+openid
+private String openid
+用户标识
+
+
+
+
+
+
+
+spOpenid
+private String spOpenid
+用户服务标识
+
+
+
+
+
+
+
+subOpenid
+private String subOpenid
+用户子标识
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+Payer
+public Payer()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/PromotionDetail.GoodsDetail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/PromotionDetail.GoodsDetail.html
new file mode 100644
index 0000000..ed11975
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/PromotionDetail.GoodsDetail.html
@@ -0,0 +1,353 @@
+
+
+
+
+
+
+PromotionDetail.GoodsDetail (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+goodsId
+private String goodsId
+The Goods id.
+
+
+
+
+
+
+
+quantity
+private Long quantity
+The Quantity.
+
+
+
+
+
+
+
+unitPrice
+private Long unitPrice
+The Unit price.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+GoodsDetail
+public GoodsDetail()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/PromotionDetail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/PromotionDetail.html
new file mode 100644
index 0000000..4def24e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/PromotionDetail.html
@@ -0,0 +1,466 @@
+
+
+
+
+
+
+PromotionDetail (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+amount
+private Long amount
+The Amount.
+
+
+
+
+
+
+
+couponId
+private String couponId
+The Coupon id.
+
+
+
+
+
+
+
+currency
+private String currency
+The Currency.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+name
+private String name
+The Name.
+
+
+
+
+
+
+
+
+
+
+
+scope
+private String scope
+The Scope.
+
+
+
+
+
+
+
+stockId
+private String stockId
+The Stock id.
+
+
+
+
+
+
+
+type
+private String type
+The Type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+PromotionDetail
+public PromotionDetail()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/ResponseSignVerifyParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/ResponseSignVerifyParams.html
new file mode 100644
index 0000000..9446d7e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/ResponseSignVerifyParams.html
@@ -0,0 +1,351 @@
+
+
+
+
+
+
+ResponseSignVerifyParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/SceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/SceneInfo.html
new file mode 100644
index 0000000..1852795
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/SceneInfo.html
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+SceneInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+deviceId
+private String deviceId
+商户端设备号
+
+
+
+
+
+
+
+
+
+
+
+h5Info
+private H5Info h5Info
+H5 场景信息
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+SceneInfo
+public SceneInfo()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/SettleInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/SettleInfo.html
new file mode 100644
index 0000000..4a454a6
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/SettleInfo.html
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+SettleInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+SettleInfo
+public SettleInfo()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/SingleitemDiscountOff.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/SingleitemDiscountOff.html
new file mode 100644
index 0000000..c5eb3bb
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/SingleitemDiscountOff.html
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+SingleitemDiscountOff (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.SingleitemDiscountOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/StockUseRule.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/StockUseRule.html
new file mode 100644
index 0000000..843f5bf
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/StockUseRule.html
@@ -0,0 +1,366 @@
+
+
+
+
+
+
+StockUseRule (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+StockUseRule
+public StockUseRule()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksCreateParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksCreateParams.html
new file mode 100644
index 0000000..4d708e2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksCreateParams.html
@@ -0,0 +1,465 @@
+
+
+
+
+
+
+StocksCreateParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+stockName
+private String stockName
+批次名称
+
+
+
+
+
+
+
+comment
+private String comment
+仅配置商户可见,用于自定义信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+noCash
+private Boolean noCash
+可创建代金券的类型包含预充值和免充值两种类型。此字段用来标识制券
是否无资金流
+
+ ● 预充值代金券适用于第三方出资策划的活动,例如:满100减10. 指订单金额100元,用户实付90元,商户实收100元。设置为Boolean.FALSE
+
+ ● 免充值适用于商户策划的活动,例如:满100减10。 指订单金额100元,用户实付90元(用户领券后,在支付中直接核销10元),商户实收90元。设置为Boolean.TRUE
+
+
+
+
+
+
+
+stockType
+private String stockType
+批次类型
+
+
+
+
+
+
+
+
+
+
+
+ext_info
+private String ext_info
+扩展属性
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksQueryParams.html
new file mode 100644
index 0000000..741cb9f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksQueryParams.html
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+StocksQueryParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.StocksQueryParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+offset
+private Integer offset
+必填
+
+ 条件查询批次列表API 页码从0开始,默认第0页,传递1可能出错。
+
+ 查询代金券可用商户API 分页页码,最大1000。
+
+ 查询代金券可用单品API 最大500。
+
+
+
+
+
+
+
+limit
+private Integer limit
+必填
+
+ 条件查询批次列表API 分页大小,最大10。
+
+ 查询代金券可用商户API 最大50。
+
+ 查询代金券可用单品API 最大100。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksSendParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksSendParams.html
new file mode 100644
index 0000000..b5d3572
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/StocksSendParams.html
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+StocksSendParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/StoreInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/StoreInfo.html
new file mode 100644
index 0000000..865a346
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/StoreInfo.html
@@ -0,0 +1,332 @@
+
+
+
+
+
+
+StoreInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+id
+private String id
+门店编号
+
+
+
+
+
+
+
+name
+private String name
+门店名称
+
+
+
+
+
+
+
+areaCode
+private String areaCode
+地区编码
+
+
+
+
+
+
+
+address
+private String address
+详细地址
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+StoreInfo
+public StoreInfo()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.Amount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.Amount.html
new file mode 100644
index 0000000..76e1bb9
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.Amount.html
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+TransactionConsumeData.Amount (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.TransactionConsumeData.Amount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+Amount ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+total
+private int total
+The Total.
+
+
+
+
+
+
+
+payerTotal
+private int payerTotal
+The Payer total.
+
+
+
+
+
+
+
+currency
+private String currency
+The Currency.
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+Amount
+public Amount()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.Payer.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.Payer.html
new file mode 100644
index 0000000..115955a
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.Payer.html
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+TransactionConsumeData.Payer (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.TransactionConsumeData.Payer
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+openid
+The Openid.
+
+
+
+
+
+
+
+
+
+
+构造器概要
+
+构造器
+
+构造器和说明
+
+
+Payer ()
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+openid
+private String openid
+The Openid.
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+Payer
+public Payer()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.SceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.SceneInfo.html
new file mode 100644
index 0000000..7a47860
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.SceneInfo.html
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+TransactionConsumeData.SceneInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.TransactionConsumeData.SceneInfo
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+deviceId
+The Device id.
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+deviceId
+private String deviceId
+The Device id.
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+SceneInfo
+public SceneInfo()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.html
new file mode 100644
index 0000000..b5fae88
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionConsumeData.html
@@ -0,0 +1,525 @@
+
+
+
+
+
+
+TransactionConsumeData (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+appid
+private String appid
+The Appid.
+
+
+
+
+
+
+
+attach
+private String attach
+The Attach.
+
+
+
+
+
+
+
+bankType
+private String bankType
+The Bank type.
+
+
+
+
+
+
+
+mchid
+private String mchid
+The Mchid.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+tradeType
+private String tradeType
+The Trade type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionQueryParams.html
new file mode 100644
index 0000000..9c8d0e0
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/TransactionQueryParams.html
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+TransactionQueryParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.TransactionQueryParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/UserCouponsQueryParams.Status.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/UserCouponsQueryParams.Status.html
new file mode 100644
index 0000000..9ca3077
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/UserCouponsQueryParams.Status.html
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+UserCouponsQueryParams.Status (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+枚举常量概要
+
+枚举常量
+
+枚举常量和说明
+
+
+SENDED
+Sended status.
+
+
+
+USED
+Used status.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+概要:
+嵌套 |
+枚举常量 |
+字段 |
+方法
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/UserCouponsQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/UserCouponsQueryParams.html
new file mode 100644
index 0000000..83e1934
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/UserCouponsQueryParams.html
@@ -0,0 +1,434 @@
+
+
+
+
+
+
+UserCouponsQueryParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+openId
+private String openId
+用户公众号服务号标识
+
+
+
+
+
+
+
+appId
+private String appId
+公众服务号ID
+
+
+
+
+
+
+
+stockId
+private String stockId
+批次号
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+offset
+private Integer offset
+分页页码
+
+
+
+
+
+
+
+limit
+private Integer limit
+分页大小
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Amount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Amount.html
new file mode 100644
index 0000000..e0dfd8b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Amount.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.Amount的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CallbackParams.Resource.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CallbackParams.Resource.html
new file mode 100644
index 0000000..4027efc
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CallbackParams.Resource.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.CallbackParams.Resource的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CallbackParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CallbackParams.html
new file mode 100644
index 0000000..bd663fe
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CallbackParams.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.CallbackParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有cn.felord.payment.wechat.v3.model.CallbackParams的用法
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.CombineAmount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.CombineAmount.html
new file mode 100644
index 0000000..e564ea7
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.CombineAmount.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineTransactionConsumeData.CombineAmount的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.SubOrderCallback.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.SubOrderCallback.html
new file mode 100644
index 0000000..f15718f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.SubOrderCallback.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineTransactionConsumeData.SubOrderCallback的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.html
new file mode 100644
index 0000000..bdf42f2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CombineTransactionConsumeData.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/ConsumeInformation.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/ConsumeInformation.html
new file mode 100644
index 0000000..325c0ad
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/ConsumeInformation.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.ConsumeInformation的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponAvailableTime.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponAvailableTime.html
new file mode 100644
index 0000000..10bc55b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponAvailableTime.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.CouponAvailableTime的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponConsumeData.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponConsumeData.html
new file mode 100644
index 0000000..6db3eed
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponConsumeData.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.CouponConsumeData的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponDetailsQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponDetailsQueryParams.html
new file mode 100644
index 0000000..c9801be
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponDetailsQueryParams.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.CouponDetailsQueryParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponUseRule.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponUseRule.html
new file mode 100644
index 0000000..cab9642
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/CouponUseRule.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.CouponUseRule的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Detail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Detail.html
new file mode 100644
index 0000000..a68ba76
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Detail.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.Detail的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/DiscountTo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/DiscountTo.html
new file mode 100644
index 0000000..8a47b65
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/DiscountTo.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.DiscountTo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/FixAvailableTime.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/FixAvailableTime.html
new file mode 100644
index 0000000..b13bead
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/FixAvailableTime.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.FixAvailableTime的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/FixedNormalCoupon.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/FixedNormalCoupon.html
new file mode 100644
index 0000000..27adf12
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/FixedNormalCoupon.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.FixedNormalCoupon的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Goods.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Goods.html
new file mode 100644
index 0000000..6a4bd00
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Goods.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.Goods的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/GoodsDetail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/GoodsDetail.html
new file mode 100644
index 0000000..a8f52b2
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/GoodsDetail.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.GoodsDetail的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/H5Info.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/H5Info.html
new file mode 100644
index 0000000..69b4f75
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/H5Info.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.H5Info的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/MchQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/MchQueryParams.html
new file mode 100644
index 0000000..f10c3f1
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/MchQueryParams.html
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.MchQueryParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/NormalCouponInformation.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/NormalCouponInformation.html
new file mode 100644
index 0000000..8831d11
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/NormalCouponInformation.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.NormalCouponInformation的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PatternInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PatternInfo.html
new file mode 100644
index 0000000..607bb5d
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PatternInfo.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.PatternInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PayParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PayParams.html
new file mode 100644
index 0000000..ca449a0
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PayParams.html
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.PayParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Payer.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Payer.html
new file mode 100644
index 0000000..b14d348
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/Payer.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.Payer的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PromotionDetail.GoodsDetail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PromotionDetail.GoodsDetail.html
new file mode 100644
index 0000000..821703b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PromotionDetail.GoodsDetail.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PromotionDetail.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PromotionDetail.html
new file mode 100644
index 0000000..4350b77
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/PromotionDetail.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.PromotionDetail的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/ResponseSignVerifyParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/ResponseSignVerifyParams.html
new file mode 100644
index 0000000..e8853eb
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/ResponseSignVerifyParams.html
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SceneInfo.html
new file mode 100644
index 0000000..9ef139c
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SceneInfo.html
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.SceneInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SettleInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SettleInfo.html
new file mode 100644
index 0000000..627c2fc
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SettleInfo.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.SettleInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SingleitemDiscountOff.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SingleitemDiscountOff.html
new file mode 100644
index 0000000..5140781
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/SingleitemDiscountOff.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.SingleitemDiscountOff的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StockUseRule.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StockUseRule.html
new file mode 100644
index 0000000..ba214aa
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StockUseRule.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.StockUseRule的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksCreateParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksCreateParams.html
new file mode 100644
index 0000000..996c82e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksCreateParams.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.StocksCreateParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksQueryParams.html
new file mode 100644
index 0000000..bb605c5
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksQueryParams.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.StocksQueryParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksSendParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksSendParams.html
new file mode 100644
index 0000000..d08b5bb
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StocksSendParams.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.StocksSendParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StoreInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StoreInfo.html
new file mode 100644
index 0000000..e767ab3
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/StoreInfo.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.StoreInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.Amount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.Amount.html
new file mode 100644
index 0000000..00f102f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.Amount.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.TransactionConsumeData.Amount的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.Payer.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.Payer.html
new file mode 100644
index 0000000..77ff422
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.Payer.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.TransactionConsumeData.Payer的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.SceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.SceneInfo.html
new file mode 100644
index 0000000..5ccbd81
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.SceneInfo.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.TransactionConsumeData.SceneInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.html
new file mode 100644
index 0000000..acddfc4
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionConsumeData.html
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.TransactionConsumeData的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionQueryParams.html
new file mode 100644
index 0000000..f0999f0
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/TransactionQueryParams.html
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.TransactionQueryParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/UserCouponsQueryParams.Status.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/UserCouponsQueryParams.Status.html
new file mode 100644
index 0000000..97dab2b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/UserCouponsQueryParams.Status.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.UserCouponsQueryParams.Status的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/UserCouponsQueryParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/UserCouponsQueryParams.html
new file mode 100644
index 0000000..8d6688f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/class-use/UserCouponsQueryParams.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.UserCouponsQueryParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineAmount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineAmount.html
new file mode 100644
index 0000000..5ce1570
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineAmount.html
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+CombineAmount (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineAmount
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+currency
+符合ISO 4217标准的三位字母代码,必填,人民币:CNY 。
+
+
+
+private Long
+totalAmount
+子单金额,单位为分,必填
+
+ 境外场景下,标价金额要超过商户结算币种的最小单位金额,例如结算币种为美元,则标价金额必须大于1美分
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+totalAmount
+private Long totalAmount
+子单金额,单位为分,必填
+
+ 境外场景下,标价金额要超过商户结算币种的最小单位金额,例如结算币种为美元,则标价金额必须大于1美分
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+CombineAmount
+public CombineAmount()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineCloseParams.ClosingSubOrder.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineCloseParams.ClosingSubOrder.html
new file mode 100644
index 0000000..959323f
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineCloseParams.ClosingSubOrder.html
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+CombineCloseParams.ClosingSubOrder (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineCloseParams.ClosingSubOrder
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+mchid
+子单发起方商户号,必填,必须与发起方appid有绑定关系。
+
+
+
+private String
+outTradeNo
+子单商户订单号,必填,商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。
+
+
+
+private String
+subMchid
+二级商户商户号,由微信支付生成并下发。
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+subMchid
+private String subMchid
+二级商户商户号,由微信支付生成并下发。
+
+ 服务商子商户的商户号,被合单方。
+
+ 直连商户不用传二级商户号。
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+ClosingSubOrder
+public ClosingSubOrder()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineCloseParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineCloseParams.html
new file mode 100644
index 0000000..cb9f6dc
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineCloseParams.html
@@ -0,0 +1,338 @@
+
+
+
+
+
+
+CombineCloseParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineCloseParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineH5PayParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineH5PayParams.html
new file mode 100644
index 0000000..df716f3
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineH5PayParams.html
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+CombineH5PayParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+notifyUrl
+private String notifyUrl
+通知地址,必填,接收微信支付异步通知回调地址,通知url必须为直接可访问的URL,不能携带参数。
+
+ 合单支付需要独立的通知地址。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineH5SceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineH5SceneInfo.html
new file mode 100644
index 0000000..d10db10
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineH5SceneInfo.html
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+CombineH5SceneInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+h5Info
+private H5Info h5Info
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombinePayParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombinePayParams.html
new file mode 100644
index 0000000..d4abe57
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombinePayParams.html
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+CombinePayParams (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+notifyUrl
+private String notifyUrl
+通知地址,必填,接收微信支付异步通知回调地址,通知url必须为直接可访问的URL,不能携带参数。
+
+ 合单支付需要独立的通知地址。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombinePayerInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombinePayerInfo.html
new file mode 100644
index 0000000..62529a1
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombinePayerInfo.html
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+CombinePayerInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombinePayerInfo
+
+
+
+
+
+
+
+
+
+
+
+
+字段概要
+
+字段
+
+限定符和类型
+字段和说明
+
+
+private String
+openid
+使用合单appid获取的对应用户openid。
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineSceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineSceneInfo.html
new file mode 100644
index 0000000..17f5d01
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/CombineSceneInfo.html
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+CombineSceneInfo (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+java.lang.Object
+
+
+cn.felord.payment.wechat.v3.model.combine.CombineSceneInfo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+deviceId
+private String deviceId
+商户设备号,选填。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/SubOrder.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/SubOrder.html
new file mode 100644
index 0000000..66e321a
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/SubOrder.html
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+SubOrder (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
+
+从类继承的方法 java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+subMchid
+private String subMchid
+二级商户商户号,由微信支付生成并下发。
+
+ 服务商子商户的商户号,被合单方。
+
+ 直连商户不用传二级商户号。
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+
+
+SubOrder
+public SubOrder()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+详细资料:
+字段 |
+构造器 |
+方法
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineAmount.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineAmount.html
new file mode 100644
index 0000000..bb87fdf
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineAmount.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineAmount的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineCloseParams.ClosingSubOrder.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineCloseParams.ClosingSubOrder.html
new file mode 100644
index 0000000..4c46b8e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineCloseParams.ClosingSubOrder.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineCloseParams.ClosingSubOrder的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineCloseParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineCloseParams.html
new file mode 100644
index 0000000..6064e48
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineCloseParams.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineCloseParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineH5PayParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineH5PayParams.html
new file mode 100644
index 0000000..7463a2e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineH5PayParams.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineH5SceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineH5SceneInfo.html
new file mode 100644
index 0000000..7a628ef
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineH5SceneInfo.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineH5SceneInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombinePayParams.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombinePayParams.html
new file mode 100644
index 0000000..fedc484
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombinePayParams.html
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombinePayParams的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombinePayerInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombinePayerInfo.html
new file mode 100644
index 0000000..03ecbda
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombinePayerInfo.html
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombinePayerInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineSceneInfo.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineSceneInfo.html
new file mode 100644
index 0000000..5b2f46b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/CombineSceneInfo.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.CombineSceneInfo的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/SubOrder.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/SubOrder.html
new file mode 100644
index 0000000..a680273
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/class-use/SubOrder.html
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+类 cn.felord.payment.wechat.v3.model.combine.SubOrder的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-frame.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-frame.html
new file mode 100644
index 0000000..30bba08
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-frame.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3.model.combine (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-summary.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-summary.html
new file mode 100644
index 0000000..60688b3
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-summary.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3.model.combine (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-tree.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-tree.html
new file mode 100644
index 0000000..603513c
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-tree.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3.model.combine 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-use.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-use.html
new file mode 100644
index 0000000..bf5f2dc
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/combine/package-use.html
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+程序包 cn.felord.payment.wechat.v3.model.combine的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/package-frame.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-frame.html
new file mode 100644
index 0000000..04d9b0b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-frame.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3.model (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/package-summary.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-summary.html
new file mode 100644
index 0000000..0e3f283
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-summary.html
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3.model (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/package-tree.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-tree.html
new file mode 100644
index 0000000..65bd9b5
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-tree.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3.model 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/model/package-use.html b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-use.html
new file mode 100644
index 0000000..33ff09e
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/model/package-use.html
@@ -0,0 +1,377 @@
+
+
+
+
+
+
+程序包 cn.felord.payment.wechat.v3.model的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/package-frame.html b/docs/apidocs/cn/felord/payment/wechat/v3/package-frame.html
new file mode 100644
index 0000000..835b1ab
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/package-frame.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/package-summary.html b/docs/apidocs/cn/felord/payment/wechat/v3/package-summary.html
new file mode 100644
index 0000000..6ec31c8
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/package-summary.html
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/package-tree.html b/docs/apidocs/cn/felord/payment/wechat/v3/package-tree.html
new file mode 100644
index 0000000..8dbbf08
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/package-tree.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+cn.felord.payment.wechat.v3 类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/cn/felord/payment/wechat/v3/package-use.html b/docs/apidocs/cn/felord/payment/wechat/v3/package-use.html
new file mode 100644
index 0000000..391032b
--- /dev/null
+++ b/docs/apidocs/cn/felord/payment/wechat/v3/package-use.html
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+程序包 cn.felord.payment.wechat.v3的使用 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/constant-values.html b/docs/apidocs/constant-values.html
new file mode 100644
index 0000000..bb0bacb
--- /dev/null
+++ b/docs/apidocs/constant-values.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+常量字段值 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
cn.felord.*
+
+
+
+
+cn.felord.payment.wechat.v3.cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+限定符和类型
+常量字段
+值
+
+
+
+
+
+ private static final String
+BOUNDARY
+"boundary"
+
+
+
+
+
+
+cn.felord.payment.wechat.v3.SignatureProvider
+
+限定符和类型
+常量字段
+值
+
+
+
+
+
+ private static final String
+SCHEMA
+"WECHATPAY2-SHA256-RSA2048 "
+
+
+
+
+ public static final String
+TOKEN_PATTERN
+"mchid=\"%s\",nonce_str=\"%s\",timestamp=\"%d\",serial_no=\"%s\",signature=\"%s\""
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/deprecated-list.html b/docs/apidocs/deprecated-list.html
new file mode 100644
index 0000000..4e05f21
--- /dev/null
+++ b/docs/apidocs/deprecated-list.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+已过时的列表 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/help-doc.html b/docs/apidocs/help-doc.html
new file mode 100644
index 0000000..8268256
--- /dev/null
+++ b/docs/apidocs/help-doc.html
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+API 帮助 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+概览
+概览 页面是此 API 文档的首页, 提供了所有程序包的列表及其概要。此页面也可能包含这些程序包的总体说明。
+
+
+程序包
+每个程序包都有一个页面, 其中包含它的类和接口的列表及其概要。此页面可以包含六个类别:
+
+接口 (斜体)
+类
+枚举
+异常错误
+错误
+注释类型
+
+
+
+类/接口
+每个类, 接口, 嵌套类和嵌套接口都有各自的页面。其中每个页面都由三部分 (类/接口说明, 概要表, 以及详细的成员说明) 组成:
+
+类继承图
+直接子类
+所有已知子接口
+所有已知实现类
+类/接口声明
+类/接口说明
+
+
+嵌套类概要
+字段概要
+构造器概要
+方法概要
+
+
+字段详细资料
+构造器详细资料
+方法详细资料
+
+每个概要条目都包含该项目的详细说明的第一句。概要条目按字母顺序排列, 而详细说明则按其在源代码中出现的顺序排列。这样保持了程序员所建立的逻辑分组。
+
+
+注释类型
+每个注释类型都有各自的页面, 其中包含以下部分:
+
+注释类型声明
+注释类型说明
+必需元素概要
+可选元素概要
+元素详细资料
+
+
+
+枚举
+每个枚举都有各自的页面, 其中包含以下部分:
+
+枚举声明
+枚举说明
+枚举常量概要
+枚举常量详细资料
+
+
+
+使用
+每个已文档化的程序包, 类和接口都有各自的“使用”页面。此页面介绍了使用给定类或程序包的任何部分的程序包, 类, 方法, 构造器和字段。对于给定的类或接口 A, 其“使用”页面包含 A 的子类, 声明为 A 的字段, 返回 A 的方法, 以及带有类型为 A 的参数的方法和构造器。访问此页面的方法是: 首先转至程序包, 类或接口, 然后单击导航栏中的 "使用" 链接。
+
+
+树 (类分层结构)
+对于所有程序包, 有一个类分层结构 页面, 以及每个程序包的分层结构。每个分层结构页面都包含类的列表和接口的列表。从java.lang.Object开始, 按继承结构对类进行排列。接口不从java.lang.Object继承。
+
+查看“概览”页面时, 单击 "树" 将显示所有程序包的分层结构。
+查看特定程序包, 类或接口页面时, 单击 "树" 将仅显示该程序包的分层结构。
+
+
+
+已过时的 API
+已过时的 API 页面列出了所有已过时的 API。一般由于进行了改进并且通常提供了替代的 API, 所以建议不要使用已过时的 API。在将来的实现过程中, 可能会删除已过时的 API。
+
+
+索引
+索引 包含按字母顺序排列的所有类, 接口, 构造器, 方法和字段的列表。
+
+
+上一个/下一个
+这些链接使您可以转至下一个或上一个类, 接口, 程序包或相关页面。
+
+
+框架/无框架
+这些链接用于显示和隐藏 HTML 框架。所有页面均具有有框架和无框架两种显示方式。
+
+
+所有类
+所有类 链接显示所有类和接口 (除了非静态嵌套类型)。
+
+
+序列化表格
+每个可序列化或可外部化的类都有其序列化字段和方法的说明。此信息对重新实现者有用, 而对使用 API 的开发者则没有什么用处。尽管导航栏中没有链接, 但您可以通过下列方式获取此信息: 转至任何序列化类, 然后单击类说明的 "另请参阅" 部分中的 "序列化表格"。
+
+
+常量字段值
+常量字段值 页面列出了静态最终字段及其值。
+
+
+
此帮助文件适用于使用标准 doclet 生成的 API 文档。
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/index-all.html b/docs/apidocs/index-all.html
new file mode 100644
index 0000000..67e575a
--- /dev/null
+++ b/docs/apidocs/index-all.html
@@ -0,0 +1,2580 @@
+
+
+
+
+
+
+索引 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+A B C D E F G H I J K L M N O P Q R S T U V W
+
+
+
A
+
+AbstractApi - cn.felord.payment.wechat.v3 中的类
+
+The type Abstract api.
+
+AbstractApi(WechatPayClient, String) - 类 的构造器cn.felord.payment.wechat.v3.AbstractApi
+
+Instantiates a new Abstract api.
+
+address - 类 中的变量cn.felord.payment.wechat.v3.model.StoreInfo
+
+详细地址
+
+addWechatMeta(String, WechatMetaBean) - 类 中的方法cn.felord.payment.wechat.v3.WechatMetaContainer
+
+Add wechat meta boolean.
+
+algorithm - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams.Resource
+
+The Algorithm.
+
+alipayClient(AliPayProperties) - 类 中的方法cn.felord.payment.alipay.AliPayConfiguration
+
+AliPayConfiguration - cn.felord.payment.alipay 中的类
+
+AliPayConfiguration() - 类 的构造器cn.felord.payment.alipay.AliPayConfiguration
+
+AliPayProperties - cn.felord.payment.alipay 中的类
+
+The type Ali pay properties.
+
+AliPayProperties() - 类 的构造器cn.felord.payment.alipay.AliPayProperties
+
+AliPayProperties.V1 - cn.felord.payment.alipay 中的类
+
+The type V 1.
+
+alipayPublicCertPath - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+alipay public cert path
+
+alipayRootCertPath - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+alipay root cert path
+
+Amount - cn.felord.payment.wechat.v3.model 中的类
+
+支付金额 货币单位【分】默认使用人民币标识CNY
+
+Amount() - 类 的构造器cn.felord.payment.wechat.v3.model.Amount
+
+amount - 类 中的变量cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+合单支付订单金额信息,必填。
+
+amount - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Amount.
+
+amount - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+支付金额
+
+amount - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Amount.
+
+amount - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Amount.
+
+Amount() - 类 的构造器cn.felord.payment.wechat.v3.model.TransactionConsumeData.Amount
+
+appCertPublicKeyPath - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+appCertPublicKey
+
+appId - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+your app ID
+
+appid - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+appid - 类 中的变量cn.felord.payment.wechat.v3.model.StocksSendParams
+
+公众账号ID
+
+appid - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Appid.
+
+appId - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+公众服务号ID
+
+appId - 类 中的变量cn.felord.payment.wechat.WechatPayProperties.V3
+
+app id for wechat pay is required
+
+applyDefaultCharset() - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Apply the configured charset as a default to registered part converters.
+
+applyDefaultRestTemplate() - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient
+
+Apply default rest template.
+
+applyObjectMapper(ObjectMapper) - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Apply object mapper.
+
+appName - 类 中的变量cn.felord.payment.wechat.v3.model.H5Info
+
+应用名称
+
+appPay(CombinePayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+合单下单-APP支付API
+
+ 使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。
+
+appPay(PayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+APP下单API
+
+appPrivateKeyPath - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+your app private key, which must be in a single line
+
+appRSAPrivateKey(String) - 类 中的方法cn.felord.payment.alipay.AliPayConfiguration
+
+appSecret - 类 中的变量cn.felord.payment.wechat.WechatPayProperties.V3
+
+app secret for wechat pay is required
+
+appUrl - 类 中的变量cn.felord.payment.wechat.v3.model.H5Info
+
+网站URL
+
+appV3Secret - 类 中的变量cn.felord.payment.wechat.WechatPayProperties.V3
+
+app V3 secret is required by wechat pay V3
+
+areaCode - 类 中的变量cn.felord.payment.wechat.v3.model.StoreInfo
+
+地区编码
+
+associatedData - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams.Resource
+
+The Associated data.
+
+attach - 类 中的变量cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+附加数据,必填,在查询API和支付通知中原样返回,可作为自定义参数使用。
+
+attach - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Attach.
+
+attach - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
+
+attach - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Attach.
+
+availableBeginTime - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+availableBeginTime - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+批次开始时间 rfc 3339 yyyy-mm-ddthh:mm:ss.sss+timezone
+
+availableEndTime - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+availableEndTime - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+批次结束时间 rfc 3339 YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE
+
+availableItems - 类 中的变量cn.felord.payment.wechat.v3.model.CouponUseRule
+
+availableMchId - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+可用商户号
+
+availableMerchants - 类 中的变量cn.felord.payment.wechat.v3.model.CouponUseRule
+
+availableTimeAfterReceive - 类 中的变量cn.felord.payment.wechat.v3.model.CouponAvailableTime
+
+The Available time after receive.
+
+availableWeekDay - 类 中的变量cn.felord.payment.wechat.v3.model.FixAvailableTime
+
+The Available week day.
+
+
+
+
+
+
B
+
+backgroundColor - 类 中的变量cn.felord.payment.wechat.v3.model.PatternInfo
+
+背景色
+
+BankCode - cn.felord.payment.wechat.enumeration 中的枚举
+
+The enum Bank code.
+
+BankCode(String, String) - 枚举 的构造器cn.felord.payment.wechat.enumeration.BankCode
+
+bankName - 枚举 中的变量cn.felord.payment.wechat.enumeration.BankCode
+
+bankName() - 枚举 中的方法cn.felord.payment.wechat.enumeration.BankCode
+
+bankType - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Bank type.
+
+bankType - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Bank type.
+
+beginTime - 类 中的变量cn.felord.payment.wechat.v3.model.FixAvailableTime
+
+The Begin time.
+
+belongMerchant - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+批次归属商户号
+
+billDownload(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+csv对账单下载。
+
+billDownloadFunction(WechatPayV3Type, String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Bill download function request entity.
+
+body - 类 中的变量cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams
+
+response.body 微信服务器的响应体
+
+body - 类 中的变量cn.felord.payment.wechat.v3.WechatResponseEntity
+
+The Body.
+
+BOUNDARY - 类 中的静态变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The constant BOUNDARY.
+
+bundleId - 类 中的变量cn.felord.payment.wechat.v3.model.H5Info
+
+IOS 平台 BundleID
+
+
+
+
+
+
C
+
+callback(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatApiProvider
+
+回调.
+
+callback(ResponseSignVerifyParams, WechatPayCallback.EventType) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayCallback
+
+Callback string.
+
+CallbackParams - cn.felord.payment.wechat.v3.model 中的类
+
+微信支付回调请求参数.
+
+CallbackParams() - 类 的构造器cn.felord.payment.wechat.v3.model.CallbackParams
+
+CallbackParams.Resource - cn.felord.payment.wechat.v3.model 中的类
+
+The type Resource.
+
+CERT_ALIAS - 类 中的静态变量cn.felord.payment.wechat.WechatPayConfiguration
+
+The constant CERT_ALIAS.
+
+CERTIFICATE_MAP - 类 中的静态变量cn.felord.payment.wechat.v3.SignatureProvider
+
+微信平台证书容器 key = 序列号 value = 证书对象
+
+certPath - 类 中的变量cn.felord.payment.wechat.WechatPayProperties.V3
+
+wechat pay certificate Path
+
+charset - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+charset default utf-8
+
+charset - 类 中的变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+The Charset.
+
+ciphertext - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams.Resource
+
+The Ciphertext.
+
+client() - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Client wechat pay client.
+
+close(CombineCloseParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+合单关闭订单API.
+
+close(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+关单API
+
+closeByOutTradeNoFunction(WechatPayV3Type, String) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+ClosingSubOrder() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombineCloseParams.ClosingSubOrder
+
+cn.felord.payment - 程序包 cn.felord.payment
+
+cn.felord.payment.alipay - 程序包 cn.felord.payment.alipay
+
+cn.felord.payment.autoconfigure - 程序包 cn.felord.payment.autoconfigure
+
+cn.felord.payment.wechat - 程序包 cn.felord.payment.wechat
+
+cn.felord.payment.wechat.enumeration - 程序包 cn.felord.payment.wechat.enumeration
+
+cn.felord.payment.wechat.v3 - 程序包 cn.felord.payment.wechat.v3
+
+cn.felord.payment.wechat.v3.model - 程序包 cn.felord.payment.wechat.v3.model
+
+cn.felord.payment.wechat.v3.model.combine - 程序包 cn.felord.payment.wechat.v3.model.combine
+
+code - 枚举 中的变量cn.felord.payment.wechat.enumeration.BankCode
+
+code() - 枚举 中的方法cn.felord.payment.wechat.enumeration.BankCode
+
+color - 枚举 中的变量cn.felord.payment.wechat.enumeration.CouponBgColor
+
+color() - 枚举 中的方法cn.felord.payment.wechat.enumeration.CouponBgColor
+
+CombineAmount - cn.felord.payment.wechat.v3.model.combine 中的类
+
+合单支付订单金额信息.
+
+CombineAmount() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombineAmount
+
+CombineAmount() - 类 的构造器cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.CombineAmount
+
+combineAppid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineCloseParams
+
+合单商户appid,必填
+
+combineAppid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+合单商户appid,必填
+
+combineAppid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+合单商户appid,必填
+
+combineAppid - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData
+
+合单商户appid.
+
+CombineCloseParams - cn.felord.payment.wechat.v3.model.combine 中的类
+
+合单支付 关单参数.
+
+CombineCloseParams() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombineCloseParams
+
+CombineCloseParams.ClosingSubOrder - cn.felord.payment.wechat.v3.model.combine 中的类
+
+关单-子单信息,最多50单.
+
+CombineH5PayParams - cn.felord.payment.wechat.v3.model.combine 中的类
+
+合单支付 H5支付参数.
+
+CombineH5PayParams() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+CombineH5SceneInfo - cn.felord.payment.wechat.v3.model.combine 中的类
+
+CombineH5SceneInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombineH5SceneInfo
+
+combineMchid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+合单商户号,必填
+
+combineMchid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+合单商户号,必填
+
+combineMchid - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData
+
+合单商户号.
+
+combineOutTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineCloseParams
+
+合单商户订单号,必填,商户侧需要保证同一商户下唯一
+
+combineOutTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+合单商户订单号,必填,商户侧需要保证同一商户下唯一
+
+combineOutTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+合单商户订单号,必填,商户侧需要保证同一商户下唯一
+
+combineOutTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData
+
+合单商户订单号.
+
+combinePayApi(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatApiProvider
+
+合单支付.
+
+combinePayerInfo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+合单支付者信息,选填
+
+CombinePayerInfo - cn.felord.payment.wechat.v3.model.combine 中的类
+
+合单支付,支付者信息.
+
+CombinePayerInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombinePayerInfo
+
+combinePayerInfo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+合单支付者信息,选填
+
+combinePayerInfo - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData
+
+支付者.
+
+combinePayFunction(WechatPayV3Type, CombinePayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+Combine pay function request entity.
+
+combinePayFunction(WechatPayV3Type, CombineH5PayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+Combine pay function request entity.
+
+CombinePayParams - cn.felord.payment.wechat.v3.model.combine 中的类
+
+合单支付 APP支付、JSAPI支付、小程序支付、Native支付参数.
+
+CombinePayParams() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+CombineSceneInfo - cn.felord.payment.wechat.v3.model.combine 中的类
+
+合单支付场景信息.
+
+CombineSceneInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.CombineSceneInfo
+
+combineTransactionCallback(ResponseSignVerifyParams, Consumer<CombineTransactionConsumeData>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayCallback
+
+微信合单支付成功回调.
+
+CombineTransactionConsumeData - cn.felord.payment.wechat.v3.model 中的类
+
+合单支付回调解密数据.
+
+CombineTransactionConsumeData() - 类 的构造器cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData
+
+CombineTransactionConsumeData.CombineAmount - cn.felord.payment.wechat.v3.model 中的类
+
+订单金额信息.
+
+CombineTransactionConsumeData.SubOrderCallback - cn.felord.payment.wechat.v3.model 中的类
+
+合单支付回调子订单.
+
+combineUse - 类 中的变量cn.felord.payment.wechat.v3.model.CouponUseRule
+
+comment - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+仅配置商户可见,用于自定义信息
+
+ConsumeInformation - cn.felord.payment.wechat.v3.model 中的类
+
+已实扣代金券信息
+
+ConsumeInformation() - 类 的构造器cn.felord.payment.wechat.v3.model.ConsumeInformation
+
+consumeInformation - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+consumeMchid - 类 中的变量cn.felord.payment.wechat.v3.model.ConsumeInformation
+
+consumer(Consumer<ResponseEntity<ObjectNode>>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+Consumer executor.
+
+consumeTime - 类 中的变量cn.felord.payment.wechat.v3.model.ConsumeInformation
+
+container() - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Container wechat meta container.
+
+convert(ResponseEntity<T>) - 类 中的方法cn.felord.payment.wechat.v3.WechatResponseEntity
+
+
+
+costPrice - 类 中的变量cn.felord.payment.wechat.v3.model.Detail
+
+订单原价
+
+couponAmount - 类 中的变量cn.felord.payment.wechat.v3.model.FixedNormalCoupon
+
+面额,单位分
+
+couponAmount - 类 中的变量cn.felord.payment.wechat.v3.model.NormalCouponInformation
+
+CouponAvailableTime - cn.felord.payment.wechat.v3.model 中的类
+
+CouponAvailableTime() - 类 的构造器cn.felord.payment.wechat.v3.model.CouponAvailableTime
+
+couponAvailableTime - 类 中的变量cn.felord.payment.wechat.v3.model.CouponUseRule
+
+CouponBgColor - cn.felord.payment.wechat.enumeration 中的枚举
+
+优惠券背景色
+
+ https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/convention/chapter3_1.shtml#menu1
+
+CouponBgColor(String) - 枚举 的构造器cn.felord.payment.wechat.enumeration.CouponBgColor
+
+couponCallback(ResponseSignVerifyParams, Consumer<CouponConsumeData>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayCallback
+
+微信支付代金券核销回调.
+
+CouponConsumeData - cn.felord.payment.wechat.v3.model 中的类
+
+微信代金券核销通知参数
+
+CouponConsumeData() - 类 的构造器cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+couponDetailFunction(WechatPayV3Type, CouponDetailsQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Coupon detail function request entity.
+
+CouponDetailsQueryParams - cn.felord.payment.wechat.v3.model 中的类
+
+查询代金券详情API参数
+
+CouponDetailsQueryParams() - 类 的构造器cn.felord.payment.wechat.v3.model.CouponDetailsQueryParams
+
+couponId - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+couponId - 类 中的变量cn.felord.payment.wechat.v3.model.CouponDetailsQueryParams
+
+代金券id
+
+couponId - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Coupon id.
+
+couponImage - 类 中的变量cn.felord.payment.wechat.v3.model.PatternInfo
+
+券详情图片
+
+couponMinimum - 类 中的变量cn.felord.payment.wechat.v3.model.StocksSendParams
+
+指定面额发券批次门槛,其他场景不需要,单位:分。
+
+couponName - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+CouponStatus - cn.felord.payment.wechat.enumeration 中的枚举
+
+The enum Coupon status.
+
+CouponStatus() - 枚举 的构造器cn.felord.payment.wechat.enumeration.CouponStatus
+
+couponType - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+CouponUseRule - cn.felord.payment.wechat.v3.model 中的类
+
+核销规则.
+
+CouponUseRule() - 类 的构造器cn.felord.payment.wechat.v3.model.CouponUseRule
+
+couponUseRule - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+核销规则
+
+couponValue - 类 中的变量cn.felord.payment.wechat.v3.model.StocksSendParams
+
+指定面额发券场景,券面额,其他场景不需要填,单位:分。
+
+createEndTime - 类 中的变量cn.felord.payment.wechat.v3.model.StocksQueryParams
+
+选填
+
+ 终止时间 最终满足格式 yyyy-MM-dd'T'HH:mm:ss.SSSXXX
+
+createPKCS12(String, String, String) - 类 中的方法cn.felord.payment.wechat.v3.KeyPairFactory
+
+获取公私钥.
+
+createSign(String...) - 类 中的方法cn.felord.payment.wechat.v3.SignatureProvider
+
+请求时设置签名 组件
+
+createStartTime - 类 中的变量cn.felord.payment.wechat.v3.model.StocksQueryParams
+
+选填
+
+ 起始时间 最终满足格式 yyyy-MM-dd'T'HH:mm:ss.SSSXXX
+
+createStock(StocksCreateParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+创建代金券批次API
+
+ 通过调用此接口可创建代金券批次,包括 预充值 和 免充值 类型。
+
+createStocksFunction(WechatPayV3Type, StocksCreateParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Create stocks function request entity.
+
+createTime - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams
+
+The Create time.
+
+createTime - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+creatorMchId - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+创建批次的商户号
+
+currency - 类 中的变量cn.felord.payment.wechat.v3.model.Amount
+
+The Currency.
+
+currency - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineAmount
+
+符合ISO 4217标准的三位字母代码,必填,人民币:CNY 。
+
+currency - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.CombineAmount
+
+标价币种.
+
+currency - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Currency.
+
+currency - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData.Amount
+
+The Currency.
+
+cutToPrice - 类 中的变量cn.felord.payment.wechat.v3.model.DiscountTo
+
+
+
+
+
+
D
+
+decryptResponseBody(String, String, String, String) - 类 中的方法cn.felord.payment.wechat.v3.SignatureProvider
+
+解密响应体.
+
+description - 枚举 中的变量cn.felord.payment.wechat.enumeration.StockStatus
+
+description() - 枚举 中的方法cn.felord.payment.wechat.enumeration.StockStatus
+
+Description string.
+
+description - 类 中的变量cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+商品描述,必填,需传入应用市场上的APP名字-实际商品名称,例如:天天爱消除-游戏充值。
+
+description - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+description - 类 中的变量cn.felord.payment.wechat.v3.model.PatternInfo
+
+使用说明
+
+description - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+商品描述
+ Image形象店-深圳腾大-QQ公仔
+
+Detail - cn.felord.payment.wechat.v3.model 中的类
+
+Detail() - 类 的构造器cn.felord.payment.wechat.v3.model.Detail
+
+detail - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+优惠功能
+
+deviceId - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineSceneInfo
+
+商户设备号,选填。
+
+deviceId - 类 中的变量cn.felord.payment.wechat.v3.model.SceneInfo
+
+商户端设备号
+
+deviceId - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData.SceneInfo
+
+The Device id.
+
+directPayApi(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatApiProvider
+
+普通支付-直连模式.
+
+discountAmount - 类 中的变量cn.felord.payment.wechat.v3.model.GoodsDetail
+
+discountAmount - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail
+
+The Discount amount.
+
+discountTo - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+DiscountTo - cn.felord.payment.wechat.v3.model 中的类
+
+减至优惠限定字段,仅减至优惠场景有返回
+
+DiscountTo() - 类 的构造器cn.felord.payment.wechat.v3.model.DiscountTo
+
+doDownload(WechatRequestEntity<T>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+Do download string.
+
+doExecute(WechatRequestEntity<T>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+Do execute.
+
+domain - 枚举 中的变量cn.felord.payment.wechat.enumeration.WeChatServer
+
+域名
+
+domain() - 枚举 中的方法cn.felord.payment.wechat.enumeration.WeChatServer
+
+Gets type.
+
+domain - 类 中的变量cn.felord.payment.wechat.WechatPayProperties.V3
+
+your pay server domain
+
+download() - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+Download string.
+
+downloadFlowFunction(WechatPayV3Type, String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Download flow function request entity.
+
+downloadStockRefundFlow(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+下载批次退款明细API
+
+ 数据结果包含在响应体的 csv 字段中
+
+ 可获取到某批次的退款明细数据,包括订单号、单品信息、银行流水号等,用于对账/数据分析。
+
+downloadStockUseFlow(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+下载批次核销明细API
+
+ 数据结果包含在响应体的 csv 字段中
+
+ 可获取到某批次的核销明细数据,包括订单号、单品信息、银行流水号等,用于对账/数据分析。
+
+
+
+
+
+
E
+
+EnableMobilePay - cn.felord.payment.autoconfigure 中的注释类型
+
+endTime - 类 中的变量cn.felord.payment.wechat.v3.model.FixAvailableTime
+
+The End time.
+
+event - 枚举 中的变量cn.felord.payment.wechat.v3.WechatPayCallback.EventType
+
+The Event.
+
+eventType - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams
+
+The Event type.
+
+EventType(String) - 枚举 的构造器cn.felord.payment.wechat.v3.WechatPayCallback.EventType
+
+Instantiates a new Event type.
+
+Executor(WechatPayV3Type, M, SignatureProvider, RestOperations) - 类 的构造器cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+Instantiates a new Executor.
+
+ext_info - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+扩展属性
+
+ExtensionFormHttpMessageConverter - cn.felord.payment.wechat.v3 中的类
+
+用于微信支付处理上传的自定义消息转换器.
+
+ExtensionFormHttpMessageConverter() - 类 的构造器cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Instantiates a new Upload http message converter.
+
+ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage - cn.felord.payment.wechat.v3 中的类
+
+The type Multipart http output message.
+
+
+
+
+
+
F
+
+favorApi(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatApiProvider
+
+代金券.
+
+fixAvailableTime - 类 中的变量cn.felord.payment.wechat.v3.model.CouponAvailableTime
+
+The Fix available time.
+
+FixAvailableTime - cn.felord.payment.wechat.v3.model 中的类
+
+The type Fix available time.
+
+FixAvailableTime() - 类 的构造器cn.felord.payment.wechat.v3.model.FixAvailableTime
+
+fixedNormalCoupon - 类 中的变量cn.felord.payment.wechat.v3.model.CouponUseRule
+
+FixedNormalCoupon - cn.felord.payment.wechat.v3.model 中的类
+
+固定面额满减券使用规则, stock_type为NORMAL时必填
+
+ 满transactionMinimum 减少 couponAmount
+
+FixedNormalCoupon() - 类 的构造器cn.felord.payment.wechat.v3.model.FixedNormalCoupon
+
+format - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+data format only json now
+
+function(BiFunction<WechatPayV3Type, M, RequestEntity<?>>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+Function executor.
+
+
+
+
+
+
G
+
+Get(URI) - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Get request entity.
+
+getBody() - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+getBytes(String) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+Get bytes byte [ ].
+
+getFileAbsolutePath(String) - 类 中的方法cn.felord.payment.alipay.AliPayConfiguration
+
+getHeaders() - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+getMapper() - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Gets mapper.
+
+getMediaType(MediaType) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Gets media type.
+
+getTenantIds() - 类 中的方法cn.felord.payment.wechat.v3.WechatMetaContainer
+
+Gets properties keys.
+
+getWechatMeta(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMetaContainer
+
+Gets wechat meta.
+
+Goods - cn.felord.payment.wechat.v3.model 中的类
+
+Goods() - 类 的构造器cn.felord.payment.wechat.v3.model.Goods
+
+goodsDetail - 类 中的变量cn.felord.payment.wechat.v3.model.ConsumeInformation
+
+goodsDetail - 类 中的变量cn.felord.payment.wechat.v3.model.Detail
+
+单品列表
+
+GoodsDetail - cn.felord.payment.wechat.v3.model 中的类
+
+商户下单接口传的单品信息
+
+GoodsDetail() - 类 的构造器cn.felord.payment.wechat.v3.model.GoodsDetail
+
+goodsDetail - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Goods detail.
+
+GoodsDetail() - 类 的构造器cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail
+
+goodsId - 类 中的变量cn.felord.payment.wechat.v3.model.GoodsDetail
+
+goodsId - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail
+
+The Goods id.
+
+goodsName - 类 中的变量cn.felord.payment.wechat.v3.model.Goods
+
+商品名称
+
+goodsRemark - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail
+
+The Goods remark.
+
+goodsTag - 类 中的变量cn.felord.payment.wechat.v3.model.CouponUseRule
+
+goodsTag - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+订单优惠标记
+
+gsonPresent - 类 中的静态变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The constant gsonPresent.
+
+
+
+
+
+
H
+
+h5Info - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5SceneInfo
+
+H5Info - cn.felord.payment.wechat.v3.model 中的类
+
+H5Info() - 类 的构造器cn.felord.payment.wechat.v3.model.H5Info
+
+h5Info - 类 中的变量cn.felord.payment.wechat.v3.model.SceneInfo
+
+H5 场景信息
+
+h5Pay(CombineH5PayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+合单下单-H5支付API.
+
+h5Pay(PayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+H5下单API
+
+hasError(ClientHttpResponse) - 类 中的方法cn.felord.payment.wechat.WechatPayResponseErrorHandler
+
+header(WechatRequestEntity<T>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+构造私钥签名.
+
+headers - 类 中的变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+The Headers.
+
+headers(HttpHeaders) - 类 中的方法cn.felord.payment.wechat.v3.WechatRequestEntity
+
+Headers wechat request entity.
+
+headersWritten - 类 中的变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+The Headers written.
+
+httpStatus - 类 中的变量cn.felord.payment.wechat.v3.WechatResponseEntity
+
+The Http status.
+
+
+
+
+
+
I
+
+id - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams
+
+The Id.
+
+id - 类 中的变量cn.felord.payment.wechat.v3.model.StoreInfo
+
+门店编号
+
+ID_GENERATOR - 类 中的静态变量cn.felord.payment.wechat.v3.SignatureProvider
+
+The constant ID_GENERATOR.
+
+invoiceId - 类 中的变量cn.felord.payment.wechat.v3.model.Detail
+
+商品小票ID
+
+is1xxInformational() - 类 中的方法cn.felord.payment.wechat.v3.WechatResponseEntity
+
+Is 1 xx informational boolean.
+
+is2xxSuccessful() - 类 中的方法cn.felord.payment.wechat.v3.WechatResponseEntity
+
+Is 2xx successful boolean.
+
+is3xxRedirection() - 类 中的方法cn.felord.payment.wechat.v3.WechatResponseEntity
+
+Is 3xx redirection boolean.
+
+is4xxClientError() - 类 中的方法cn.felord.payment.wechat.v3.WechatResponseEntity
+
+Is 4xx client error boolean.
+
+is5xxServerError() - 类 中的方法cn.felord.payment.wechat.v3.WechatResponseEntity
+
+Is 5xx server error boolean.
+
+isMultipart(MultiValueMap<String, ?>, MediaType) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Is multipart boolean.
+
+
+
+
+
+
J
+
+jackson2Present - 类 中的静态变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The constant jackson2Present.
+
+jackson2SmilePresent - 类 中的静态变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The constant jackson2SmilePresent.
+
+jackson2XmlPresent - 类 中的静态变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The constant jackson2XmlPresent.
+
+jaxb2Present - 类 中的静态变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The constant jaxb2Present.
+
+jsonbPresent - 类 中的静态变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The constant jsonbPresent.
+
+jsPay(CombinePayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+合单下单-JSAPI支付/小程序支付API
+
+ 使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。
+
+jsPay(PayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+JSAPI/小程序下单API
+
+
+
+
+
+
K
+
+keyPair - 类 中的变量cn.felord.payment.wechat.v3.WechatMetaBean
+
+The Key pair.
+
+KeyPairFactory - cn.felord.payment.wechat.v3 中的类
+
+证书工具
+
+KeyPairFactory() - 类 的构造器cn.felord.payment.wechat.v3.KeyPairFactory
+
+
+
+
+
+
L
+
+limit - 类 中的变量cn.felord.payment.wechat.v3.model.MchQueryParams
+
+必填
+
+ 查询代金券可用商户API 最大50。
+
+limit - 类 中的变量cn.felord.payment.wechat.v3.model.StocksQueryParams
+
+必填
+
+ 条件查询批次列表API 分页大小,最大10。
+
+limit - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+分页大小
+
+lock - 类 中的变量cn.felord.payment.wechat.v3.KeyPairFactory
+
+
+
+
+
+
M
+
+mapper - 类 中的变量cn.felord.payment.wechat.v3.AbstractApi
+
+The Mapper.
+
+MAPPER - 类 中的静态变量cn.felord.payment.wechat.v3.WechatPayCallback
+
+The constant MAPPER.
+
+marketingImageUpload(MultipartFile) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+营销图片上传API
+
+ 媒体图片只支持JPG、BMP、PNG格式,文件大小不能超过2M。
+
+marketingImageUploadFunction(WechatPayV3Type, MultipartFile) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Marketing image upload function request entity.
+
+maxAmount - 类 中的变量cn.felord.payment.wechat.v3.model.StockUseRule
+
+总消耗金额,单位:分。
+
+maxAmountByDay - 类 中的变量cn.felord.payment.wechat.v3.model.StockUseRule
+
+单天最高消耗金额,单位:分
+
+maxCoupons - 类 中的变量cn.felord.payment.wechat.v3.model.StockUseRule
+
+最大发券数
+
+maxCouponsPerUser - 类 中的变量cn.felord.payment.wechat.v3.model.StockUseRule
+
+单个用户可领个数,每个用户最多60张券
+
+maxPrice - 类 中的变量cn.felord.payment.wechat.v3.model.DiscountTo
+
+mchid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineCloseParams.ClosingSubOrder
+
+子单发起方商户号,必填,必须与发起方appid有绑定关系。
+
+mchid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+子单发起方商户号,必填,必须与发起方appid有绑定关系。
+
+mchid - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Mchid.
+
+mchid - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+mchid - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Mchid.
+
+mchId - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionQueryParams
+
+mchId - 类 中的变量cn.felord.payment.wechat.WechatPayProperties.V3
+
+mchId for wechat pay is required
+
+MchQueryParams - cn.felord.payment.wechat.v3.model 中的类
+
+查询代金券可用商户.
+
+MchQueryParams() - 类 的构造器cn.felord.payment.wechat.v3.model.MchQueryParams
+
+merchantContribute - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Merchant contribute.
+
+merchantGoodsId - 类 中的变量cn.felord.payment.wechat.v3.model.Goods
+
+商户侧商品编码
+
+merchantLogo - 类 中的变量cn.felord.payment.wechat.v3.model.PatternInfo
+
+商户logo
+
+merchantName - 类 中的变量cn.felord.payment.wechat.v3.model.PatternInfo
+
+商户名称
+
+method - 枚举 中的变量cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+The Method.
+
+method() - 枚举 中的方法cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+Method string.
+
+model - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+The Model.
+
+MultipartHttpOutputMessage(OutputStream, Charset) - 类 的构造器cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+Instantiates a new Multipart http output message.
+
+
+
+
+
+
N
+
+name - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Name.
+
+name - 类 中的变量cn.felord.payment.wechat.v3.model.StoreInfo
+
+门店名称
+
+nativePay(CombinePayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+合单下单-Native支付API.
+
+nativePay(PayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+Native下单API
+
+naturalPersonLimit - 类 中的变量cn.felord.payment.wechat.v3.model.StockUseRule
+
+是否开启自然人限制
+
+noCash - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+noCash - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+可创建代金券的类型包含预充值和免充值两种类型。
+
+nonce - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams.Resource
+
+The Nonce.
+
+normalCouponInformation - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+NormalCouponInformation - cn.felord.payment.wechat.v3.model 中的类
+
+普通满减券面额、门槛信息
+
+NormalCouponInformation() - 类 的构造器cn.felord.payment.wechat.v3.model.NormalCouponInformation
+
+notifyUrl - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+通知地址,必填,接收微信支付异步通知回调地址,通知url必须为直接可访问的URL,不能携带参数。
+
+notifyUrl - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+通知地址,必填,接收微信支付异步通知回调地址,通知url必须为直接可访问的URL,不能携带参数。
+
+notifyUrl - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+通知URL必须为直接可访问的URL,不允许携带查询串。
+
+
+
+
+
+
O
+
+of(RequestEntity<?>, Consumer<ResponseEntity<ObjectNode>>) - 类 中的静态方法cn.felord.payment.wechat.v3.WechatRequestEntity
+
+Of wechat request entity.
+
+offset - 类 中的变量cn.felord.payment.wechat.v3.model.MchQueryParams
+
+必填
+
+ 查询代金券可用商户API 分页页码,最大1000。
+
+offset - 类 中的变量cn.felord.payment.wechat.v3.model.StocksQueryParams
+
+必填
+
+ 条件查询批次列表API 页码从0开始,默认第0页,传递1可能出错。
+
+offset - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+分页页码
+
+openid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayerInfo
+
+使用合单appid获取的对应用户openid。
+
+openId - 类 中的变量cn.felord.payment.wechat.v3.model.CouponDetailsQueryParams
+
+用户在appid下授权得到的openid
+
+ 参考发券
+
+openid - 类 中的变量cn.felord.payment.wechat.v3.model.Payer
+
+用户标识
+
+openid - 类 中的变量cn.felord.payment.wechat.v3.model.StocksSendParams
+
+用户openid 该openid需要与接口传入中的appid有对应关系。
+
+openid - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData.Payer
+
+The Openid.
+
+openId - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+用户公众号服务号标识
+
+originalType - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams.Resource
+
+The Original type.
+
+otherContribute - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Other contribute.
+
+outputStream - 类 中的变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+The Output stream.
+
+outRequestNo - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+商户单据号
+
+outRequestNo - 类 中的变量cn.felord.payment.wechat.v3.model.StocksSendParams
+
+商户单据号
+
+outTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineCloseParams.ClosingSubOrder
+
+子单商户订单号,必填,商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。
+
+outTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+子单商户订单号,必填,商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一。
+
+outTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Out trade no.
+
+outTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一,详见【商户订单号】。
+
+outTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Out trade no.
+
+
+
+
+
+
P
+
+packageName - 类 中的变量cn.felord.payment.wechat.v3.model.H5Info
+
+Android 平台 PackageName
+
+partConverters - 类 中的变量cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+The Part converters.
+
+partnerKey - 类 中的变量cn.felord.payment.wechat.WechatPayProperties.V3
+
+partnerKey for wechat pay is optional
+
+pattern - 枚举 中的变量cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+The Pattern.
+
+pattern() - 枚举 中的方法cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+Pattern string.
+
+PatternInfo - cn.felord.payment.wechat.v3.model 中的类
+
+优惠券样式
+
+PatternInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.PatternInfo
+
+patternInfo - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+代金券样式
+
+pauseStock(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+暂停代金券批次API
+
+ 通过此接口可暂停指定代金券批次。
+
+PayConfiguration - cn.felord.payment.autoconfigure 中的类
+
+PayConfiguration() - 类 的构造器cn.felord.payment.autoconfigure.PayConfiguration
+
+Payer - cn.felord.payment.wechat.v3.model 中的类
+
+Payer() - 类 的构造器cn.felord.payment.wechat.v3.model.Payer
+
+payer - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+支付者 JSAPI/小程序下单 必传
+
+payer - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Payer.
+
+Payer() - 类 的构造器cn.felord.payment.wechat.v3.model.TransactionConsumeData.Payer
+
+payerAmount - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.CombineAmount
+
+现金支付金额.
+
+payerClientIp - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineSceneInfo
+
+用户终端ip,必填。
+
+payerClientIp - 类 中的变量cn.felord.payment.wechat.v3.model.SceneInfo
+
+用户终端IP
+
+payerCurrency - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.CombineAmount
+
+现金支付币种.
+
+payerCurrency - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData.Amount
+
+The Payer currency.
+
+payerTotal - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData.Amount
+
+The Payer total.
+
+PayException - cn.felord.payment 中的异常错误
+
+PayException() - 异常错误 的构造器cn.felord.payment.PayException
+
+PayException(String) - 异常错误 的构造器cn.felord.payment.PayException
+
+PayException(String, Throwable) - 异常错误 的构造器cn.felord.payment.PayException
+
+PayException(Throwable) - 异常错误 的构造器cn.felord.payment.PayException
+
+PayException(String, Throwable, boolean, boolean) - 异常错误 的构造器cn.felord.payment.PayException
+
+payFunction(WechatPayV3Type, PayParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+PayParams - cn.felord.payment.wechat.v3.model 中的类
+
+支付请求参数.
+
+PayParams() - 类 的构造器cn.felord.payment.wechat.v3.model.PayParams
+
+Post(URI, Object) - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Post request entity.
+
+preventApiAbuse - 类 中的变量cn.felord.payment.wechat.v3.model.StockUseRule
+
+api发券防刷
+
+price - 类 中的变量cn.felord.payment.wechat.v3.model.GoodsDetail
+
+profitSharing - 类 中的变量cn.felord.payment.wechat.v3.model.SettleInfo
+
+是否指定分账
+
+PromotionDetail - cn.felord.payment.wechat.v3.model 中的类
+
+The type Promotion detail.
+
+PromotionDetail() - 类 的构造器cn.felord.payment.wechat.v3.model.PromotionDetail
+
+promotionDetail - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Promotion detail.
+
+PromotionDetail.GoodsDetail - cn.felord.payment.wechat.v3.model 中的类
+
+The type Goods detail.
+
+
+
+
+
+
Q
+
+quantity - 类 中的变量cn.felord.payment.wechat.v3.model.Goods
+
+商品数量
+
+quantity - 类 中的变量cn.felord.payment.wechat.v3.model.GoodsDetail
+
+quantity - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail
+
+The Quantity.
+
+queryCouponDetails(CouponDetailsQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+查询代金券详情API
+
+ 通过此接口可查询代金券信息,包括代金券的基础信息、状态。
+
+queryMerchantsByStockId(MchQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+查询代金券可用商户API
+
+ 通过调用此接口可查询批次的可用商户号,判断券是否在某商户号可用,来决定是否展示。
+
+queryMerchantsByStockIdFunction(WechatPayV3Type, MchQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Query stocks function request entity.
+
+queryStockDetail(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+查询批次详情API
+
+ 通过此接口可查询批次信息,包括批次的配置信息以及批次概况数据。
+
+queryStockItems(MchQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+查询代金券可用单品API
+
+ 通过此接口可查询批次的可用商品编码,判断券是否可用于某些商品,来决定是否展示。
+
+queryStocksByMch(StocksQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+条件查询批次列表API
+
+ 通过此接口可查询多个批次的信息,包括批次的配置信息以及批次概况数据。
+
+queryStocksByMchFunction(WechatPayV3Type, StocksQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Query stocks function request entity.
+
+queryTransactionById(TransactionQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+微信支付订单号查询API
+
+queryTransactionByOutTradeNo(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+合单查询订单API.
+
+queryTransactionByOutTradeNo(TransactionQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+商户订单号查询API
+
+queryTransactionFunction(WechatPayV3Type, TransactionQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+queryUserCouponsByMchId(UserCouponsQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+根据商户号查用户的券API
+
+ 可通过该接口查询用户在某商户号可用的全部券,可用于商户的小程序/H5中,用户"我的代金券"或"提交订单页"展示优惠信息。
+
+queryUserCouponsFunction(WechatPayV3Type, UserCouponsQueryParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Query user coupons function request entity.
+
+
+
+
+
+
R
+
+refreshCertificate(String) - 类 中的方法cn.felord.payment.wechat.v3.SignatureProvider
+
+当我方服务器不存在平台证书或者证书同当前响应报文中的证书序列号不一致时应当刷新 调用/v3/certificates
+
+removeWechatMeta(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMetaContainer
+
+Remove wechat meta wechat meta bean.
+
+request() - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+Request.
+
+requestEntityBiFunction - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+The Request entity bi function.
+
+requestSign(String, String, String, String) - 类 中的方法cn.felord.payment.wechat.v3.SignatureProvider
+
+我方请求时加签,使用API证书.
+
+resource - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams
+
+The Resource.
+
+Resource() - 类 的构造器cn.felord.payment.wechat.v3.model.CallbackParams.Resource
+
+resourceType - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams
+
+The Resource type.
+
+responseBodyConsumer - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+The Response body consumer.
+
+responseBodyConsumer - 类 中的变量cn.felord.payment.wechat.v3.WechatRequestEntity
+
+The Response body consumer.
+
+responseSignVerify(ResponseSignVerifyParams) - 类 中的方法cn.felord.payment.wechat.v3.SignatureProvider
+
+我方对响应验签,和应答签名做比较,使用微信平台证书.
+
+ResponseSignVerifyParams - cn.felord.payment.wechat.v3.model 中的类
+
+微信的响应签名校验参数
+
+ResponseSignVerifyParams() - 类 的构造器cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams
+
+restartStock(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+重启代金券批次API
+
+ 通过此接口可重启指定代金券批次。
+
+restOperations - 类 中的变量cn.felord.payment.wechat.v3.SignatureProvider
+
+The Rest operations.
+
+restOperations - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+The Rest operations.
+
+restOperations - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient
+
+The Rest operations.
+
+
+
+
+
+
S
+
+sceneInfo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+合单支付场景信息描述,选填
+
+sceneInfo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+合单支付场景信息描述,选填
+
+sceneInfo - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData
+
+场景信息,合单支付回调只返回device_id
+
+sceneInfo - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+场景信息
+
+SceneInfo - cn.felord.payment.wechat.v3.model 中的类
+
+场景信息
+
+SceneInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.SceneInfo
+
+sceneInfo - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Scene info.
+
+SceneInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.TransactionConsumeData.SceneInfo
+
+SCHEMA - 类 中的静态变量cn.felord.payment.wechat.v3.SignatureProvider
+
+The constant SCHEMA.
+
+scope - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Scope.
+
+secondDayAvailable - 类 中的变量cn.felord.payment.wechat.v3.model.CouponAvailableTime
+
+The Second day available.
+
+senderMchId - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+批次发放商户号
+
+sendStock(StocksSendParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+发放代金券API
+
+ 商户侧开发时建议增加发放流水记录。
+
+sendStocksFunction(WechatPayV3Type, StocksSendParams) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Send stocks function request entity.
+
+serialNumber - 类 中的变量cn.felord.payment.wechat.v3.WechatMetaBean
+
+The Serial number.
+
+serverUrl - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+alipay server
+
+setMarketingFavorCallback(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+代金券核销回调通知API。
+
+setMarketingFavorCallbackFunction(WechatPayV3Type, String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Sets marketing favor callback function.
+
+settleInfo - 类 中的变量cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+结算信息,选填
+
+SettleInfo - cn.felord.payment.wechat.v3.model 中的类
+
+SettleInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.SettleInfo
+
+SignatureProvider - cn.felord.payment.wechat.v3 中的类
+
+签名 加签 验签
+
+ 我方请求微信服务器时,需要根据我方的API证书对参数进行加签;微信服务器会根据我方签名验签以确定请求来自我方服务器;
+
+ 然后微信服务器响应我方请求并在响应报文中使用【微信平台证书】加签 我方需要根据规则验签是否响应来自微信支付服务器
+
+ 其中【微信平台证书】定期会进行更新,不受我方管控,我方需要适当的时候获取最新的证书列表。
+
+SignatureProvider(WechatMetaContainer) - 类 的构造器cn.felord.payment.wechat.v3.SignatureProvider
+
+Instantiates a new Signature provider.
+
+signatureProvider - 类 中的变量cn.felord.payment.wechat.v3.WechatPayCallback
+
+The Signature provider.
+
+signatureProvider - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+The Signature provider.
+
+signatureProvider - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient
+
+The Signature provider.
+
+signatureProvider() - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient
+
+Signature provider signature provider.
+
+signatureProvider(WechatMetaContainer) - 类 中的方法cn.felord.payment.wechat.WechatPayConfiguration
+
+微信支付V3签名工具.
+
+signType - 类 中的变量cn.felord.payment.alipay.AliPayProperties.V1
+
+sign type default RSA2
+
+singleitem - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+singleitemDiscountOff - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+SingleitemDiscountOff - cn.felord.payment.wechat.v3.model 中的类
+
+单品优惠特定信息
+
+SingleitemDiscountOff() - 类 的构造器cn.felord.payment.wechat.v3.model.SingleitemDiscountOff
+
+singlePriceMax - 类 中的变量cn.felord.payment.wechat.v3.model.SingleitemDiscountOff
+
+spOpenid - 类 中的变量cn.felord.payment.wechat.v3.model.Payer
+
+用户服务标识
+
+startAndRestartAndPauseStockFunction(WechatPayV3Type, String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Start and restart and pause stock function request entity.
+
+startStock(String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+激活代金券批次API
+
+ 制券成功后,通过调用此接口激活批次,如果是预充值代金券,激活时会从商户账户余额中锁定本批次的营销资金。
+
+status - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+status - 类 中的变量cn.felord.payment.wechat.v3.model.StocksQueryParams
+
+根据API而定
+
+ 批次状态
+
+status - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+券状态 null 不生效
+
+Status() - 枚举 的构造器cn.felord.payment.wechat.v3.model.UserCouponsQueryParams.Status
+
+stockCreatorMchid - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+stockCreatorMchid - 类 中的变量cn.felord.payment.wechat.v3.model.StocksSendParams
+
+创建批次的商户号
+
+stockDetailFunction(WechatPayV3Type, String) - 类 中的方法cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Stock detail function request entity.
+
+stockId - 类 中的变量cn.felord.payment.wechat.v3.model.CouponConsumeData
+
+stockId - 类 中的变量cn.felord.payment.wechat.v3.model.MchQueryParams
+
+批次ID
+
+stockId - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Stock id.
+
+stockId - 类 中的变量cn.felord.payment.wechat.v3.model.StocksSendParams
+
+批次号 必须为代金券(全场券或单品券)批次号,不支持立减与折扣。
+
+stockId - 类 中的变量cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+批次号
+
+stockName - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+批次名称
+
+StocksCreateParams - cn.felord.payment.wechat.v3.model 中的类
+
+创建优惠券批次参数.
+
+StocksCreateParams() - 类 的构造器cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+StocksQueryParams - cn.felord.payment.wechat.v3.model 中的类
+
+查询参数,适用以下接口:
+
+ 条件查询批次列表API
+
+StocksQueryParams() - 类 的构造器cn.felord.payment.wechat.v3.model.StocksQueryParams
+
+StocksSendParams - cn.felord.payment.wechat.v3.model 中的类
+
+代金券发放接口请求参数
+
+StocksSendParams() - 类 的构造器cn.felord.payment.wechat.v3.model.StocksSendParams
+
+StockStatus - cn.felord.payment.wechat.enumeration 中的枚举
+
+The enum Stock status.
+
+StockStatus(String, String) - 枚举 的构造器cn.felord.payment.wechat.enumeration.StockStatus
+
+stockType - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+批次类型
+
+stockUseRule - 类 中的变量cn.felord.payment.wechat.v3.model.StocksCreateParams
+
+批次使用规则
+
+StockUseRule - cn.felord.payment.wechat.v3.model 中的类
+
+批次使用规则
+
+StockUseRule() - 类 的构造器cn.felord.payment.wechat.v3.model.StockUseRule
+
+store - 类 中的变量cn.felord.payment.wechat.v3.KeyPairFactory
+
+storeInfo - 类 中的变量cn.felord.payment.wechat.v3.model.SceneInfo
+
+商户门店信息
+
+StoreInfo - cn.felord.payment.wechat.v3.model 中的类
+
+StoreInfo() - 类 的构造器cn.felord.payment.wechat.v3.model.StoreInfo
+
+subMchid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineCloseParams.ClosingSubOrder
+
+二级商户商户号,由微信支付生成并下发。
+
+subMchid - 类 中的变量cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+二级商户商户号,由微信支付生成并下发。
+
+subMchid - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Sub mchid.
+
+subOpenid - 类 中的变量cn.felord.payment.wechat.v3.model.Payer
+
+用户子标识
+
+SubOrder - cn.felord.payment.wechat.v3.model.combine 中的类
+
+子单信息,最多50单.
+
+SubOrder() - 类 的构造器cn.felord.payment.wechat.v3.model.combine.SubOrder
+
+SubOrderCallback() - 类 的构造器cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+subOrders - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineCloseParams
+
+子单信息,必填,最多50单
+
+subOrders - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+子单信息,必填,最多50单
+
+subOrders - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+子单信息,必填,最多50单
+
+subOrders - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData
+
+合单支付回调子订单.
+
+subsidyAmount - 类 中的变量cn.felord.payment.wechat.v3.model.SettleInfo
+
+补差金额
+
+successTime - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Success time.
+
+successTime - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Success time.
+
+summary - 类 中的变量cn.felord.payment.wechat.v3.model.CallbackParams
+
+The Summary.
+
+
+
+
+
+
T
+
+tenantId - 类 中的变量cn.felord.payment.wechat.v3.AbstractApi
+
+The Tenant id.
+
+tenantId() - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Tenant id string.
+
+tenantId - 类 中的变量cn.felord.payment.wechat.v3.WechatMetaBean
+
+The Tenant id.
+
+tenantId - 类 中的变量cn.felord.payment.wechat.v3.WechatPayCallback
+
+The Tenant id.
+
+tenantIds - 类 中的变量cn.felord.payment.wechat.v3.WechatMetaContainer
+
+timeExpire - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+交易结束时间,选填
+
+timeExpire - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+交易结束时间,选填
+
+timeExpire - 类 中的变量cn.felord.payment.wechat.v3.model.PayParams
+
+订单失效时间 YYYY-MM-DDTHH:mm:ss+TIMEZONE
+
+timeStart - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams
+
+交易起始时间,选填
+
+timeStart - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombinePayParams
+
+交易起始时间,选填
+
+TOKEN_PATTERN - 类 中的静态变量cn.felord.payment.wechat.v3.SignatureProvider
+
+The constant TOKEN_PATTERN.
+
+toString() - 枚举 中的方法cn.felord.payment.wechat.enumeration.WeChatServer
+
+total - 类 中的变量cn.felord.payment.wechat.v3.model.Amount
+
+The Total.
+
+total - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData.Amount
+
+The Total.
+
+totalAmount - 类 中的变量cn.felord.payment.wechat.v3.model.combine.CombineAmount
+
+子单金额,单位为分,必填
+
+ 境外场景下,标价金额要超过商户结算币种的最小单位金额,例如结算币种为美元,则标价金额必须大于1美分
+
+totalAmount - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.CombineAmount
+
+标价金额,单位为分.
+
+TradeState - cn.felord.payment.wechat.enumeration 中的枚举
+
+微信侧返回交易状态
+
+TradeState() - 枚举 的构造器cn.felord.payment.wechat.enumeration.TradeState
+
+tradeState - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Trade state.
+
+tradeState - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Trade state.
+
+tradeStateDesc - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Trade state desc.
+
+TradeType - cn.felord.payment.wechat.enumeration 中的枚举
+
+微信侧返回交易类型
+
+TradeType() - 枚举 的构造器cn.felord.payment.wechat.enumeration.TradeType
+
+tradeType - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Trade type.
+
+tradeType - 类 中的变量cn.felord.payment.wechat.v3.model.CouponUseRule
+
+tradeType - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Trade type.
+
+transactionCallback(ResponseSignVerifyParams, Consumer<TransactionConsumeData>) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayCallback
+
+微信支付成功回调.
+
+TransactionConsumeData - cn.felord.payment.wechat.v3.model 中的类
+
+TransactionConsumeData() - 类 的构造器cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+TransactionConsumeData.Amount - cn.felord.payment.wechat.v3.model 中的类
+
+The type Amount.
+
+TransactionConsumeData.Payer - cn.felord.payment.wechat.v3.model 中的类
+
+The type Payer.
+
+TransactionConsumeData.SceneInfo - cn.felord.payment.wechat.v3.model 中的类
+
+The type Scene info.
+
+transactionId - 类 中的变量cn.felord.payment.wechat.v3.model.CombineTransactionConsumeData.SubOrderCallback
+
+The Transaction id.
+
+transactionId - 类 中的变量cn.felord.payment.wechat.v3.model.ConsumeInformation
+
+transactionId - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionConsumeData
+
+The Transaction id.
+
+transactionIdOrOutTradeNo - 类 中的变量cn.felord.payment.wechat.v3.model.TransactionQueryParams
+
+transactionMinimum - 类 中的变量cn.felord.payment.wechat.v3.model.FixedNormalCoupon
+
+门槛 满M元可用
+
+transactionMinimum - 类 中的变量cn.felord.payment.wechat.v3.model.NormalCouponInformation
+
+TransactionQueryParams - cn.felord.payment.wechat.v3.model 中的类
+
+TransactionQueryParams() - 类 的构造器cn.felord.payment.wechat.v3.model.TransactionQueryParams
+
+type - 类 中的变量cn.felord.payment.wechat.v3.model.H5Info
+
+场景类型
+
+type - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Type.
+
+
+
+
+
+
U
+
+unitPrice - 类 中的变量cn.felord.payment.wechat.v3.model.Goods
+
+商品单价
+
+unitPrice - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail.GoodsDetail
+
+The Unit price.
+
+uri(WeChatServer) - 枚举 中的方法cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+默认支付URI.
+
+UserCouponsQueryParams - cn.felord.payment.wechat.v3.model 中的类
+
+The type User coupons query params.
+
+UserCouponsQueryParams() - 类 的构造器cn.felord.payment.wechat.v3.model.UserCouponsQueryParams
+
+UserCouponsQueryParams.Status - cn.felord.payment.wechat.v3.model 中的枚举
+
+The enum Status.
+
+
+
+
+
+
V
+
+v1 - 类 中的变量cn.felord.payment.alipay.AliPayProperties
+
+alipay api version 1.0
+
+V1() - 类 的构造器cn.felord.payment.alipay.AliPayProperties.V1
+
+v3 - 类 中的变量cn.felord.payment.wechat.v3.WechatMetaBean
+
+The V3.
+
+v3 - 类 中的变量cn.felord.payment.wechat.WechatPayProperties
+
+wechat pay V3 properties
+
+V3() - 类 的构造器cn.felord.payment.wechat.WechatPayProperties.V3
+
+value - 枚举 中的变量cn.felord.payment.wechat.enumeration.StockStatus
+
+value() - 枚举 中的方法cn.felord.payment.wechat.enumeration.StockStatus
+
+Value string.
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.BankCode
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.CouponBgColor
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.CouponStatus
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.StockStatus
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.TradeState
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.TradeType
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.WeChatServer
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.v3.model.UserCouponsQueryParams.Status
+
+返回带有指定名称的该类型的枚举常量。
+
+valueOf(String) - 枚举 中的静态方法cn.felord.payment.wechat.v3.WechatPayCallback.EventType
+
+返回带有指定名称的该类型的枚举常量。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.BankCode
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.CouponBgColor
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.CouponStatus
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.StockStatus
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.TradeState
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.TradeType
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.enumeration.WeChatServer
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.v3.model.UserCouponsQueryParams.Status
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+values() - 枚举 中的静态方法cn.felord.payment.wechat.v3.WechatPayCallback.EventType
+
+按照声明该枚举类型的常量的顺序, 返回
+包含这些常量的数组。
+
+
+
+
+
+
W
+
+WechatApiProvider - cn.felord.payment.wechat.v3 中的类
+
+微信支付工具.
+
+WechatApiProvider(WechatPayClient) - 类 的构造器cn.felord.payment.wechat.v3.WechatApiProvider
+
+Instantiates a new Wechat api provider.
+
+wechatApiProvider(WechatPayClient) - 类 中的方法cn.felord.payment.wechat.WechatPayConfiguration
+
+多租户接口Provider.
+
+WechatCombinePayApi - cn.felord.payment.wechat.v3 中的类
+
+微信合单支付.
+
+WechatCombinePayApi(WechatPayClient, String) - 类 的构造器cn.felord.payment.wechat.v3.WechatCombinePayApi
+
+Instantiates a new Abstract api.
+
+WechatDirectPayApi - cn.felord.payment.wechat.v3 中的类
+
+普通支付-直连模式.
+
+WechatDirectPayApi(WechatPayClient, String) - 类 的构造器cn.felord.payment.wechat.v3.WechatDirectPayApi
+
+Instantiates a new Wechat pay api.
+
+WechatMarketingFavorApi - cn.felord.payment.wechat.v3 中的类
+
+微信支付营销代金券API
+
+WechatMarketingFavorApi(WechatPayClient, String) - 类 的构造器cn.felord.payment.wechat.v3.WechatMarketingFavorApi
+
+Instantiates a new Wechat marketing favor api.
+
+wechatMetaBean() - 类 中的方法cn.felord.payment.wechat.v3.AbstractApi
+
+Wechat meta bean wechat meta bean.
+
+WechatMetaBean - cn.felord.payment.wechat.v3 中的类
+
+微信支付元数据Bean.
+
+WechatMetaBean() - 类 的构造器cn.felord.payment.wechat.v3.WechatMetaBean
+
+wechatMetaBeanMap - 类 中的变量cn.felord.payment.wechat.v3.WechatMetaContainer
+
+wechatMetaContainer - 类 中的变量cn.felord.payment.wechat.v3.SignatureProvider
+
+The Wechat meta container.
+
+wechatMetaContainer() - 类 中的方法cn.felord.payment.wechat.v3.SignatureProvider
+
+Wechat meta container.
+
+WechatMetaContainer - cn.felord.payment.wechat.v3 中的类
+
+配置容器
+
+WechatMetaContainer() - 类 的构造器cn.felord.payment.wechat.v3.WechatMetaContainer
+
+wechatMetaContainer(WechatPayProperties) - 类 中的方法cn.felord.payment.wechat.WechatPayConfiguration
+
+微信支付公私钥 以及序列号等元数据.
+
+WechatPayCallback - cn.felord.payment.wechat.v3 中的类
+
+微信支付回调工具.
+
+WechatPayCallback(SignatureProvider, String) - 类 的构造器cn.felord.payment.wechat.v3.WechatPayCallback
+
+Instantiates a new Wechat pay callback.
+
+WechatPayCallback.EventType - cn.felord.payment.wechat.v3 中的枚举
+
+事件类型用于处理回调.
+
+wechatPayClient - 类 中的变量cn.felord.payment.wechat.v3.AbstractApi
+
+The Wechat pay client.
+
+wechatPayClient - 类 中的变量cn.felord.payment.wechat.v3.WechatApiProvider
+
+The Wechat pay client.
+
+WechatPayClient - cn.felord.payment.wechat.v3 中的类
+
+The type Wechat pay client.
+
+WechatPayClient(SignatureProvider) - 类 的构造器cn.felord.payment.wechat.v3.WechatPayClient
+
+Instantiates a new Wechat pay service.
+
+wechatPayClient(SignatureProvider) - 类 中的方法cn.felord.payment.wechat.WechatPayConfiguration
+
+微信支付V3 客户端.
+
+WechatPayClient.Executor <M > - cn.felord.payment.wechat.v3 中的类
+
+The type Executor.
+
+WechatPayConfiguration - cn.felord.payment.wechat 中的类
+
+The type Wechat pay configuration.
+
+WechatPayConfiguration() - 类 的构造器cn.felord.payment.wechat.WechatPayConfiguration
+
+wechatpayContribute - 类 中的变量cn.felord.payment.wechat.v3.model.PromotionDetail
+
+The Wechatpay contribute.
+
+wechatpayGoodsId - 类 中的变量cn.felord.payment.wechat.v3.model.Goods
+
+微信侧商品编码
+
+wechatpayNonce - 类 中的变量cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams
+
+response.headers['Wechatpay-Nonce'] 微信服务器提供的随机串
+
+WechatPayProperties - cn.felord.payment.wechat 中的类
+
+The type Wechat pay properties.
+
+WechatPayProperties() - 类 的构造器cn.felord.payment.wechat.WechatPayProperties
+
+WechatPayProperties.V3 - cn.felord.payment.wechat 中的类
+
+wechat pay v3 properties.
+
+WechatPayResponseErrorHandler - cn.felord.payment.wechat 中的类
+
+WechatPayResponseErrorHandler() - 类 的构造器cn.felord.payment.wechat.WechatPayResponseErrorHandler
+
+wechatpaySerial - 类 中的变量cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams
+
+response.headers['Wechatpay-Serial'] 当前使用的微信平台证书序列号
+
+wechatpaySignature - 类 中的变量cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams
+
+response.headers['Wechatpay-Signature'] 微信平台签名
+
+wechatpayTimestamp - 类 中的变量cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams
+
+response.headers['Wechatpay-Timestamp'] 微信服务器的时间戳
+
+WechatPayV3Type - cn.felord.payment.wechat.enumeration 中的枚举
+
+The Wechat Pay V3 type.
+
+WechatPayV3Type(HttpMethod, String) - 枚举 的构造器cn.felord.payment.wechat.enumeration.WechatPayV3Type
+
+Instantiates a new Wechat pay v 3 type.
+
+wechatPayV3Type - 类 中的变量cn.felord.payment.wechat.v3.WechatPayClient.Executor
+
+The V3 pay type.
+
+WechatRequestEntity <T > - cn.felord.payment.wechat.v3 中的类
+
+The type Wechat request entity.
+
+WechatRequestEntity(T, MultiValueMap<String, String>, HttpMethod, URI, Type, Consumer<ResponseEntity<ObjectNode>>) - 类 的构造器cn.felord.payment.wechat.v3.WechatRequestEntity
+
+Instantiates a new Wechat request entity.
+
+WechatResponseEntity <T > - cn.felord.payment.wechat.v3 中的类
+
+The type Wechat response entity.
+
+WechatResponseEntity() - 类 的构造器cn.felord.payment.wechat.v3.WechatResponseEntity
+
+WeChatServer - cn.felord.payment.wechat.enumeration 中的枚举
+
+The enum We chat server domain.
+
+WeChatServer(String) - 枚举 的构造器cn.felord.payment.wechat.enumeration.WeChatServer
+
+withType(WechatPayV3Type, M) - 类 中的方法cn.felord.payment.wechat.v3.WechatPayClient
+
+
+
+write(MultiValueMap<String, ?>, MediaType, HttpOutputMessage) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+writeBoundary(OutputStream, byte[]) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Write boundary.
+
+writeEnd(OutputStream, byte[]) - 类 中的静态方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Write end.
+
+writeForm(MultiValueMap<String, Object>, MediaType, HttpOutputMessage) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Write form.
+
+writeHeaders() - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter.MultipartHttpOutputMessage
+
+Write headers.
+
+writeMultipart(MultiValueMap<String, Object>, HttpOutputMessage) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Write multipart.
+
+writeNewLine(OutputStream) - 类 中的静态方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Write new line.
+
+writePart(String, HttpEntity<?>, OutputStream) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Write part.
+
+writeParts(OutputStream, MultiValueMap<String, Object>, byte[]) - 类 中的方法cn.felord.payment.wechat.v3.ExtensionFormHttpMessageConverter
+
+Write parts.
+
+
+
A B C D E F G H I J K L M N O P Q R S T U V W
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/index.html b/docs/apidocs/index.html
new file mode 100644
index 0000000..c22cd0c
--- /dev/null
+++ b/docs/apidocs/index.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+payment-spring-boot 1.0.0.RELEASE API
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+框架预警
+请使用框架功能查看此文档。如果看到此消息, 则表明您使用的是不支持框架的 Web 客户机。链接到非框架版本 。
+
+
+
diff --git a/docs/apidocs/overview-frame.html b/docs/apidocs/overview-frame.html
new file mode 100644
index 0000000..64c1a34
--- /dev/null
+++ b/docs/apidocs/overview-frame.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+概览列表 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/apidocs/overview-summary.html b/docs/apidocs/overview-summary.html
new file mode 100644
index 0000000..442b80a
--- /dev/null
+++ b/docs/apidocs/overview-summary.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+概览 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/overview-tree.html b/docs/apidocs/overview-tree.html
new file mode 100644
index 0000000..1dcc240
--- /dev/null
+++ b/docs/apidocs/overview-tree.html
@@ -0,0 +1,278 @@
+
+
+
+
+
+
+类分层结构 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
类分层结构
+
+
注释类型分层结构
+
+
枚举分层结构
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/package-list b/docs/apidocs/package-list
new file mode 100644
index 0000000..31107b1
--- /dev/null
+++ b/docs/apidocs/package-list
@@ -0,0 +1,8 @@
+cn.felord.payment
+cn.felord.payment.alipay
+cn.felord.payment.autoconfigure
+cn.felord.payment.wechat
+cn.felord.payment.wechat.enumeration
+cn.felord.payment.wechat.v3
+cn.felord.payment.wechat.v3.model
+cn.felord.payment.wechat.v3.model.combine
diff --git a/docs/apidocs/script.js b/docs/apidocs/script.js
new file mode 100644
index 0000000..b346356
--- /dev/null
+++ b/docs/apidocs/script.js
@@ -0,0 +1,30 @@
+function show(type)
+{
+ count = 0;
+ for (var key in methods) {
+ var row = document.getElementById(key);
+ if ((methods[key] & type) != 0) {
+ row.style.display = '';
+ row.className = (count++ % 2) ? rowColor : altColor;
+ }
+ else
+ row.style.display = 'none';
+ }
+ updateTabs(type);
+}
+
+function updateTabs(type)
+{
+ for (var value in tabs) {
+ var sNode = document.getElementById(tabs[value][0]);
+ var spanNode = sNode.firstChild;
+ if (value == type) {
+ sNode.className = activeTableTab;
+ spanNode.innerHTML = tabs[value][1];
+ }
+ else {
+ sNode.className = tableTab;
+ spanNode.innerHTML = "" + tabs[value][1] + " ";
+ }
+ }
+}
diff --git a/docs/apidocs/serialized-form.html b/docs/apidocs/serialized-form.html
new file mode 100644
index 0000000..561c633
--- /dev/null
+++ b/docs/apidocs/serialized-form.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+序列化表格 (payment-spring-boot 1.0.0.RELEASE API)
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+Copyright © 2020. All rights reserved.
+
+
diff --git a/docs/apidocs/stylesheet.css b/docs/apidocs/stylesheet.css
new file mode 100644
index 0000000..98055b2
--- /dev/null
+++ b/docs/apidocs/stylesheet.css
@@ -0,0 +1,574 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+
+@import url('resources/fonts/dejavu.css');
+
+body {
+ background-color:#ffffff;
+ color:#353833;
+ font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
+ font-size:14px;
+ margin:0;
+}
+a:link, a:visited {
+ text-decoration:none;
+ color:#4A6782;
+}
+a:hover, a:focus {
+ text-decoration:none;
+ color:#bb7a2a;
+}
+a:active {
+ text-decoration:none;
+ color:#4A6782;
+}
+a[name] {
+ color:#353833;
+}
+a[name]:hover {
+ text-decoration:none;
+ color:#353833;
+}
+pre {
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+}
+h1 {
+ font-size:20px;
+}
+h2 {
+ font-size:18px;
+}
+h3 {
+ font-size:16px;
+ font-style:italic;
+}
+h4 {
+ font-size:13px;
+}
+h5 {
+ font-size:12px;
+}
+h6 {
+ font-size:11px;
+}
+ul {
+ list-style-type:disc;
+}
+code, tt {
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+ padding-top:4px;
+ margin-top:8px;
+ line-height:1.4em;
+}
+dt code {
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+ padding-top:4px;
+}
+table tr td dt code {
+ font-family:'DejaVu Sans Mono', monospace;
+ font-size:14px;
+ vertical-align:top;
+ padding-top:4px;
+}
+sup {
+ font-size:8px;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+ clear:both;
+ height:0px;
+ overflow:hidden;
+}
+.aboutLanguage {
+ float:right;
+ padding:0px 21px;
+ font-size:11px;
+ z-index:200;
+ margin-top:-9px;
+}
+.legalCopy {
+ margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+ color:#FFFFFF;
+ text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+ color:#bb7a2a;
+}
+.tab {
+ background-color:#0066FF;
+ color:#ffffff;
+ padding:8px;
+ width:5em;
+ font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+ background-color:#4D7A97;
+ color:#FFFFFF;
+ padding:.8em .5em .4em .8em;
+ height:auto;/*height:1.8em;*/
+ font-size:11px;
+ margin:0;
+}
+.topNav {
+ background-color:#4D7A97;
+ color:#FFFFFF;
+ float:left;
+ padding:0;
+ width:100%;
+ clear:right;
+ height:2.8em;
+ padding-top:10px;
+ overflow:hidden;
+ font-size:12px;
+}
+.bottomNav {
+ margin-top:10px;
+ background-color:#4D7A97;
+ color:#FFFFFF;
+ float:left;
+ padding:0;
+ width:100%;
+ clear:right;
+ height:2.8em;
+ padding-top:10px;
+ overflow:hidden;
+ font-size:12px;
+}
+.subNav {
+ background-color:#dee3e9;
+ float:left;
+ width:100%;
+ overflow:hidden;
+ font-size:12px;
+}
+.subNav div {
+ clear:left;
+ float:left;
+ padding:0 0 5px 6px;
+ text-transform:uppercase;
+}
+ul.navList, ul.subNavList {
+ float:left;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.navList li{
+ list-style:none;
+ float:left;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+ul.subNavList li{
+ list-style:none;
+ float:left;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+ color:#FFFFFF;
+ text-decoration:none;
+ text-transform:uppercase;
+}
+.topNav a:hover, .bottomNav a:hover {
+ text-decoration:none;
+ color:#bb7a2a;
+ text-transform:uppercase;
+}
+.navBarCell1Rev {
+ background-color:#F8981D;
+ color:#253441;
+ margin: auto 5px;
+}
+.skipNav {
+ position:absolute;
+ top:auto;
+ left:-9999px;
+ overflow:hidden;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+ clear:both;
+ margin:0 20px;
+ padding:5px 0 0 0;
+}
+.indexHeader {
+ margin:10px;
+ position:relative;
+}
+.indexHeader span{
+ margin-right:15px;
+}
+.indexHeader h1 {
+ font-size:13px;
+}
+.title {
+ color:#2c4557;
+ margin:10px 0;
+}
+.subTitle {
+ margin:5px 0 0 0;
+}
+.header ul {
+ margin:0 0 15px 0;
+ padding:0;
+}
+.footer ul {
+ margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+ list-style:none;
+ font-size:13px;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+ background-color:#dee3e9;
+ border:1px solid #d0d9e0;
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+ background-color:#dee3e9;
+ border:1px solid #d0d9e0;
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+ padding:0;
+ margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+ padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+ clear:both;
+ padding:10px 20px;
+ position:relative;
+}
+.indexContainer {
+ margin:10px;
+ position:relative;
+ font-size:12px;
+}
+.indexContainer h2 {
+ font-size:13px;
+ padding:0 0 3px 0;
+}
+.indexContainer ul {
+ margin:0;
+ padding:0;
+}
+.indexContainer ul li {
+ list-style:none;
+ padding-top:2px;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+ font-size:12px;
+ font-weight:bold;
+ margin:10px 0 0 0;
+ color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+ margin:5px 0 10px 0px;
+ font-size:14px;
+ font-family:'DejaVu Sans Mono',monospace;
+}
+.serializedFormContainer dl.nameValue dt {
+ margin-left:1px;
+ font-size:1.1em;
+ display:inline;
+ font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+ margin:0 0 0 1px;
+ font-size:1.1em;
+ display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+ display:inline;
+ font-size:0.9em;
+}
+ul.inheritance {
+ margin:0;
+ padding:0;
+}
+ul.inheritance li {
+ display:inline;
+ list-style:none;
+}
+ul.inheritance li ul.inheritance {
+ margin-left:15px;
+ padding-left:15px;
+ padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+ margin:10px 0 10px 0;
+ padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+ list-style:none;
+ margin-bottom:15px;
+ line-height:1.4;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+ padding:0px 20px 5px 10px;
+ border:1px solid #ededed;
+ background-color:#f8f8f8;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+ padding:0 0 5px 8px;
+ background-color:#ffffff;
+ border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+ margin-left:0;
+ padding-left:0;
+ padding-bottom:15px;
+ border:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+ list-style:none;
+ border-bottom:none;
+ padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+ margin-top:0;
+ margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
+ width:100%;
+ border-left:1px solid #EEE;
+ border-right:1px solid #EEE;
+ border-bottom:1px solid #EEE;
+}
+.overviewSummary, .memberSummary {
+ padding:0px;
+}
+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
+ position:relative;
+ text-align:left;
+ background-repeat:no-repeat;
+ color:#253441;
+ font-weight:bold;
+ clear:none;
+ overflow:hidden;
+ padding:0px;
+ padding-top:10px;
+ padding-left:1px;
+ margin:0px;
+ white-space:pre;
+}
+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
+.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
+.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
+.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
+ color:#FFFFFF;
+}
+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
+ white-space:nowrap;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ padding-bottom:7px;
+ display:inline-block;
+ float:left;
+ background-color:#F8981D;
+ border: none;
+ height:16px;
+}
+.memberSummary caption span.activeTableTab span {
+ white-space:nowrap;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
+ display:inline-block;
+ float:left;
+ background-color:#F8981D;
+ height:16px;
+}
+.memberSummary caption span.tableTab span {
+ white-space:nowrap;
+ padding-top:5px;
+ padding-left:12px;
+ padding-right:12px;
+ margin-right:3px;
+ display:inline-block;
+ float:left;
+ background-color:#4D7A97;
+ height:16px;
+}
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
+ padding-top:0px;
+ padding-left:0px;
+ padding-right:0px;
+ background-image:none;
+ float:none;
+ display:inline;
+}
+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
+ display:none;
+ width:5px;
+ position:relative;
+ float:left;
+ background-color:#F8981D;
+}
+.memberSummary .activeTableTab .tabEnd {
+ display:none;
+ width:5px;
+ margin-right:3px;
+ position:relative;
+ float:left;
+ background-color:#F8981D;
+}
+.memberSummary .tableTab .tabEnd {
+ display:none;
+ width:5px;
+ margin-right:3px;
+ position:relative;
+ background-color:#4D7A97;
+ float:left;
+
+}
+.overviewSummary td, .memberSummary td, .typeSummary td,
+.useSummary td, .constantsSummary td, .deprecatedSummary td {
+ text-align:left;
+ padding:0px 0px 12px 10px;
+}
+th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
+td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
+ vertical-align:top;
+ padding-right:0px;
+ padding-top:8px;
+ padding-bottom:3px;
+}
+th.colFirst, th.colLast, th.colOne, .constantsSummary th {
+ background:#dee3e9;
+ text-align:left;
+ padding:8px 3px 3px 7px;
+}
+td.colFirst, th.colFirst {
+ white-space:nowrap;
+ font-size:13px;
+}
+td.colLast, th.colLast {
+ font-size:13px;
+}
+td.colOne, th.colOne {
+ font-size:13px;
+}
+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
+.useSummary td.colFirst, .useSummary th.colFirst,
+.overviewSummary td.colOne, .overviewSummary th.colOne,
+.memberSummary td.colFirst, .memberSummary th.colFirst,
+.memberSummary td.colOne, .memberSummary th.colOne,
+.typeSummary td.colFirst{
+ width:25%;
+ vertical-align:top;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+ font-weight:bold;
+}
+.tableSubHeadingColor {
+ background-color:#EEEEFF;
+}
+.altColor {
+ background-color:#FFFFFF;
+}
+.rowColor {
+ background-color:#EEEEEF;
+}
+/*
+Content styles
+*/
+.description pre {
+ margin-top:0;
+}
+.deprecatedContent {
+ margin:0;
+ padding:10px 0;
+}
+.docSummary {
+ padding:0;
+}
+
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+ font-style:normal;
+}
+
+div.block {
+ font-size:14px;
+ font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+}
+
+td.colLast div {
+ padding-top:0px;
+}
+
+
+td.colLast a {
+ padding-bottom:3px;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+ color:green;
+ padding:0 30px 0 0;
+}
+h1.hidden {
+ visibility:hidden;
+ overflow:hidden;
+ font-size:10px;
+}
+.block {
+ display:block;
+ margin:3px 10px 2px 0px;
+ color:#474747;
+}
+.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
+.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
+.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
+ font-weight:bold;
+}
+.deprecationComment, .emphasizedPhrase, .interfaceName {
+ font-style:italic;
+}
+
+div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
+div.block div.block span.interfaceName {
+ font-style:normal;
+}
+
+div.contentContainer ul.blockList li.blockList h2{
+ padding-bottom:0px;
+}
diff --git a/docs/changelog.md b/docs/changelog.md
new file mode 100644
index 0000000..95f9bcc
--- /dev/null
+++ b/docs/changelog.md
@@ -0,0 +1,31 @@
+## 1.0.3.RELEASE
+- 微信支付
+ - feat: 完善合单支付账单
+ 1. 增加合单支付-申请交易账单API。
+ 2. 增加合单支付-申请资金账单API。
+ - fix: #I2BCMZ 合单支付url不正确的问题。
+ - fix: 微信支付能够正确根据环境条件动态启用了,修复了不配置微信支付时,无法启用支付宝的问题。
+ 1. 当配置中存在`wechat.pay.v3`配置时,微信支付启用;否则微信支付不启用,不会再影响支付宝的运行。
+ - refactor: 先享卡优化
+
+## 1.0.2.RELEASE
+- 微信支付
+ - feat: 接入微信支付分
+ - feat: 接入微信支付先享卡
+ - fix: 支付回调参数不全的问题
+
+## 1.0.1.RELEASE
+
+- 微信支付
+ - 基础支付-商户直连 bugfix
+ - 合单支付
+
+## 1.0.0.RELEASE
+
+- 微信支付
+ - 基础支付-商户直连
+ - 代金券
+ - 多租户
+- 支付宝
+ - 仅仅引入支付宝SDK,后续维护以支付宝SDK变动为准
+ - 支付宝暂时不支持多租户
\ No newline at end of file
diff --git a/docs/img/cert_path.png b/docs/img/cert_path.png
new file mode 100644
index 0000000..2b627b0
Binary files /dev/null and b/docs/img/cert_path.png differ
diff --git a/docs/img/csr.png b/docs/img/csr.png
new file mode 100644
index 0000000..d13c90e
Binary files /dev/null and b/docs/img/csr.png differ
diff --git a/docs/img/file_info.png b/docs/img/file_info.png
new file mode 100644
index 0000000..dc6e4cc
Binary files /dev/null and b/docs/img/file_info.png differ
diff --git a/docs/img/qqun.png b/docs/img/qqun.png
new file mode 100644
index 0000000..90b1f49
Binary files /dev/null and b/docs/img/qqun.png differ
diff --git a/docs/img/set.png b/docs/img/set.png
new file mode 100644
index 0000000..506b44b
Binary files /dev/null and b/docs/img/set.png differ
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..af648f0
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+ Document
+
+
+
+
+
+
+
+加载中……
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/quick_start.md b/docs/quick_start.md
new file mode 100644
index 0000000..cd2d15e
--- /dev/null
+++ b/docs/quick_start.md
@@ -0,0 +1,177 @@
+## Maven 中央仓库坐标
+
+```xml
+
+ cn.felord
+ payment-spring-boot-starter
+ 1.0.3.RELEASE
+
+```
+> 基于 **Spring Boot 2.4.1**
+
+## Spring Boot 版本适配
+
+需要自行克隆项目,修改根目录下的`pom.xml`以下配置项:
+```xml
+
+
+ 2.4.0
+
+```
+然后安装使用
+
+## 自行安装
+
+以**Spring Boot Starter**的形式集成到项目中。从[GitHub项目地址](https://github.com/NotFound403/payment-spring-boot)拉取`release`分支到本地后使用以下两种方式之一进行环境集成:
+
+- `mvn install` 安装到本地
+- `mvn deploy`部署到**Maven**仓库
+
+
+
+然后引用**Maven**坐标,请注意`${payment-spring-boot-starter.version}`要同你安装的一致。
+
+```xml
+
+ cn.felord
+ payment-spring-boot-starter
+ ${payment-spring-boot-starter.version}
+
+```
+## 配置
+
+### 微信支付
+在Spring Boot项目中的`application.yaml`中配置`wechat.pay.v3`相关参数。
+```yaml
+wechat:
+ pay:
+ v3:
+# 租户id
+ :
+# 应用appId 必填
+ app-id: xxxxxxxx
+# api 密钥 可不填
+ app-secret: xxxxxxxxxxx
+# api v3 密钥 必填
+ app-v3-secret: xxxxxxxx
+# 微信支付商户号 必填
+ mch-id: xxxxxxx
+# 商户服务器域名 用于回调 需要放开回调接口的安全策略 必填
+ domain: https://felord.cn
+# 商户 api 证书路径 必填 填写classpath路径 位于 maven项目的resources文件下
+ cert-path: apiclient_cert.p12
+
+```
+#### 微信支付 tentantID 场景说明
+
+当项目中需要同时支持微信App支付、微信公众号支付、微信小程序支付时,上述配置中的`app-id`可能为多个,因此我们需要进行路由标识以区分它们,所以这里需要你定义一个`tentanID`来进行标识。假如我们同时有App支付和微信小程序支付,我们应该这样配置:
+
+```yaml
+wechat:
+ pay:
+ v3:
+ # App租户租户标识为 mobile
+ mobile:
+ app-id: wx524534x423234
+ app-secret: felord
+ app-v3-secret: 0e5b123323h12234927e455703ec
+ mch-id: 1603337223
+ domain: https://felord.cn/mobile
+ cert-path: mobile/apiclient_cert.p12
+ # 微信小程序租户标识为 miniapp
+ miniapp:
+ app-id: wx344123x3541223
+ app-secret: felord
+ app-v3-secret: 0e5b123323h12234927e455703ec
+ mch-id: 1603337223
+ domain: https://felord.cn/miniapp
+ cert-path: miniapp/apiclient_cert.p12
+```
+
+> ❗注意:在一套系统中需要开发者保证`tentanID`唯一。
+
+### 支付宝
+
+在Spring Boot项目中的`application.yaml`中配置`ali.pay.v1`相关参数。
+```yaml
+ali:
+ pay:
+ v1:
+# 可以替换为沙箱
+ server-url: https://openapi.alipaydev.com/gateway.do
+# 蚂蚁开放平台申请并认证的应用appId
+ app-id: 2016223700762343
+ app-private-key-path: META-INF/app_rsa
+ alipay-public-cert-path: META-INF/alipayCertPublicKey_RSA2.crt
+ alipay-root-cert-path: META-INF/alipayRootCert.crt
+ app-cert-public-key-path: META-INF/appCertPublicKey_2016102700769563.crt
+ charset: utf-8
+ format: json
+ sign-type: RSA2
+```
+> ❗注意:只有`ali.pay.v1.app-id`设置了有效值才能启用支付宝API。
+
+## 启用配置
+
+配置完毕后需要启用`@EnableMobilePay`注解来开启支付功能:
+
+```java
+@EnableMobilePay
+@Configuration
+public class PayConfig {
+}
+```
+## 使用API
+
+### 微信支付
+
+微信支付V3开放接口都是通过`WechatApiProvider`引入的,当[启用配置](/quick_start?id=启用配置)步骤完成后会被初始化并注入了**Spring IoC**,可通过如下形式引入:
+```java
+ @Autowired
+ WechatApiProvider wechatApiProvider;
+```
+`WechatApiProvider`需要开发者明确租户ID[tenantID](quick_start?id=微信支付-tentantid-场景说明)以初始化具体场景的**Api**。例如查询终端用户在租户`mobile`下的优惠券:
+
+```java
+ // 查询商户下的优惠券
+ @Test
+ public void v3MchStocks() {
+ // 配置文件中对应的tenantID:
+ String tenantId =“mobile”;
+ StocksQueryParams params = new StocksQueryParams();
+ params.setOffset(0);
+ params.setLimit(10);
+ WechatResponseEntity objectNodeWechatResponseEntity = wechatApiProvider.favorApi(tenantId).queryStocksByMch(params);
+ System.out.println("objectNodeWechatResponseEntity = " + objectNodeWechatResponseEntity);
+ }
+```
+
+
+### 支付宝
+当[启用配置](/quick_start?id=启用配置)步骤完成后会初始化支付宝支付客户端接口`AlipayClient`并注入**Spring IoC**,可通过以下形式引入:
+```java
+ @Autowired
+ AlipayClient alipayClient;
+```
+调用,以现金红包为例:
+```java
+ @SneakyThrows
+ public void campaignCash() {
+ AlipayMarketingCampaignCashCreateRequest request = new AlipayMarketingCampaignCashCreateRequest();
+ request.setBizContent("{" +
+ "\"coupon_name\":\"XXX周年庆红包\"," +
+ "\"prize_type\":\"random\"," +
+ "\"total_money\":\"10000.00\"," +
+ "\"total_num\":\"1000\"," +
+ "\"prize_msg\":\"XXX送您大红包\"," +
+ "\"start_time\":\"2020-11-02 22:48:30\"," +
+ "\"end_time\":\"2020-12-01 22:48:30\"," +
+ "\"merchant_link\":\"http://www.weibo.com\"," +
+ "\"send_freqency\":\"D3|L10\"" +
+ " }");
+
+ AlipayMarketingCampaignCashCreateResponse execute = alipayClient.certificateExecute(request);
+
+ System.out.println("execute = " + execute.getBody());
+ }
+```
\ No newline at end of file
diff --git a/docs/stackoverflow.md b/docs/stackoverflow.md
new file mode 100644
index 0000000..8982758
--- /dev/null
+++ b/docs/stackoverflow.md
@@ -0,0 +1,56 @@
+## 微信
+### 微信支付技术分享
+- [Java中的微信支付(1):API V3版本签名详解](https://mp.weixin.qq.com/s/iiTCr57FgbAb6s0P0hT-9Q)
+- [Java中的微信支付(2):API V3 微信平台证书的获取与刷新](https://mp.weixin.qq.com/s/O_YcnIRcl2MltElBupm3Hg)
+- [Java中的微信支付(3):API V3对微信服务器响应进行签名验证](https://mp.weixin.qq.com/s/cb2eTTRjHifNYUGpQETMCQ)
+### 微信支付V3中的坑
+#### 代金券
+- 代金券制券后不能修改,所以一定要注意
+- 已激活的代金券批次被停用后不影响该批次已发放代金券的核销
+- 代金券激活券和制券要有一定的间隔时间,官方说是1分钟
+- 发券不需要靠微信服务号,官方的描述是错误的,有一个支持微信登录的appid就行了
+- 制券 返回`403`,报文`{"code":"REQUEST_BLOCKED","message":"活动未开始或已结束\n"}`检查规则是否符合:
+ ```
+ 1.stock_name:最多可填写9个字
+ 2.max_coupons_per_user:单天发放个数上限不能为0
+ 3. coupon_amount:10<=coupon_amount<=100000
+ 4.available_time_after_receive:可用时间:相对时间,按分钟设置,是否1min<=分钟范围<=1440min
+ 5.transaction_minimum校验规则:
+ a、使用门槛-券面额>=0.01(门槛要大于面额)
+ b、0.1元<=门槛<=100000
+ 6.stock_type:目前只支持NORMAL
+ 7.out_request_no:校验规则:不可以重复
+ 8.活动时间不可以大于90天
+ ```
+#### 微信支付分
+- 微信支付分`service_id`相关
+```
+ 1. 在微信支付分功能申请成功后,联系运营那边配置 service_id。
+ 2. service_id 是微信支付商户属性
+ 3. 一个 service_id 可以对应多个 mchid
+ 4. 更多的就要联系微信支付BD了
+```
+
+!> 不要过分相信微信文档,微信文档不一定是真的,要问就问他们客服
+
+## 支付宝
+
+### 支付宝证书
+
+请注意因为未来**SHA1withRSA**将被淘汰,因此采用最新的**SHA256withRSA**证书,旧的模式将不提供支持。步骤如下:
+
+1.使用支付宝开发助手申请CSR文件
+
+
+申请成功后看文件说明:
+
+
+
+2.上传CSR设置证书
+
+
+
+上传成功后需要下载证书,和配置的对应关系为:
+
+
+
diff --git a/docs/wechat_v3_api.md b/docs/wechat_v3_api.md
new file mode 100644
index 0000000..da4b6e0
--- /dev/null
+++ b/docs/wechat_v3_api.md
@@ -0,0 +1,112 @@
+## 入口类
+
+`WechatApiProvider`是本项目微信支付的入口类,已被注入**Spring IoC**。它目前包含以下几个**API**(后续会增加)。
+
+### 代金券API
+
+`WechatMarketingFavorApi`是微信支付营销工具-[代金券相关API](https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/convention.shtml)的封装。
+
+#### 创建代金券批次API
+
+`WechatResponseEntity createStock(StocksCreateParams params)`
+
+#### 激活代金券批次API
+
+ `WechatResponseEntity startStock(String stockId)`
+
+#### 发放代金券API
+
+`WechatResponseEntity sendStock(StocksSendParams params)`
+
+#### 暂停代金券批次API
+
+`WechatResponseEntity pauseStock(String stockId)`
+
+#### 重启代金券批次API
+
+`WechatResponseEntity restartStock(String stockId)`
+
+#### 条件查询批次列表API
+通过此接口可查询多个批次的信息,包括批次的配置信息以及批次概况数据。
+
+`WechatResponseEntity queryStocksByMch(StocksQueryParams params)`
+
+#### 查询批次详情API
+
+`WechatResponseEntity queryStockDetail(String stockId)`
+
+#### 查询代金券详情API
+
+`WechatResponseEntity queryCouponDetails(CouponDetailsQueryParams params)`
+
+#### 查询代金券可用商户API
+
+`WechatResponseEntity queryMerchantsByStockId(StocksQueryParams params)`
+
+#### 查询代金券可用单品API
+
+`WechatResponseEntity queryStockItems(StocksQueryParams params)`
+
+#### 根据商户号查用户的券API
+
+`WechatResponseEntity queryUserCouponsByMchId(UserCouponsQueryParams params)`
+
+#### 下载批次核销明细API
+
+`WechatResponseEntity downloadStockUseFlow(String stockId)`
+
+#### 下载批次退款明细API
+
+`WechatResponseEntity downloadStockRefundFlow(String stockId)`
+
+#### 营销图片上传API
+
+`WechatResponseEntity marketingImageUpload(MultipartFile file)`
+
+#### 代金券核销回调通知API
+
+`WechatResponseEntity setMarketingFavorCallback(String notifyUrl)`
+
+### 普通支付-直连模式API
+
+`WechatDirectPayApi`是微信基础支付工具-[普通支付-直连模式API](https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/transactions.shtml)的封装。
+
+#### APP下单API
+
+`WechatResponseEntity appPay(PayParams payParams)`
+
+#### JSAPI/小程序下单API
+
+`WechatResponseEntity jsPay(PayParams payParams)`
+
+#### Native下单API
+
+`WechatResponseEntity nativePay(PayParams payParams)`
+
+#### H5下单API
+
+`WechatResponseEntity h5Pay(PayParams payParams)`
+
+#### 微信支付订单号查询API
+
+`WechatResponseEntity queryTransactionById(TransactionQueryParams params)`
+
+#### 商户订单号查询API
+
+`WechatResponseEntity queryTransactionByOutTradeNo(TransactionQueryParams params)`
+
+#### 关单API
+
+`WechatResponseEntity close(String outTradeNo)`
+
+### 回调API
+
+所有需要回调处理的微信支付业务通过`WechatPayCallback`来进行处理。
+
+#### 微信支付代金券核销回调API
+
+`Map couponCallback(ResponseSignVerifyParams params, Consumer couponConsumeDataConsumer)`
+
+#### 微信支付普通支付回调API
+
+`Map transactionCallback(ResponseSignVerifyParams params, Consumer couponConsumeDataConsumer)`
\ No newline at end of file
diff --git a/payment-spring-boot-autoconfigure/pom.xml b/payment-spring-boot-autoconfigure/pom.xml
new file mode 100644
index 0000000..6c96d52
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/pom.xml
@@ -0,0 +1,61 @@
+
+
+
+ cn.felord
+ payment-spring-boot
+ 1.0.3.RELEASE
+
+
+ payment-spring-boot-autoconfigure
+ 1.0.3.RELEASE
+ jar
+ 4.0.0
+
+
+ 1.8
+ 1.8
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ true
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ org.projectlombok
+ lombok
+ compile
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ provided
+
+
+ org.bouncycastle
+ bcprov-jdk15to18
+ true
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+
+
+
+
\ No newline at end of file
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/PayException.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/PayException.java
new file mode 100644
index 0000000..8d605ec
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/PayException.java
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment;
+
+/**
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class PayException extends RuntimeException {
+
+ public PayException() {
+ }
+
+ public PayException(String message) {
+ super(message);
+ }
+
+ public PayException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PayException(Throwable cause) {
+ super(cause);
+ }
+
+ public PayException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/alipay/AliPayConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/alipay/AliPayConfiguration.java
new file mode 100644
index 0000000..110f64c
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/alipay/AliPayConfiguration.java
@@ -0,0 +1,91 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.alipay;
+
+
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.CertAlipayRequest;
+import com.alipay.api.DefaultAlipayClient;
+import cn.felord.payment.PayException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.context.properties.PropertyMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+/**
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Slf4j
+@Configuration
+@ConditionalOnProperty(prefix = "ali.pay", name = "v1.app-id")
+@EnableConfigurationProperties(AliPayProperties.class)
+public class AliPayConfiguration {
+
+ @Bean
+ public AlipayClient alipayClient(AliPayProperties aliPayProperties) throws AlipayApiException {
+
+ PropertyMapper propertyMapper = PropertyMapper.get().alwaysApplyingWhenNonNull();
+
+ AliPayProperties.V1 v1 = aliPayProperties.getV1();
+ CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
+ propertyMapper.from(v1::getServerUrl).to(certAlipayRequest::setServerUrl);
+ propertyMapper.from(v1::getAppId).to(certAlipayRequest::setAppId);
+ propertyMapper.from(v1::getAppPrivateKeyPath).as(this::appRSAPrivateKey).to(certAlipayRequest::setPrivateKey);
+ propertyMapper.from(v1::getFormat).to(certAlipayRequest::setFormat);
+ propertyMapper.from(v1::getCharset).to(certAlipayRequest::setCharset);
+ propertyMapper.from(v1::getSignType).to(certAlipayRequest::setSignType);
+ propertyMapper.from(v1::getAppCertPublicKeyPath).as(this::getFileAbsolutePath).to(certAlipayRequest::setCertPath);
+ propertyMapper.from(v1::getAlipayPublicCertPath).as(this::getFileAbsolutePath).to(certAlipayRequest::setAlipayPublicCertPath);
+ propertyMapper.from(v1::getAlipayRootCertPath).as(this::getFileAbsolutePath).to(certAlipayRequest::setRootCertPath);
+ return new DefaultAlipayClient(certAlipayRequest);
+ }
+
+ private String getFileAbsolutePath(String classPath) {
+ try {
+ return new ClassPathResource(classPath).getFile().getAbsolutePath();
+ } catch (IOException e) {
+ log.error("ali pay cert path is not exist ,{}", e.getMessage());
+ throw new PayException("ali pay cert path is not exist");
+ }
+
+ }
+
+
+ private String appRSAPrivateKey(String classPath) {
+ try {
+ File file = new ClassPathResource(classPath).getFile();
+ return new BufferedReader(new FileReader(file)).readLine();
+ } catch (IOException e) {
+ log.error("ali pay app private key is required ,{}", e.getMessage());
+ throw new PayException("ali pay app private key is required");
+ }
+ }
+
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/alipay/AliPayProperties.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/alipay/AliPayProperties.java
new file mode 100644
index 0000000..f19b5de
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/alipay/AliPayProperties.java
@@ -0,0 +1,89 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.alipay;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * The type Ali pay properties.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+@ConfigurationProperties("ali.pay")
+public class AliPayProperties {
+ /**
+ * alipay api version 1.0
+ */
+ @NestedConfigurationProperty
+ private V1 v1;
+
+
+ /**
+ * The type V 1.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+ @Data
+ public static class V1 {
+ /**
+ * alipay server
+ */
+ private String serverUrl = "https://openapi.alipay.com/gateway.do";
+ /**
+ * your app ID
+ */
+ private String appId;
+ /**
+ * your app private key, which must be in a single line
+ */
+ private String appPrivateKeyPath;
+ /**
+ * sign type default RSA2
+ */
+ private String signType = "RSA2";
+ /**
+ * data format only json now
+ */
+ private String format = "json";
+ /**
+ * charset default utf-8
+ */
+ private String charset = "utf-8";
+ /**
+ * alipay public cert path
+ */
+ private String alipayPublicCertPath;
+ /**
+ * alipay root cert path
+ */
+ private String alipayRootCertPath;
+ /**
+ * appCertPublicKey
+ */
+ private String appCertPublicKeyPath;
+
+ }
+
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/autoconfigure/EnableMobilePay.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/autoconfigure/EnableMobilePay.java
new file mode 100644
index 0000000..a9298a9
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/autoconfigure/EnableMobilePay.java
@@ -0,0 +1,34 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.autoconfigure;
+
+import org.springframework.context.annotation.Import;
+
+import java.lang.annotation.*;
+
+/**
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Import(PayConfiguration.class)
+public @interface EnableMobilePay {
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/autoconfigure/PayConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/autoconfigure/PayConfiguration.java
new file mode 100644
index 0000000..90943b3
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/autoconfigure/PayConfiguration.java
@@ -0,0 +1,33 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.autoconfigure;
+
+import cn.felord.payment.alipay.AliPayConfiguration;
+import cn.felord.payment.wechat.WechatPayConfiguration;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Configuration
+@Import({WechatPayConfiguration.class, AliPayConfiguration.class})
+public class PayConfiguration {
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java
new file mode 100644
index 0000000..9878264
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java
@@ -0,0 +1,104 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat;
+
+
+import cn.felord.payment.wechat.v3.*;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Map;
+
+/**
+ * The type Wechat pay configuration.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Configuration
+@Conditional(WechatPayConfiguredCondition.class)
+@EnableConfigurationProperties(WechatPayProperties.class)
+public class WechatPayConfiguration {
+ /**
+ * The constant CERT_ALIAS.
+ */
+ private static final String CERT_ALIAS = "Tenpay Certificate";
+
+ /**
+ * 微信支付公私钥 以及序列号等元数据.
+ *
+ * @param wechatPayProperties the wechat pay properties
+ * @return the wechat cert bean
+ */
+ @Bean
+ @ConditionalOnMissingBean
+ WechatMetaContainer wechatMetaContainer(WechatPayProperties wechatPayProperties) {
+
+ Map v3Map = wechatPayProperties.getV3();
+ WechatMetaContainer container = new WechatMetaContainer();
+ KeyPairFactory keyPairFactory = new KeyPairFactory();
+ v3Map.keySet().forEach(tenantId -> {
+ WechatPayProperties.V3 v3 = v3Map.get(tenantId);
+ String certPath = v3.getCertPath();
+ String mchId = v3.getMchId();
+ WechatMetaBean wechatMetaBean = keyPairFactory.createPKCS12(certPath, CERT_ALIAS, mchId);
+ wechatMetaBean.setV3(v3);
+ wechatMetaBean.setTenantId(tenantId);
+ container.addWechatMeta(tenantId, wechatMetaBean);
+ });
+ return container;
+ }
+
+ /**
+ * 微信支付V3签名工具.
+ *
+ * @param wechatMetaContainer the wechat meta container
+ * @return the signature provider
+ */
+ @Bean
+ SignatureProvider signatureProvider(WechatMetaContainer wechatMetaContainer) {
+ return new SignatureProvider(wechatMetaContainer);
+ }
+
+
+ /**
+ * 微信支付V3 客户端.
+ *
+ * @param signatureProvider the signature provider
+ * @return the wechat pay service
+ */
+ @Bean
+ public WechatPayClient wechatPayClient(SignatureProvider signatureProvider) {
+ return new WechatPayClient(signatureProvider);
+ }
+
+ /**
+ * 多租户接口Provider.
+ *
+ * @param wechatPayClient the wechat pay client
+ * @return the wechat api provider
+ */
+ @Bean
+ public WechatApiProvider wechatApiProvider(WechatPayClient wechatPayClient) {
+ return new WechatApiProvider(wechatPayClient);
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguredCondition.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguredCondition.java
new file mode 100644
index 0000000..bb624a8
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguredCondition.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * Copyright 2019-2021 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat;
+
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.context.properties.bind.Bindable;
+import org.springframework.boot.context.properties.bind.Binder;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.core.env.Environment;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * The type Wechat pay configured condition.
+ *
+ * @author felord.cn
+ * @since 1.0.3.RELEASE
+ */
+public class WechatPayConfiguredCondition extends SpringBootCondition {
+
+ /**
+ * The constant STRING_WECHAT_V3_MAP.
+ */
+ private static final Bindable> STRING_WECHAT_V3_MAP = Bindable
+ .mapOf(String.class, WechatPayProperties.V3.class);
+
+ @Override
+ public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
+ ConditionMessage.Builder message = ConditionMessage.forCondition("Wechat Pay V3 Configured Condition");
+ Map v3 = getV3(context.getEnvironment());
+ if (!v3.isEmpty()) {
+ return ConditionOutcome.match(message.foundExactly("registered wechat mchIds " + v3.values().stream()
+ .map(WechatPayProperties.V3::getMchId).collect(Collectors.joining(", "))));
+ }
+ return ConditionOutcome.noMatch(message.notAvailable("registered wechat pay configs"));
+ }
+
+ private Map getV3(Environment environment) {
+ return Binder.get(environment).bind("wechat.pay.v3", STRING_WECHAT_V3_MAP)
+ .orElse(Collections.emptyMap());
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayProperties.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayProperties.java
new file mode 100644
index 0000000..9c1022c
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayProperties.java
@@ -0,0 +1,78 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The type Wechat pay properties.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+@ConfigurationProperties("wechat.pay")
+public class WechatPayProperties {
+ /**
+ * wechat pay V3 properties
+ */
+ private Map v3 = new HashMap<>();
+
+ /**
+ * wechat pay v3 properties.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+ @Data
+ public static class V3 {
+ /**
+ * app id for wechat pay is required
+ */
+ private String appId;
+ /**
+ * app secret for wechat pay is required
+ */
+ private String appSecret;
+ /**
+ * app V3 secret is required by wechat pay V3
+ */
+ private String appV3Secret;
+ /**
+ * mchId for wechat pay is required
+ */
+ private String mchId;
+ /**
+ * partnerKey for wechat pay is optional
+ */
+ private String partnerKey;
+ /**
+ * wechat pay certificate Path
+ */
+ private String certPath;
+ /**
+ * your pay server domain
+ */
+ private String domain;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayResponseErrorHandler.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayResponseErrorHandler.java
new file mode 100644
index 0000000..6290c5b
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayResponseErrorHandler.java
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat;
+
+import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.web.client.DefaultResponseErrorHandler;
+
+import java.io.IOException;
+
+/**
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class WechatPayResponseErrorHandler extends DefaultResponseErrorHandler {
+
+ @Override
+ public boolean hasError(ClientHttpResponse response) throws IOException {
+ return false;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/BankCode.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/BankCode.java
new file mode 100644
index 0000000..176a892
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/BankCode.java
@@ -0,0 +1,332 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.enumeration;
+
+
+/**
+ * 银行代码.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public enum BankCode {
+ /**
+ * 工商银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1002("1002", "工商银行"),
+ /**
+ * 农业银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1005("1005", "农业银行"),
+ /**
+ * 建设银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1003("1003", "建设银行"),
+ /**
+ * 中国银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1026("1026", "中国银行"),
+ /**
+ * 交通银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1020("1020", "交通银行"),
+ /**
+ * 招商银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1001("1001", "招商银行"),
+ /**
+ * 邮储银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1066("1066", "邮储银行"),
+ /**
+ * 民生银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1006("1006", "民生银行"),
+ /**
+ * 平安银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1010("1010", "平安银行"),
+ /**
+ * 中信银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1021("1021", "中信银行"),
+ /**
+ * 浦发银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1004("1004", "浦发银行"),
+ /**
+ * 兴业银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1009("1009", "兴业银行"),
+ /**
+ * 光大银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1022("1022", "光大银行"),
+ /**
+ * 广发银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1027("1027", "广发银行"),
+ /**
+ * 华夏银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1025("1025", "华夏银行"),
+ /**
+ * 宁波银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1056("1056", "宁波银行"),
+ /**
+ * 北京银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4836("4836", "北京银行"),
+ /**
+ * 上海银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1024("1024", "上海银行"),
+ /**
+ * 南京银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_1054("1054", "南京银行"),
+ /**
+ * 长子县融汇村镇银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4755("4755", "长子县融汇村镇银行"),
+ /**
+ * 长沙银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4216("4216", "长沙银行"),
+ /**
+ * 浙江泰隆商业银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4051("4051", "浙江泰隆商业银行"),
+ /**
+ * 中原银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4753("4753", "中原银行"),
+ /**
+ * 企业银行(中国)
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4761("4761", "企业银行(中国)"),
+ /**
+ * 顺德农商银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4036("4036", "顺德农商银行"),
+ /**
+ * 衡水银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4752("4752", "衡水银行"),
+ /**
+ * 长治银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4756("4756", "长治银行"),
+ /**
+ * 大同银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4767("4767", "大同银行"),
+ /**
+ * 河南省农村信用社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4115("4115", "河南省农村信用社"),
+ /**
+ * 宁夏黄河农村商业银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4150("4150", "宁夏黄河农村商业银行"),
+ /**
+ * 山西省农村信用社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4156("4156", "山西省农村信用社"),
+ /**
+ * 安徽省农村信用社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4166("4166", "安徽省农村信用社"),
+ /**
+ * 甘肃省农村信用社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4157("4157", "甘肃省农村信用社"),
+ /**
+ * 天津农村商业银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4153("4153", "天津农村商业银行"),
+ /**
+ * 广西壮族自治区农村信用社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4113("4113", "广西壮族自治区农村信用社"),
+ /**
+ * 陕西省农村信用社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4108("4108", "陕西省农村信用社"),
+ /**
+ * 深圳农村商业银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4076("4076", "深圳农村商业银行"),
+ /**
+ * 宁波鄞州农村商业银行
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4052("4052", "宁波鄞州农村商业银行"),
+ /**
+ * 浙江省农村信用社联合社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4764("4764", "浙江省农村信用社联合社"),
+ /**
+ * 江苏省农村信用社联合社
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4217("4217", "江苏省农村信用社联合社"),
+ /**
+ * 江苏紫金农村商业银行股份有限公司
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4072("4072", "江苏紫金农村商业银行"),
+ /**
+ * 北京中关村银行股份有限公司
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4769("4769", "北京中关村银行"),
+ /**
+ * 星展银行(中国)有限公司
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4778("4778", "星展银行(中国)"),
+ /**
+ * 枣庄银行股份有限公司
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4766("4766", "枣庄银行"),
+ /**
+ * 海口联合农村商业银行股份有限公司
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4758("4758", "海口联合农村商业银行"),
+ /**
+ * 南洋商业银行(中国)有限公司
+ *
+ * @since 1.0.0.RELEASE
+ */
+ BK_4763("4763", "南洋商业银行(中国)");
+
+
+ private final String code;
+ private final String bankName;
+
+ BankCode(String code, String bankName) {
+ this.code = code;
+ this.bankName = bankName;
+ }
+
+ /**
+ * Code string.
+ *
+ * @return the string
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Bank name string.
+ *
+ * @return the string
+ */
+ public String bankName() {
+ return this.bankName;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/ContractStatus.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/ContractStatus.java
new file mode 100644
index 0000000..f3fc108
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/ContractStatus.java
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 微信先享卡的守约状态
+ *
+ * @author felord.cn
+ * @since 1.0.2.RELEASE
+ */
+public enum ContractStatus {
+ /**
+ * 约定进行中,表示用户在约定有效期内,尚未完成所有目标时,守约状态为约定进行中。
+ */
+ ONGOING,
+
+ /**
+ * 约定到期核对中,在约定有效期结束后的一段时间,商户可对卡记录进行校对并做必要调整,守约状态为约定到期核对调整中。
+ */
+ SETTLING,
+ /**
+ * 已完成约定,表示用户在约定有效期内,已完成所有目标,守约状态为已完成约定。
+ */
+ FINISHED,
+
+ /**
+ * 未完成约定,表示用户在约定有效期到期后,最终未完成所有约定目标,或用户提前退出约定,守约状态为未完成约定。
+ */
+ UNFINISHED
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CountType.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CountType.java
new file mode 100644
index 0000000..216ca86
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CountType.java
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 优惠数量的类型标识
+ *
+ * @author felord.cn
+ * @since 1.0.3.RELEASE
+ */
+public enum CountType {
+ /**
+ * 不限数量
+ */
+ COUNT_UNLIMITED,
+ /**
+ * 有限数量
+ */
+ COUNT_LIMIT
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CouponBgColor.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CouponBgColor.java
new file mode 100644
index 0000000..1cb4b7b
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CouponBgColor.java
@@ -0,0 +1,92 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 优惠券背景色
+ *
+ * 详见优惠券背景色参考
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public enum CouponBgColor {
+ /**
+ * Color 010 coupon bg color.
+ */
+ COLOR010("#63B359"),
+ /**
+ * Color 020 coupon bg color.
+ */
+ COLOR020("#2C9F67"),
+ /**
+ * Color 030 coupon bg color.
+ */
+ COLOR030("#509FC9"),
+ /**
+ * Color 040 coupon bg color.
+ */
+ COLOR040("#5885CF"),
+ /**
+ * Color 050 coupon bg color.
+ */
+ COLOR050("#9062C0"),
+ /**
+ * Color 060 coupon bg color.
+ */
+ COLOR060("#D09A45"),
+ /**
+ * Color 070 coupon bg color.
+ */
+ COLOR070("#E4B138"),
+ /**
+ * Color 080 coupon bg color.
+ */
+ COLOR080("#EE903C"),
+ /**
+ * Color 090 coupon bg color.
+ */
+ COLOR090("#DD6549"),
+ /**
+ * Color 100 coupon bg color.
+ */
+ COLOR100("#CC463D");
+
+ /**
+ * The Color.
+ */
+ private final String color;
+
+ /**
+ * Instantiates a new Coupon bg color.
+ *
+ * @param color the color
+ */
+ CouponBgColor(String color) {
+ this.color = color;
+ }
+
+ /**
+ * Color string.
+ *
+ * @return the string
+ */
+ public String color() {
+ return this.color;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CouponStatus.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CouponStatus.java
new file mode 100644
index 0000000..0c534c0
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/CouponStatus.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 代金券状态.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public enum CouponStatus {
+ /**
+ * 可用.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ SENDED,
+ /**
+ * 已实扣.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ USED,
+ /**
+ * 已过期.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ EXPIRED
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/FundFlowAccountType.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/FundFlowAccountType.java
new file mode 100644
index 0000000..effbbf8
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/FundFlowAccountType.java
@@ -0,0 +1,38 @@
+/*
+ *
+ * Copyright 2019-2021 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 申请资金账单账户类型.
+ *
+ * @since 1.0.3.RELEASE
+ */
+public enum FundFlowAccountType {
+ /**
+ * 基本账户
+ */
+ BASIC,
+ /**
+ * 运营账户
+ */
+ OPERATION,
+ /**
+ * 手续费账户
+ */
+ FEES
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/StockStatus.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/StockStatus.java
new file mode 100644
index 0000000..426bfa6
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/StockStatus.java
@@ -0,0 +1,86 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 代金券批次状态.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public enum StockStatus {
+ /**
+ * Unactivated stock status.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ UNACTIVATED("unactivated", "未激活"),
+ /**
+ * Audit stock status.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ AUDIT("audit", "审核中"),
+ /**
+ * Running stock status.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ RUNNING("running", "运行中"),
+ /**
+ * Stoped stock status.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ STOPED("stoped", "已停止"),
+ /**
+ * Paused stock status.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ PAUSED("paused", "暂停发放");
+
+ private final String value;
+ private final String description;
+
+ StockStatus(String value, String description) {
+ this.value = value;
+ this.description = description;
+ }
+
+ /**
+ * Value string.
+ *
+ * @return the string
+ * @since 1.0.0.RELEASE
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Description string.
+ *
+ * @return the string
+ * @since 1.0.0.RELEASE
+ */
+ public String description() {
+ return this.description;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/StrategyType.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/StrategyType.java
new file mode 100644
index 0000000..6322c47
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/StrategyType.java
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 目标完成类型、优惠使用类型
+ *
+ * @author felord.cn
+ * @since 1.0.2.RELEASE
+ */
+public enum StrategyType {
+ /**
+ * 增加数量,表示用户发生了履约行为
+ */
+ INCREASE,
+ /**
+ * 减少数量,表示取消用户的履约行为(例如用户取消购买、退货退款等)
+ */
+ DECREASE
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TarType.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TarType.java
new file mode 100644
index 0000000..5d0c90d
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TarType.java
@@ -0,0 +1,31 @@
+/*
+ *
+ * Copyright 2019-2021 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 账单压缩类型
+ *
+ * @author felord.cn
+ * @since 1.0.3.RELEASE
+ */
+public enum TarType {
+ /**
+ * 格式为{@code .gzip}的压缩包账单
+ */
+ GZIP
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeBillType.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeBillType.java
new file mode 100644
index 0000000..8f7473d
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeBillType.java
@@ -0,0 +1,40 @@
+/*
+ *
+ * Copyright 2019-2021 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 交易账单类型
+ *
+ * @author felord.cn
+ * @since 1.0.3.RELEASE
+ */
+public enum TradeBillType {
+ /**
+ * 返回当日所有订单信息(不含充值退款订单)
+ */
+ ALL,
+ /**
+ * 返回当日成功支付的订单(不含充值退款订单)
+ */
+ SUCCESS,
+ /**
+ * 返回当日退款订单(不含充值退款订单)
+ */
+ REFUND
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeState.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeState.java
new file mode 100644
index 0000000..786e9d8
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeState.java
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 微信侧返回交易状态
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public enum TradeState {
+ /**
+ * 支付成功
+ *
+ * @since 1.0.0.RELEASE
+ */
+ SUCCESS,
+ /**
+ * 转入退款
+ *
+ * @since 1.0.0.RELEASE
+ */
+ REFUND,
+ /**
+ * 未支付
+ *
+ * @since 1.0.0.RELEASE
+ */
+ NOTPAY,
+ /**
+ * 已关闭
+ *
+ * @since 1.0.0.RELEASE
+ */
+ CLOSED,
+ /**
+ * 已撤销(付款码支付)
+ *
+ * @since 1.0.0.RELEASE
+ */
+ REVOKED,
+ /**
+ * 用户支付中(付款码支付)
+ *
+ * @since 1.0.0.RELEASE
+ */
+ USERPAYING,
+ /**
+ * 支付失败(其他原因,如银行返回失败)
+ *
+ * @since 1.0.0.RELEASE
+ */
+ PAYERROR,
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeType.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeType.java
new file mode 100644
index 0000000..d9a6c9e
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/TradeType.java
@@ -0,0 +1,64 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 微信侧返回交易类型
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public enum TradeType {
+ /**
+ * 公众号支付
+ *
+ * @since 1.0.0.RELEASE
+ */
+ JSAPI,
+ /**
+ * 扫码支付
+ *
+ * @since 1.0.0.RELEASE
+ */
+ NATIVE,
+ /**
+ * APP支付
+ *
+ * @since 1.0.0.RELEASE
+ */
+ APP,
+ /**
+ * 付款码支付
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MICROPAY,
+ /**
+ * H5支付
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MWEB,
+ /**
+ * 刷脸支付
+ *
+ * @since 1.0.0.RELEASE
+ */
+ FACEPAY,
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/UnfinishedReason.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/UnfinishedReason.java
new file mode 100644
index 0000000..f705629
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/UnfinishedReason.java
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.enumeration;
+
+/**
+ * 未完成约定原因
+ *
+ * 当订单守约状态为{@link ContractStatus#UNFINISHED},返回此字段
+ *
+ * @since 1.0.3.RELEASE
+ */
+public enum UnfinishedReason {
+ /**
+ * 到期未完成约
+ */
+ DUE_TO_QUIT,
+ /**
+ * 提前退出约定
+ */
+ EARLY_QUIT
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WeChatServer.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WeChatServer.java
new file mode 100644
index 0000000..5430865
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WeChatServer.java
@@ -0,0 +1,92 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.enumeration;
+
+
+/**
+ * The enum We chat server domain.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public enum WeChatServer {
+ /**
+ * 中国
+ *
+ * @since 1.0.0.RELEASE
+ */
+ CHINA("https://api.mch.weixin.qq.com"),
+ /**
+ * 中国国内(备用域名)
+ *
+ * @since 1.0.0.RELEASE
+ */
+ CHINA2("https://api2.mch.weixin.qq.com"),
+ /**
+ * 香港
+ *
+ * @since 1.0.0.RELEASE
+ */
+ HK("https://apihk.mch.weixin.qq.com"),
+ /**
+ * 美国
+ *
+ * @since 1.0.0.RELEASE
+ */
+ US("https://apius.mch.weixin.qq.com"),
+ /**
+ * 获取公钥
+ *
+ * @since 1.0.0.RELEASE
+ */
+ FRAUD("https://fraud.mch.weixin.qq.com"),
+ /**
+ * 活动
+ *
+ * @since 1.0.0.RELEASE
+ */
+ ACTION("https://action.weixin.qq.com");
+
+
+ /**
+ * 域名
+ *
+ * @since 1.0.0.RELEASE
+ */
+ private final String domain;
+
+ WeChatServer(String domain) {
+ this.domain = domain;
+ }
+
+ /**
+ * Gets type.
+ *
+ * @return the type
+ * @since 1.0.0.RELEASE
+ */
+ public String domain() {
+ return domain;
+ }
+
+ @Override
+ public String toString() {
+ return domain;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java
new file mode 100644
index 0000000..59bb9d1
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java
@@ -0,0 +1,404 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.enumeration;
+
+import org.springframework.http.HttpMethod;
+
+/**
+ * 微信支付类型.
+ *
+ * @author felord.cn
+ * @see cn.felord.payment.wechat.v3.WechatPayClient
+ * @since 1.0.0.RELEASE
+ */
+public enum WechatPayV3Type {
+
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ /**
+ * 获取证书.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ CERT(HttpMethod.GET, "%s/v3/certificates"),
+
+ /**
+ * 文件下载
+ *
+ * @since 1.0.0.RELEASE
+ */
+ FILE_DOWNLOAD(HttpMethod.GET, "%s/v3/billdownload/file"),
+ /**
+ * 申请交易账单API.
+ *
+ * @since 1.0.3.RELEASE
+ */
+ TRADEBILL(HttpMethod.GET, "%s/v3/bill/tradebill"),
+ /**
+ * 申请资金账单API.
+ *
+ * @since 1.0.3.RELEASE
+ */
+ FUNDFLOWBILL(HttpMethod.GET, "%s/v3/bill/fundflowbill"),
+
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ /**
+ * 微信公众号支付或者小程序支付.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ JSAPI(HttpMethod.POST, "%s/v3/pay/transactions/jsapi"),
+
+ /**
+ * 微信扫码支付.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ NATIVE(HttpMethod.POST, "%s/v3/pay/transactions/native"),
+
+ /**
+ * 微信APP支付.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ APP(HttpMethod.POST, "%s/v3/pay/transactions/app"),
+
+ /**
+ * H5支付.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MWEB(HttpMethod.POST, "%s/v3/pay/transactions/h5"),
+ /**
+ * 关闭订单.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ CLOSE(HttpMethod.POST, "%s/v3/pay/transactions/out-trade-no/{out_trade_no}/close"),
+ /**
+ * 微信支付订单号查询.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ TRANSACTION_TRANSACTION_ID(HttpMethod.GET, "%s/v3/pay/transactions/id/{transaction_id}"),
+ /**
+ * 商户订单号查询.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ TRANSACTION_OUT_TRADE_NO(HttpMethod.GET, "%s/v3/pay/transactions/out-trade-no/{out_trade_no}"),
+
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ /**
+ * 合单下单-APP支付API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ COMBINE_APP(HttpMethod.POST, "%s/v3/combine-transactions/app"),
+
+ /**
+ * 合单下单-微信公众号支付或者小程序支付.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ COMBINE_JSAPI(HttpMethod.POST, "%s/v3/combine-transactions/jsapi"),
+ /**
+ * 合单下单-H5支付API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ COMBINE_MWEB(HttpMethod.POST, "%s/v3/combine-transactions/h5"),
+ /**
+ * 合单下单-Native支付API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ COMBINE_NATIVE(HttpMethod.POST, "%s/v3/combine-transactions/native"),
+ /**
+ * 合单查询订单API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ COMBINE_TRANSACTION_OUT_TRADE_NO(HttpMethod.GET, "%s/v3/combine-transactions/out-trade-no/{combine_out_trade_no}"),
+
+ /**
+ * 合单关闭订单API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ COMBINE_CLOSE(HttpMethod.POST, "%s/v3/combine-transactions/out-trade-no/{combine_out_trade_no}/close"),
+
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ /**
+ * 商户预授权API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_PERMISSIONS(HttpMethod.POST, "%s/v3/payscore/permissions"),
+ /**
+ * 创单结单合并API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_DIRECT_COMPLETE(HttpMethod.POST, "%s/payscore/serviceorder/direct-complete"),
+ /**
+ * 查询与用户授权记录(授权协议号)API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_PERMISSIONS_AUTH_CODE(HttpMethod.GET, "%s/v3/payscore/permissions/authorization-code/{authorization_code}"),
+ /**
+ * 解除用户授权关系(授权协议号)API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_TERMINATE_PERMISSIONS_AUTH_CODE(HttpMethod.POST, "%s/v3/payscore/permissions/authorization-code/{authorization_code}/terminate"),
+ /**
+ * 查询与用户授权记录(openid)API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_PERMISSIONS_OPENID(HttpMethod.GET, "%s/v3/payscore/permissions/openid/{openid}"),
+ /**
+ * 解除用户授权关系(openid)API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_TERMINATE_PERMISSIONS_OPENID(HttpMethod.POST, "%s/v3/payscore/permissions/openid/{openid}/terminate"),
+ /**
+ * 查询用户授权状态API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_USER_SERVICE_STATE(HttpMethod.GET, "%s/v3/payscore/user-service-state?service_id={service_id}&appid={appid}&openid={openid}"),
+ /**
+ * 创建支付分订单API
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_CREATE_USER_SERVICE_ORDER(HttpMethod.POST, "%s/v3/payscore/serviceorder"),
+ /**
+ * 查询支付分订单API
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_QUERY_USER_SERVICE_ORDER(HttpMethod.GET, "%s/v3/payscore/serviceorder"),
+ /**
+ * 取消支付分订单API
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_CANCEL_USER_SERVICE_ORDER(HttpMethod.POST, "%s/v3/payscore/serviceorder/{out_order_no}/cancel"),
+ /**
+ * 修改订单金额API
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_MODIFY_USER_SERVICE_ORDER(HttpMethod.POST, "%s/v3/payscore/serviceorder/{out_order_no}/modify"),
+ /**
+ * 完结支付分订单API
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_COMPLETE_USER_SERVICE_ORDER(HttpMethod.POST, "%s/v3/payscore/serviceorder/{out_order_no}/complete"),
+ /**
+ * 商户发起催收扣款API
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_PAY_USER_SERVICE_ORDER(HttpMethod.POST, "%s/v3/payscore/serviceorder/{out_order_no}/pay"),
+ /**
+ * 同步服务订单信息API
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAY_SCORE_SYNC_USER_SERVICE_ORDER(HttpMethod.POST, "%s/v3/payscore/serviceorder/{out_order_no}/sync"),
+
+
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ /**
+ * 微信先享卡预受理领卡请求API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ DISCOUNT_CARD_PRE_REQUEST(HttpMethod.POST, "%s/v3/discount-card/cards"),
+ /**
+ * 微信先享卡增加用户记录API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ DISCOUNT_CARD_ADD_USER_RECORDS(HttpMethod.POST, "%s/v3/discount-card/cards/{out_card_code}/add-user-records"),
+ /**
+ * 微信先享卡查询先享卡订单API.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ DISCOUNT_CARD_INFO(HttpMethod.POST, "%s/v3/discount-card/cards/{out_card_code}"),
+
+ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ /**
+ * 创建代金券批次API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_COUPON_STOCKS(HttpMethod.POST, "%s/v3/marketing/favor/coupon-stocks"),
+ /**
+ * 激活代金券批次API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_START(HttpMethod.POST, "%s/v3/marketing/favor/stocks/{stock_id}/start"),
+ /**
+ * 暂停代金券批次API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_PAUSE(HttpMethod.POST, "%s/v3/marketing/favor/stocks/{stock_id}/pause"),
+
+ /**
+ * 发放代金券API、根据商户号查用户的券.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_USERS_COUPONS(HttpMethod.POST, "%s/v3/marketing/favor/users/{openid}/coupons"),
+ /**
+ * 重启代金券API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_RESTART(HttpMethod.POST, "%s/v3/marketing/favor/stocks/{stock_id}/restart"),
+ /**
+ * 条件查询批次列表API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS(HttpMethod.GET, "%s/v3/marketing/favor/stocks"),
+ /**
+ * 查询批次详情API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_DETAIL(HttpMethod.GET, "%s/v3/marketing/favor/stocks/{stock_id}"),
+ /**
+ * 查询代金券详情API
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_USERS_COUPONS_DETAIL(HttpMethod.GET, "%s/v3/marketing/favor/users/{openid}/coupons/{coupon_id}"),
+ /**
+ * 查询代金券可用商户API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_MERCHANTS(HttpMethod.GET, "%s/v3/marketing/favor/stocks/{stock_id}/merchants"),
+ /**
+ * 查询代金券可用单品API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_ITEMS(HttpMethod.GET, "%s/v3/marketing/favor/stocks/{stock_id}/items"),
+ /**
+ * 下载批次核销明细API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_USE_FLOW(HttpMethod.GET, "%s/v3/marketing/favor/stocks/{stock_id}/use-flow"),
+ /**
+ * 下载批次退款明细API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_STOCKS_REFUND_FLOW(HttpMethod.GET, "%s/v3/marketing/favor/stocks/{stock_id}/refund-flow"),
+ /**
+ * 营销图片上传API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_IMAGE_UPLOAD(HttpMethod.POST, "%s/v3/marketing/favor/media/image-upload"),
+ /**
+ * 设置核销回调通知API.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ MARKETING_FAVOR_CALLBACKS(HttpMethod.POST, "%s/v3/marketing/favor/callbacks");
+
+
+ /**
+ * The Pattern.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ private final String pattern;
+ /**
+ * The Method.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ private final HttpMethod method;
+
+ /**
+ * Instantiates a new Wechat pay v 3 type.
+ *
+ * @param method the method
+ * @param pattern the pattern
+ * @since 1.0.0.RELEASE
+ */
+ WechatPayV3Type(HttpMethod method, String pattern) {
+ this.method = method;
+ this.pattern = pattern;
+ }
+
+ /**
+ * Method string.
+ *
+ * @return the string
+ * @since 1.0.0.RELEASE
+ */
+ public HttpMethod method() {
+ return this.method;
+ }
+
+ /**
+ * Pattern string.
+ *
+ * @return the string
+ * @since 1.0.0.RELEASE
+ */
+ public String pattern() {
+ return this.pattern;
+ }
+
+
+ /**
+ * 默认支付URI.
+ *
+ * @param weChatServer the we chat server
+ * @return the string
+ * @since 1.0.0.RELEASE
+ */
+ public String uri(WeChatServer weChatServer) {
+ return String.format(this.pattern, weChatServer.domain());
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/AbstractApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/AbstractApi.java
new file mode 100644
index 0000000..ff27c9b
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/AbstractApi.java
@@ -0,0 +1,266 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import cn.felord.payment.PayException;
+import cn.felord.payment.wechat.enumeration.*;
+import cn.felord.payment.wechat.v3.model.FundFlowBillParams;
+import cn.felord.payment.wechat.v3.model.TradeBillParams;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.springframework.http.RequestEntity;
+import org.springframework.util.Assert;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * The type Abstract api.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public abstract class AbstractApi {
+ /**
+ * The Mapper.
+ */
+ private final ObjectMapper mapper;
+ /**
+ * The Wechat pay client.
+ */
+ private final WechatPayClient wechatPayClient;
+ /**
+ * The Tenant id.
+ */
+ private final String tenantId;
+
+
+ /**
+ * Instantiates a new Abstract api.
+ *
+ * @param wechatPayClient the wechat pay client
+ * @param tenantId the tenant id
+ */
+ public AbstractApi(WechatPayClient wechatPayClient, String tenantId) {
+ this.mapper = new ObjectMapper();
+ applyObjectMapper(this.mapper);
+ this.wechatPayClient = wechatPayClient;
+ Assert.hasText(tenantId, "tenantId is required");
+ if (!container().getTenantIds().contains(tenantId)) {
+ throw new PayException("tenantId is not in wechatMetaContainer");
+ }
+ this.tenantId = tenantId;
+ }
+
+ /**
+ * Apply object mapper.
+ *
+ * @param mapper the mapper
+ */
+ private void applyObjectMapper(ObjectMapper mapper) {
+ mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
+ mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ SimpleModule module = new JavaTimeModule();
+ mapper.registerModule(module);
+ }
+
+
+ /**
+ * Gets mapper.
+ *
+ * @return the mapper
+ */
+ public ObjectMapper getMapper() {
+ return mapper;
+ }
+
+ /**
+ * Client wechat pay client.
+ *
+ * @return the wechat pay client
+ */
+ public WechatPayClient client() {
+ return wechatPayClient;
+ }
+
+ /**
+ * Tenant id string.
+ *
+ * @return the string
+ */
+ public String tenantId() {
+ return tenantId;
+ }
+
+ /**
+ * Container wechat meta container.
+ *
+ * @return the wechat meta container
+ */
+ public WechatMetaContainer container() {
+ return wechatPayClient.signatureProvider().wechatMetaContainer();
+ }
+
+ /**
+ * Wechat meta bean wechat meta bean.
+ *
+ * @return the wechat meta bean
+ */
+ public WechatMetaBean wechatMetaBean() {
+ return container().getWechatMeta(tenantId);
+ }
+
+ /**
+ * 构建Post请求对象.
+ *
+ * @param uri the uri
+ * @param params the params
+ * @return the request entity
+ */
+ protected RequestEntity> Post(URI uri, Object params) {
+ try {
+ return RequestEntity.post(uri).header("Pay-TenantId", tenantId)
+ .body(mapper.writeValueAsString(params));
+ } catch (JsonProcessingException e) {
+ throw new PayException("wechat app pay json failed");
+ }
+ }
+
+ /**
+ * 构建Get请求对象.
+ *
+ * @param uri the uri
+ * @return the request entity
+ */
+ protected RequestEntity> Get(URI uri) {
+ return RequestEntity.get(uri).header("Pay-TenantId", tenantId)
+ .build();
+ }
+
+
+ /**
+ * 对账单下载。
+ *
+ * @param link the link
+ * @return 对账单内容,有可能为空字符 “”
+ */
+ protected String billDownload(String link) {
+ return this.client().withType(WechatPayV3Type.FILE_DOWNLOAD, link)
+ .function((type, downloadUrl) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(downloadUrl)
+ .build()
+ .toUri();
+ return Get(uri);
+ })
+ .download();
+ }
+
+
+ /**
+ * 申请交易账单API
+ *
+ * 微信支付按天提供交易账单文件,商户可以通过该接口获取账单文件的下载地址。文件内包含交易相关的金额、时间、营销等信息,供商户核对订单、退款、银行到账等情况。
+ *
+ * 注意:
+ *
+ * 微信侧未成功下单的交易不会出现在对账单中。支付成功后撤销的交易会出现在对账单中,跟原支付单订单号一致;
+ * 对账单中涉及金额的字段单位为“元”;
+ * 对账单接口只能下载三个月以内的账单。
+ * 小微商户不单独提供对账单下载,如有需要,可在调取“下载对账单”API接口时不传sub_mch_id,获取服务商下全量电商二级商户(包括小微商户和非小微商户)的对账单。
+ *
+ *
+ * @param tradeBillParams tradeBillParams
+ * @since 1.0.3.RELEASE
+ */
+ public final void downloadTradeBill(TradeBillParams tradeBillParams) {
+ this.client().withType(WechatPayV3Type.TRADEBILL, tradeBillParams)
+ .function((wechatPayV3Type, params) -> {
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ LocalDate billDate = params.getBillDate();
+ queryParams.add("bill_date", billDate.format(DateTimeFormatter.ISO_DATE));
+ String subMchid = params.getSubMchid();
+
+ if (StringUtils.hasText(subMchid)) {
+ queryParams.add("sub_mchid", subMchid);
+ }
+
+ TradeBillType tradeBillType = Optional.ofNullable(params.getBillType())
+ .orElse(TradeBillType.ALL);
+ queryParams.add("bill_type", tradeBillType.name());
+ TarType tarType = params.getTarType();
+ if (Objects.nonNull(tarType)) {
+ queryParams.add("tar_type", tarType.name());
+ }
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build().toUri();
+ return Get(uri);
+ })
+ .consumer(response -> this.billDownload(Objects.requireNonNull(response.getBody()).get("download_url").asText()))
+ .request();
+ }
+
+ /**
+ * 申请资金账单API
+ *
+ * 微信支付按天提供微信支付账户的资金流水账单文件,商户可以通过该接口获取账单文件的下载地址。文件内包含该账户资金操作相关的业务单号、收支金额、记账时间等信息,供商户进行核对。
+ *
+ * 注意:
+ *
+ * 资金账单中的数据反映的是商户微信支付账户资金变动情况;
+ * 对账单中涉及金额的字段单位为“元”。
+ *
+ *
+ * @param fundFlowBillParams fundFlowBillParams
+ * @since 1.0.3.RELEASE
+ */
+ public final void downloadFundFlowBill(FundFlowBillParams fundFlowBillParams) {
+ this.client().withType(WechatPayV3Type.FUNDFLOWBILL, fundFlowBillParams)
+ .function((wechatPayV3Type, params) -> {
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ LocalDate billDate = params.getBillDate();
+ queryParams.add("bill_date", billDate.format(DateTimeFormatter.ISO_DATE));
+
+ FundFlowAccountType accountType = Optional.ofNullable(params.getAccountType())
+ .orElse(FundFlowAccountType.BASIC);
+ queryParams.add("account_type", accountType.name());
+ TarType tarType = params.getTarType();
+ if (Objects.nonNull(tarType)) {
+ queryParams.add("tar_type", tarType.name());
+ }
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build().toUri();
+ return Get(uri);
+ })
+ .consumer(response -> this.billDownload(Objects.requireNonNull(response.getBody()).get("download_url").asText()))
+ .request();
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.java
new file mode 100644
index 0000000..930d435
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/ExtensionFormHttpMessageConverter.java
@@ -0,0 +1,446 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import org.springframework.http.*;
+import org.springframework.http.converter.*;
+import org.springframework.http.converter.json.GsonHttpMessageConverter;
+import org.springframework.http.converter.json.JsonbHttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.http.converter.smile.MappingJackson2SmileHttpMessageConverter;
+import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
+import org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter;
+import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
+import org.springframework.http.converter.xml.SourceHttpMessageConverter;
+import org.springframework.lang.Nullable;
+import org.springframework.util.Assert;
+import org.springframework.util.ClassUtils;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StreamUtils;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用于微信支付处理上传的自定义消息转换器.
+ *
+ * @author felord.cn
+ * @see AllEncompassingFormHttpMessageConverter
+ * @since 1.0.0.RELEASE
+ */
+final class ExtensionFormHttpMessageConverter extends FormHttpMessageConverter {
+ /**
+ * The constant BOUNDARY.
+ */
+ private static final String BOUNDARY = "boundary";
+
+
+ /**
+ * The constant jaxb2Present.
+ */
+ private static final boolean jaxb2Present;
+
+ /**
+ * The constant jackson2Present.
+ */
+ private static final boolean jackson2Present;
+
+ /**
+ * The constant jackson2XmlPresent.
+ */
+ private static final boolean jackson2XmlPresent;
+
+ /**
+ * The constant jackson2SmilePresent.
+ */
+ private static final boolean jackson2SmilePresent;
+
+ /**
+ * The constant gsonPresent.
+ */
+ private static final boolean gsonPresent;
+
+ /**
+ * The constant jsonbPresent.
+ */
+ private static final boolean jsonbPresent;
+
+ /**
+ * The Part converters.
+ */
+ private final List> partConverters = new ArrayList<>();
+
+ static {
+ ClassLoader classLoader = AllEncompassingFormHttpMessageConverter.class.getClassLoader();
+ jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", classLoader);
+ jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) &&
+ ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);
+ jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader);
+ jackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader);
+ gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader);
+ jsonbPresent = ClassUtils.isPresent("javax.json.bind.Jsonb", classLoader);
+ }
+
+ /**
+ * Instantiates a new Upload http message converter.
+ */
+ public ExtensionFormHttpMessageConverter() {
+ StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
+ stringHttpMessageConverter.setWriteAcceptCharset(false); // see SPR-7316
+
+ this.partConverters.add(new ByteArrayHttpMessageConverter());
+ this.partConverters.add(stringHttpMessageConverter);
+ this.partConverters.add(new ResourceHttpMessageConverter());
+ try {
+ this.partConverters.add(new SourceHttpMessageConverter<>());
+ } catch (Error err) {
+ // Ignore when no TransformerFactory implementation is available
+ }
+
+ if (jaxb2Present && !jackson2XmlPresent) {
+ this.partConverters.add(new Jaxb2RootElementHttpMessageConverter());
+ }
+
+ if (jackson2Present) {
+ this.partConverters.add(new MappingJackson2HttpMessageConverter());
+ } else if (gsonPresent) {
+ this.partConverters.add(new GsonHttpMessageConverter());
+ } else if (jsonbPresent) {
+ this.partConverters.add(new JsonbHttpMessageConverter());
+ }
+
+ if (jackson2XmlPresent) {
+ this.partConverters.add(new MappingJackson2XmlHttpMessageConverter());
+ }
+
+ if (jackson2SmilePresent) {
+ this.partConverters.add(new MappingJackson2SmileHttpMessageConverter());
+ }
+ this.setPartConverters(this.partConverters);
+ applyDefaultCharset();
+ }
+
+
+ /**
+ * Apply the configured charset as a default to registered part converters.
+ */
+ private void applyDefaultCharset() {
+ for (HttpMessageConverter> candidate : this.partConverters) {
+ if (candidate instanceof AbstractHttpMessageConverter) {
+ AbstractHttpMessageConverter> converter = (AbstractHttpMessageConverter>) candidate;
+ // Only override default charset if the converter operates with a charset to begin with...
+ if (converter.getDefaultCharset() != null) {
+ converter.setDefaultCharset(DEFAULT_CHARSET);
+ }
+ }
+ }
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void write(MultiValueMap map, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
+ throws IOException, HttpMessageNotWritableException {
+
+ if (!isMultipart(map, contentType)) {
+ writeForm((MultiValueMap) map, contentType, outputMessage);
+ } else {
+ writeMultipart((MultiValueMap) map, outputMessage);
+ }
+ }
+
+ /**
+ * Is multipart boolean.
+ *
+ * @param map the map
+ * @param contentType the content type
+ * @return the boolean
+ */
+ private boolean isMultipart(MultiValueMap map, @Nullable MediaType contentType) {
+ if (contentType != null) {
+ return MediaType.MULTIPART_FORM_DATA.includes(contentType);
+ }
+ for (List> values : map.values()) {
+ for (Object value : values) {
+ if (value != null && !(value instanceof String)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Write form.
+ *
+ * @param formData the form data
+ * @param contentType the content type
+ * @param outputMessage the output message
+ * @throws IOException the io exception
+ */
+ private void writeForm(MultiValueMap formData, @Nullable MediaType contentType,
+ HttpOutputMessage outputMessage) throws IOException {
+
+ contentType = getMediaType(contentType);
+ outputMessage.getHeaders().setContentType(contentType);
+
+ Charset charset = contentType.getCharset();
+ Assert.notNull(charset, "No charset"); // should never occur
+
+ final byte[] bytes = serializeForm(formData, charset).getBytes(charset);
+ outputMessage.getHeaders().setContentLength(bytes.length);
+
+ if (outputMessage instanceof StreamingHttpOutputMessage) {
+ StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
+ streamingOutputMessage.setBody(outputStream -> StreamUtils.copy(bytes, outputStream));
+ } else {
+ StreamUtils.copy(bytes, outputMessage.getBody());
+ }
+ }
+
+ /**
+ * Gets media type.
+ *
+ * @param mediaType the media type
+ * @return the media type
+ */
+ private MediaType getMediaType(@Nullable MediaType mediaType) {
+ if (mediaType == null) {
+ return new MediaType(MediaType.APPLICATION_FORM_URLENCODED, DEFAULT_CHARSET);
+ } else if (mediaType.getCharset() == null) {
+ return new MediaType(mediaType, DEFAULT_CHARSET);
+ } else {
+ return mediaType;
+ }
+ }
+
+ /**
+ * Write multipart.
+ *
+ * @param parts the parts
+ * @param outputMessage the output message
+ * @throws IOException the io exception
+ */
+ private void writeMultipart(final MultiValueMap parts, HttpOutputMessage outputMessage)
+ throws IOException {
+
+
+ Map parameters = new LinkedHashMap<>(1);
+
+ parameters.put(BOUNDARY, BOUNDARY);
+
+ MediaType contentType = new MediaType(MediaType.MULTIPART_FORM_DATA, parameters);
+ HttpHeaders headers = outputMessage.getHeaders();
+ headers.setContentType(contentType);
+
+ byte[] boundaryBytes = BOUNDARY.getBytes();
+ if (outputMessage instanceof StreamingHttpOutputMessage) {
+ StreamingHttpOutputMessage streamingOutputMessage = (StreamingHttpOutputMessage) outputMessage;
+ streamingOutputMessage.setBody(outputStream -> {
+ writeParts(outputStream, parts, boundaryBytes);
+ writeEnd(outputStream, boundaryBytes);
+ });
+ } else {
+ writeParts(outputMessage.getBody(), parts, boundaryBytes);
+ writeEnd(outputMessage.getBody(), boundaryBytes);
+ }
+ }
+
+ /**
+ * Write parts.
+ *
+ * @param os the os
+ * @param parts the parts
+ * @param boundary the boundary
+ * @throws IOException the io exception
+ */
+ private void writeParts(OutputStream os, MultiValueMap parts, byte[] boundary) throws IOException {
+ for (Map.Entry> entry : parts.entrySet()) {
+ String name = entry.getKey();
+ for (Object part : entry.getValue()) {
+ if (part != null) {
+ writeBoundary(os, boundary);
+ writePart(name, getHttpEntity(part), os);
+ writeNewLine(os);
+ }
+ }
+ }
+ }
+
+ /**
+ * Write part.
+ *
+ * @param name the name
+ * @param partEntity the part entity
+ * @param os the os
+ * @throws IOException the io exception
+ */
+ @SuppressWarnings("unchecked")
+ private void writePart(String name, HttpEntity> partEntity, OutputStream os) throws IOException {
+ Object partBody = partEntity.getBody();
+ if (partBody == null) {
+ throw new IllegalStateException("Empty body for part '" + name + "': " + partEntity);
+ }
+ Class> partType = partBody.getClass();
+ HttpHeaders partHeaders = partEntity.getHeaders();
+ MediaType partContentType = partHeaders.getContentType();
+ for (HttpMessageConverter> messageConverter : this.partConverters) {
+ if (messageConverter.canWrite(partType, partContentType)) {
+
+ HttpOutputMessage multipartMessage = new MultipartHttpOutputMessage(os, DEFAULT_CHARSET);
+ multipartMessage.getHeaders().setContentDispositionFormData(name, getFilename(partBody));
+ if (!partHeaders.isEmpty()) {
+ multipartMessage.getHeaders().putAll(partHeaders);
+ }
+ ((HttpMessageConverter) messageConverter).write(partBody, partContentType, multipartMessage);
+ return;
+ }
+ }
+ throw new HttpMessageNotWritableException("Could not write request: no suitable HttpMessageConverter " +
+ "found for request type [" + partType.getName() + "]");
+ }
+
+
+ /**
+ * Write boundary.
+ *
+ * @param os the os
+ * @param boundary the boundary
+ * @throws IOException the io exception
+ */
+ private void writeBoundary(OutputStream os, byte[] boundary) throws IOException {
+ os.write('-');
+ os.write('-');
+ os.write(boundary);
+ writeNewLine(os);
+ }
+
+ /**
+ * Write end.
+ *
+ * @param os the os
+ * @param boundary the boundary
+ * @throws IOException the io exception
+ */
+ private static void writeEnd(OutputStream os, byte[] boundary) throws IOException {
+ os.write('-');
+ os.write('-');
+ os.write(boundary);
+ os.write('-');
+ os.write('-');
+ writeNewLine(os);
+ }
+
+ /**
+ * Write new line.
+ *
+ * @param os the os
+ * @throws IOException the io exception
+ */
+ private static void writeNewLine(OutputStream os) throws IOException {
+ os.write('\r');
+ os.write('\n');
+ }
+
+ /**
+ * The type Multipart http output message.
+ */
+ private static class MultipartHttpOutputMessage implements HttpOutputMessage {
+
+ /**
+ * The Output stream.
+ */
+ private final OutputStream outputStream;
+
+ /**
+ * The Charset.
+ */
+ private final Charset charset;
+
+ /**
+ * The Headers.
+ */
+ private final HttpHeaders headers = new HttpHeaders();
+
+ /**
+ * The Headers written.
+ */
+ private boolean headersWritten = false;
+
+ /**
+ * Instantiates a new Multipart http output message.
+ *
+ * @param outputStream the output stream
+ * @param charset the charset
+ */
+ public MultipartHttpOutputMessage(OutputStream outputStream, Charset charset) {
+ this.outputStream = outputStream;
+ this.charset = charset;
+ }
+
+ @Override
+ public HttpHeaders getHeaders() {
+ return (this.headersWritten ? HttpHeaders.readOnlyHttpHeaders(this.headers) : this.headers);
+ }
+
+ @Override
+ public OutputStream getBody() throws IOException {
+ writeHeaders();
+ return this.outputStream;
+ }
+
+ /**
+ * Write headers.
+ *
+ * @throws IOException the io exception
+ */
+ private void writeHeaders() throws IOException {
+ if (!this.headersWritten) {
+ for (Map.Entry> entry : this.headers.entrySet()) {
+ byte[] headerName = getBytes(entry.getKey());
+ for (String headerValueString : entry.getValue()) {
+ byte[] headerValue = getBytes(headerValueString);
+ this.outputStream.write(headerName);
+ this.outputStream.write(':');
+ this.outputStream.write(' ');
+ this.outputStream.write(headerValue);
+ writeNewLine(this.outputStream);
+ }
+ }
+ writeNewLine(this.outputStream);
+ this.headersWritten = true;
+ }
+ }
+
+ /**
+ * Get bytes byte [ ].
+ *
+ * @param name the name
+ * @return the byte [ ]
+ */
+ private byte[] getBytes(String name) {
+ return name.getBytes(this.charset);
+ }
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/KeyPairFactory.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/KeyPairFactory.java
new file mode 100644
index 0000000..839245f
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/KeyPairFactory.java
@@ -0,0 +1,76 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+
+import cn.felord.payment.PayException;
+import org.springframework.core.io.ClassPathResource;
+
+import java.security.KeyPair;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+/**
+ * 证书工具
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ **/
+public class KeyPairFactory {
+
+ private KeyStore store;
+
+ private final Object lock = new Object();
+
+ /**
+ * 获取公私钥.
+ *
+ * @param keyPath the key path
+ * @param keyAlias the key alias
+ * @param keyPass password
+ * @return the key pair
+ */
+ public WechatMetaBean createPKCS12(String keyPath, String keyAlias, String keyPass) {
+ ClassPathResource resource = new ClassPathResource(keyPath);
+ char[] pem = keyPass.toCharArray();
+ try {
+ synchronized (lock) {
+ if (store == null) {
+ synchronized (lock) {
+ store = KeyStore.getInstance("PKCS12");
+ store.load(resource.getInputStream(), pem);
+ }
+ }
+ }
+ X509Certificate certificate = (X509Certificate) store.getCertificate(keyAlias);
+ certificate.checkValidity();
+ String serialNumber = certificate.getSerialNumber().toString(16).toUpperCase();
+ PublicKey publicKey = certificate.getPublicKey();
+ PrivateKey storeKey = (PrivateKey) store.getKey(keyAlias, pem);
+ WechatMetaBean wechatMetaBean = new WechatMetaBean();
+ wechatMetaBean.setKeyPair(new KeyPair(publicKey, storeKey));
+ wechatMetaBean.setSerialNumber(serialNumber);
+ return wechatMetaBean;
+ } catch (Exception e) {
+ throw new PayException("Cannot load keys from store: " + resource, e);
+ }
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/SignatureProvider.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/SignatureProvider.java
new file mode 100644
index 0000000..7611470
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/SignatureProvider.java
@@ -0,0 +1,271 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+
+import cn.felord.payment.wechat.enumeration.WeChatServer;
+import cn.felord.payment.wechat.enumeration.WechatPayV3Type;
+import cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams;
+import cn.felord.payment.PayException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import lombok.SneakyThrows;
+import org.springframework.http.*;
+import org.springframework.util.AlternativeJdkIdGenerator;
+import org.springframework.util.Base64Utils;
+import org.springframework.util.IdGenerator;
+import org.springframework.web.client.RestOperations;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponents;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import javax.crypto.Cipher;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.GCMParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
+import java.security.*;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+
+/**
+ * 签名 加签 验签
+ *
+ * 我方请求微信服务器时,需要根据我方的API证书对参数进行加签;微信服务器会根据我方签名验签以确定请求来自我方服务器;
+ *
+ * 然后微信服务器响应我方请求并在响应报文中使用【微信平台证书】加签 我方需要根据规则验签是否响应来自微信支付服务器
+ *
+ * 其中【微信平台证书】定期会进行更新,不受我方管控,我方需要适当的时候获取最新的证书列表。
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class SignatureProvider {
+
+ /**
+ * The constant ID_GENERATOR.
+ */
+ private static final IdGenerator ID_GENERATOR = new AlternativeJdkIdGenerator();
+ /**
+ * The constant SCHEMA.
+ */
+ private static final String SCHEMA = "WECHATPAY2-SHA256-RSA2048 ";
+ /**
+ * The constant TOKEN_PATTERN.
+ */
+ public static final String TOKEN_PATTERN = "mchid=\"%s\",nonce_str=\"%s\",timestamp=\"%d\",serial_no=\"%s\",signature=\"%s\"";
+ /**
+ * 微信平台证书容器 key = 序列号 value = 证书对象
+ */
+ private static final Map CERTIFICATE_MAP = new ConcurrentHashMap<>();
+ /**
+ * The Rest operations.
+ */
+ private final RestOperations restOperations = new RestTemplate();
+ /**
+ * The Wechat meta container.
+ */
+ private final WechatMetaContainer wechatMetaContainer;
+
+ /**
+ * Instantiates a new Signature provider.
+ *
+ * @param wechatMetaContainer the wechat meta container
+ */
+ public SignatureProvider(WechatMetaContainer wechatMetaContainer) {
+ this.wechatMetaContainer = wechatMetaContainer;
+ wechatMetaContainer.getTenantIds().forEach(this::refreshCertificate);
+ }
+
+
+ /**
+ * 我方请求前用 SHA256withRSA 加签,使用API证书.
+ *
+ * @param tenantId the properties key
+ * @param method the method
+ * @param canonicalUrl the canonical url
+ * @param body the body
+ * @return the string
+ */
+ @SneakyThrows
+ public String requestSign(String tenantId, String method, String canonicalUrl, String body) {
+ Signature signer = Signature.getInstance("SHA256withRSA");
+ WechatMetaBean wechatMetaBean = wechatMetaContainer.getWechatMeta(tenantId);
+ signer.initSign(wechatMetaBean.getKeyPair().getPrivate());
+
+ long timestamp = System.currentTimeMillis() / 1000;
+ String nonceStr = ID_GENERATOR.generateId()
+ .toString()
+ .replaceAll("-", "");
+ final String signatureStr = createSign(method, canonicalUrl, String.valueOf(timestamp), nonceStr, body);
+ signer.update(signatureStr.getBytes(StandardCharsets.UTF_8));
+ String encode = Base64Utils.encodeToString(signer.sign());
+
+ // 序列号
+ String serialNo = wechatMetaBean.getSerialNumber();
+ // 生成token
+ String token = String.format(TOKEN_PATTERN,
+ wechatMetaBean.getV3().getMchId(),
+ nonceStr, timestamp, serialNo, encode);
+ return SCHEMA.concat(token);
+ }
+
+ /**
+ * 我方对响应验签,和应答签名做比较,使用微信平台证书.
+ *
+ * @param params the params
+ * @return the boolean
+ */
+ @SneakyThrows
+ public boolean responseSignVerify(ResponseSignVerifyParams params) {
+
+ String wechatpaySerial = params.getWechatpaySerial();
+ if (CERTIFICATE_MAP.isEmpty() || !CERTIFICATE_MAP.containsKey(wechatpaySerial)) {
+ wechatMetaContainer.getTenantIds().forEach(this::refreshCertificate);
+ }
+ Certificate certificate = CERTIFICATE_MAP.get(wechatpaySerial);
+
+ final String signatureStr = createSign(params.getWechatpayTimestamp(), params.getWechatpayNonce(), params.getBody());
+ Signature signer = Signature.getInstance("SHA256withRSA");
+ signer.initVerify(certificate);
+ signer.update(signatureStr.getBytes(StandardCharsets.UTF_8));
+
+ return signer.verify(Base64Utils.decodeFromString(params.getWechatpaySignature()));
+ }
+
+
+ /**
+ * 当我方服务器不存在平台证书或者证书同当前响应报文中的证书序列号不一致时应当刷新 调用/v3/certificates
+ *
+ * @param tenantId tenantId
+ */
+ @SneakyThrows
+ private synchronized void refreshCertificate(String tenantId) {
+ String url = WechatPayV3Type.CERT.uri(WeChatServer.CHINA);
+
+ UriComponents uri = UriComponentsBuilder.fromHttpUrl(url).build();
+
+ String canonicalUrl = uri.getPath();
+ String encodedQuery = uri.getQuery();
+
+ if (encodedQuery != null) {
+ canonicalUrl += "?" + encodedQuery;
+ }
+ // 签名
+ HttpMethod httpMethod = WechatPayV3Type.CERT.method();
+ String authorization = requestSign(tenantId, httpMethod.name(), canonicalUrl, "");
+
+ HttpHeaders headers = new HttpHeaders();
+ headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ headers.add("Authorization", authorization);
+ headers.add("User-Agent", "X-Pay-Service");
+ RequestEntity> requestEntity = new RequestEntity<>(headers, httpMethod, uri.toUri());
+ ResponseEntity responseEntity = restOperations.exchange(requestEntity, ObjectNode.class);
+ ObjectNode bodyObjectNode = responseEntity.getBody();
+
+ if (Objects.isNull(bodyObjectNode)) {
+ throw new PayException("cant obtain the response body");
+ }
+ ArrayNode certificates = bodyObjectNode.withArray("data");
+ if (certificates.isArray() && certificates.size() > 0) {
+ CERTIFICATE_MAP.clear();
+ final CertificateFactory certificateFactory = CertificateFactory.getInstance("X509");
+ certificates.forEach(objectNode -> {
+ JsonNode encryptCertificate = objectNode.get("encrypt_certificate");
+ String associatedData = encryptCertificate.get("associated_data").asText();
+ String nonce = encryptCertificate.get("nonce").asText();
+ String ciphertext = encryptCertificate.get("ciphertext").asText();
+ String publicKey = decryptResponseBody(tenantId, associatedData, nonce, ciphertext);
+
+ ByteArrayInputStream inputStream = new ByteArrayInputStream(publicKey.getBytes(StandardCharsets.UTF_8));
+
+ try {
+ Certificate certificate = certificateFactory.generateCertificate(inputStream);
+ String responseSerialNo = objectNode.get("serial_no").asText();
+ CERTIFICATE_MAP.put(responseSerialNo, certificate);
+ } catch (CertificateException e) {
+ throw new PayException("An error occurred while generating the wechat v3 certificate, reason : " + e.getMessage());
+ }
+ });
+ }
+ }
+
+ /**
+ * 解密响应体.
+ *
+ * @param tenantId the properties key
+ * @param associatedData the associated data
+ * @param nonce the nonce
+ * @param ciphertext the ciphertext
+ * @return the string
+ */
+ public String decryptResponseBody(String tenantId, String associatedData, String nonce, String ciphertext) {
+ try {
+ Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
+ String apiV3Key = wechatMetaContainer.getWechatMeta(tenantId).getV3().getAppV3Secret();
+ SecretKeySpec key = new SecretKeySpec(apiV3Key.getBytes(StandardCharsets.UTF_8), "AES");
+ GCMParameterSpec spec = new GCMParameterSpec(128, nonce.getBytes(StandardCharsets.UTF_8));
+
+ cipher.init(Cipher.DECRYPT_MODE, key, spec);
+ cipher.updateAAD(associatedData.getBytes(StandardCharsets.UTF_8));
+
+ byte[] bytes;
+ try {
+ bytes = cipher.doFinal(Base64Utils.decodeFromString(ciphertext));
+ } catch (GeneralSecurityException e) {
+ throw new PayException(e);
+ }
+ return new String(bytes, StandardCharsets.UTF_8);
+ } catch (NoSuchAlgorithmException | NoSuchPaddingException |
+ InvalidKeyException | InvalidAlgorithmParameterException e) {
+ throw new PayException(e);
+ }
+ }
+
+ /**
+ * Wechat meta container.
+ *
+ * @return the wechat meta container
+ */
+ public WechatMetaContainer wechatMetaContainer() {
+ return wechatMetaContainer;
+ }
+
+ /**
+ * 请求时设置签名 组件
+ *
+ * @param components the components
+ * @return string string
+ */
+ private static String createSign(String... components) {
+ return Arrays.stream(components)
+ .collect(Collectors.joining("\n", "", "\n"));
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatApiProvider.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatApiProvider.java
new file mode 100644
index 0000000..b245a96
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatApiProvider.java
@@ -0,0 +1,110 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+/**
+ * 微信支付工具.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class WechatApiProvider {
+ /**
+ * The Wechat pay client.
+ */
+ private final WechatPayClient wechatPayClient;
+
+ /**
+ * Instantiates a new Wechat api provider.
+ *
+ * @param wechatPayClient the wechat pay client
+ */
+ public WechatApiProvider(WechatPayClient wechatPayClient) {
+ this.wechatPayClient = wechatPayClient;
+ }
+
+ /**
+ * 代金券.
+ *
+ * @param tenantId the tenant id
+ * @return the wechat marketing favor api
+ * @since 1.0.0.RELEASE
+ */
+ public WechatMarketingFavorApi favorApi(String tenantId) {
+ return new WechatMarketingFavorApi(this.wechatPayClient, tenantId);
+ }
+
+ /**
+ * 普通支付-直连模式.
+ *
+ * @param tenantId the tenant id
+ * @return the wechat pay api
+ * @since 1.0.0.RELEASE
+ */
+ public WechatDirectPayApi directPayApi(String tenantId) {
+ return new WechatDirectPayApi(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 合单支付.
+ *
+ * @param tenantId the tenant id
+ * @return the wechat combine pay api
+ * @since 1.0.1.RELEASE
+ */
+ public WechatCombinePayApi combinePayApi(String tenantId) {
+ return new WechatCombinePayApi(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 微信支付分.
+ *
+ * @param tenantId the tenant id
+ * @return the wechat pay score api
+ * @since 1.0.2.RELEASE
+ */
+ public WechatPayScoreApi payScoreApi(String tenantId) {
+ return new WechatPayScoreApi(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 微信支付先享卡.
+ *
+ * @param tenantId the tenant id
+ * @return the wechat discount card api
+ * @since 1.0.2.RELEASE
+ */
+ public WechatDiscountCardApi discountCardApi(String tenantId) {
+ return new WechatDiscountCardApi(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 回调.
+ *
+ * 需要处理白名单、幂等性问题。
+ *
+ * @param tenantId the tenant id
+ * @return the wechat pay callback
+ * @since 1.0.0.RELEASE
+ */
+ public WechatPayCallback callback(String tenantId) {
+ return new WechatPayCallback(wechatPayClient.signatureProvider(), tenantId);
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatCombinePayApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatCombinePayApi.java
new file mode 100644
index 0000000..9c62786
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatCombinePayApi.java
@@ -0,0 +1,214 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import cn.felord.payment.wechat.WechatPayProperties;
+import cn.felord.payment.wechat.enumeration.WeChatServer;
+import cn.felord.payment.wechat.enumeration.WechatPayV3Type;
+import cn.felord.payment.wechat.v3.model.combine.CombineCloseParams;
+import cn.felord.payment.wechat.v3.model.combine.CombineH5PayParams;
+import cn.felord.payment.wechat.v3.model.combine.CombinePayParams;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.springframework.http.RequestEntity;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+
+/**
+ * 微信合单支付.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class WechatCombinePayApi extends AbstractApi {
+ /**
+ * Instantiates a new Abstract api.
+ *
+ * @param wechatPayClient the wechat pay client
+ * @param tenantId the tenant id
+ */
+ public WechatCombinePayApi(WechatPayClient wechatPayClient, String tenantId) {
+ super(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 合单下单-APP支付API
+ *
+ * 使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最多一次可支持50笔订单进行合单支付。
+ *
+ * 注意:
+ * • 订单如果需要进行抽佣等,需要在合单中指定需要进行分账(profit_sharing为true);指定后,交易资金进入二级商户账户,处于冻结状态,可在后续使用分账接口进行分账,利用分账完结进行资金解冻,实现抽佣和对二级商户的账期。
+ *
+ * @param combinePayParams the combine pay params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity appPay(CombinePayParams combinePayParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.COMBINE_APP, combinePayParams)
+ .function(this::combinePayFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+
+ /**
+ * 合单下单-JSAPI支付/小程序支付API
+ *
+ * 使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最多一次可支持50笔订单进行合单支付。
+ *
+ * 注意:
+ * • 订单如果需要进行抽佣等,需要在合单中指定需要进行分账(profit_sharing为true);指定后,交易资金进入二级商户账户,处于冻结状态,可在后续使用分账接口进行分账,利用分账完结进行资金解冻,实现抽佣和对二级商户的账期。
+ *
+ * @param combinePayParams the combine pay params
+ * @return wechat response entity
+ */
+ public WechatResponseEntity jsPay(CombinePayParams combinePayParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.COMBINE_JSAPI, combinePayParams)
+ .function(this::combinePayFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Combine pay function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> combinePayFunction(WechatPayV3Type type, CombinePayParams params) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ params.setCombineAppid(v3.getAppId());
+ params.setCombineMchid(v3.getMchId());
+
+ String notifyUrl = v3.getDomain().concat(params.getNotifyUrl());
+ params.setNotifyUrl(notifyUrl);
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+ return Post(uri, params);
+ }
+
+ /**
+ * 合单下单-H5支付API.
+ *
+ * 使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最多一次可支持50笔订单进行合单支付。
+ *
+ * 注意:
+ * • 订单如果需要进行抽佣等,需要在合单中指定需要进行分账(profit_sharing为true);指定后,交易资金进入二级商户账户,处于冻结状态,可在后续使用分账接口进行分账,利用分账完结进行资金解冻,实现抽佣和对二级商户的账期。
+ *
+ * @param combineH5PayParams the combine h 5 pay params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity h5Pay(CombineH5PayParams combineH5PayParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.COMBINE_MWEB, combineH5PayParams)
+ .function(this::combinePayFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Combine pay function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> combinePayFunction(WechatPayV3Type type, CombineH5PayParams params) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ params.setCombineAppid(v3.getAppId());
+ params.setCombineMchid(v3.getMchId());
+
+ String notifyUrl = v3.getDomain().concat(params.getNotifyUrl());
+ params.setNotifyUrl(notifyUrl);
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+ return Post(uri, params);
+ }
+
+ /**
+ * 合单下单-Native支付API.
+ *
+ * 使用合单支付接口,用户只输入一次密码,即可完成多个订单的支付。目前最多一次可支持50笔订单进行合单支付。
+ *
+ * 注意:
+ * • 订单如果需要进行抽佣等,需要在合单中指定需要进行分账(profit_sharing为true);指定后,交易资金进入二级商户账户,处于冻结状态,可在后续使用分账接口进行分账,利用分账完结进行资金解冻,实现抽佣和对二级商户的账期。
+ *
+ * @param combinePayParams the combine pay params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity nativePay(CombinePayParams combinePayParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.COMBINE_NATIVE, combinePayParams)
+ .function(this::combinePayFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 合单查询订单API.
+ *
+ * @param combineOutTradeNo the combine out trade no
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryTransactionByOutTradeNo(String combineOutTradeNo) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.COMBINE_TRANSACTION_OUT_TRADE_NO, combineOutTradeNo)
+ .function((wechatPayV3Type, outTradeNo) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(outTradeNo)
+ .toUri();
+ return Get(uri);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 合单关闭订单API.
+ *
+ * 合单支付订单只能使用此合单关单api完成关单。
+ *
+ * 微信服务器返回 204。
+ *
+ * @param combineCloseParams the combine close params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity close(CombineCloseParams combineCloseParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.COMBINE_CLOSE, combineCloseParams)
+ .function((wechatPayV3Type, params) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build().toUri();
+ return Post(uri, params);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatDirectPayApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatDirectPayApi.java
new file mode 100644
index 0000000..101264c
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatDirectPayApi.java
@@ -0,0 +1,197 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import cn.felord.payment.wechat.enumeration.WeChatServer;
+import cn.felord.payment.wechat.WechatPayProperties;
+import cn.felord.payment.wechat.enumeration.WechatPayV3Type;
+import cn.felord.payment.wechat.v3.model.PayParams;
+import cn.felord.payment.wechat.v3.model.TransactionQueryParams;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.springframework.http.RequestEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+
+/**
+ * 普通支付-直连模式.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class WechatDirectPayApi extends AbstractApi {
+
+ /**
+ * Instantiates a new Wechat pay api.
+ *
+ * @param wechatPayClient the wechat pay client
+ * @param tenantId the tenant id
+ */
+ public WechatDirectPayApi(WechatPayClient wechatPayClient, String tenantId) {
+ super(wechatPayClient, tenantId);
+ }
+
+ /**
+ * APP下单API
+ *
+ * @param payParams the pay params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity appPay(PayParams payParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.APP, payParams)
+ .function(this::payFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * JSAPI/小程序下单API
+ *
+ * @param payParams the pay params
+ * @return wechat response entity
+ */
+ public WechatResponseEntity jsPay(PayParams payParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.JSAPI, payParams)
+ .function(this::payFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Native下单API
+ *
+ * @param payParams the pay params
+ * @return wechat response entity
+ */
+ public WechatResponseEntity nativePay(PayParams payParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.NATIVE, payParams)
+ .function(this::payFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * H5下单API
+ *
+ * @param payParams the pay params
+ * @return wechat response entity
+ */
+ public WechatResponseEntity h5Pay(PayParams payParams) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MWEB, payParams)
+ .function(this::payFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ private RequestEntity> payFunction(WechatPayV3Type type, PayParams payParams) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ payParams.setAppid(v3.getAppId());
+ payParams.setMchid(v3.getMchId());
+ String notifyUrl = v3.getDomain().concat(payParams.getNotifyUrl());
+ payParams.setNotifyUrl(notifyUrl);
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+ return Post(uri, payParams);
+ }
+
+ /**
+ * 微信支付订单号查询API
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryTransactionById(TransactionQueryParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.TRANSACTION_TRANSACTION_ID, params)
+ .function(this::queryTransactionFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 商户订单号查询API
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryTransactionByOutTradeNo(TransactionQueryParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.TRANSACTION_OUT_TRADE_NO, params)
+ .function(this::queryTransactionFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ private RequestEntity> queryTransactionFunction(WechatPayV3Type type, TransactionQueryParams params) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("mchid", v3.getMchId());
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build()
+ .expand(params.getTransactionIdOrOutTradeNo())
+ .toUri();
+ return Get(uri);
+ }
+
+ /**
+ * 关单API
+ *
+ * @param outTradeNo the out trade no
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity close(String outTradeNo) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.CLOSE, outTradeNo)
+ .function(this::closeByOutTradeNoFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ private RequestEntity> closeByOutTradeNoFunction(WechatPayV3Type type, String outTradeNo) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("mchid", v3.getMchId());
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build()
+ .expand(outTradeNo)
+ .toUri();
+ return Post(uri, queryParams);
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatDiscountCardApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatDiscountCardApi.java
new file mode 100644
index 0000000..96a4a8d
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatDiscountCardApi.java
@@ -0,0 +1,120 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import cn.felord.payment.wechat.WechatPayProperties;
+import cn.felord.payment.wechat.enumeration.WeChatServer;
+import cn.felord.payment.wechat.enumeration.WechatPayV3Type;
+import cn.felord.payment.wechat.v3.model.discountcard.DiscountCardPreRequestParams;
+import cn.felord.payment.wechat.v3.model.discountcard.UserRecordsParams;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+
+/**
+ * 微信支付先享卡.
+ *
+ * @author felord.cn
+ * @since 1.0.2.RELEASE
+ */
+public class WechatDiscountCardApi extends AbstractApi {
+ /**
+ * Instantiates a new Abstract api.
+ *
+ * @param wechatPayClient the wechat pay client
+ * @param tenantId the tenant id
+ */
+ public WechatDiscountCardApi(WechatPayClient wechatPayClient, String tenantId) {
+ super(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 预受理领卡请求API
+ *
+ * 商户在引导用户跳转先享卡领卡前,需要请求先享卡预受理领卡请求接口,再根据返回数据引导用户跳转领卡。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity preRequest(DiscountCardPreRequestParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.DISCOUNT_CARD_PRE_REQUEST, params)
+ .function((wechatPayV3Type, requestParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ requestParams.setAppid(v3.getAppId());
+ requestParams.setNotifyUrl(v3.getDomain().concat(requestParams.getNotifyUrl()));
+ return Post(uri, requestParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 增加用户记录API
+ *
+ * 当用户在商户侧消费时,用户完成了微信先享卡的目标或者获取使用优惠时,商户需要把这个信息同步给微信先享卡平台,用于在微信先享卡小程序展示及先享卡到期后的用户结算。
+ *
+ * @param params the params
+ * @return 返回http状态码 204 处理成功,应答无内容
+ */
+ public WechatResponseEntity addUserRecords(UserRecordsParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.DISCOUNT_CARD_ADD_USER_RECORDS, params)
+ .function((wechatPayV3Type, recordsParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(recordsParams.getOutCardCode())
+ .toUri();
+ recordsParams.setOutCardCode(null);
+ return Post(uri, recordsParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 查询先享卡订单API
+ *
+ * 商户可以通过商户领卡号查询指定的先享卡,可用于对账或者界面展示。
+ *
+ * @param outCardCode 商户领卡号
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity addUserRecords(String outCardCode) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.DISCOUNT_CARD_INFO, outCardCode)
+ .function((wechatPayV3Type, cardCode) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(cardCode)
+ .toUri();
+ return Get(uri);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMarketingFavorApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMarketingFavorApi.java
new file mode 100644
index 0000000..2209320
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMarketingFavorApi.java
@@ -0,0 +1,637 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.v3;
+
+import cn.felord.payment.wechat.WechatPayProperties;
+import cn.felord.payment.wechat.enumeration.StockStatus;
+import cn.felord.payment.wechat.enumeration.WeChatServer;
+import cn.felord.payment.wechat.enumeration.WechatPayV3Type;
+import cn.felord.payment.wechat.v3.model.*;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import lombok.SneakyThrows;
+import org.bouncycastle.jcajce.provider.digest.SHA256;
+import org.bouncycastle.util.encoders.Hex;
+import org.springframework.http.MediaType;
+import org.springframework.http.RequestEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Consumer;
+
+/**
+ * 微信支付营销代金券API
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class WechatMarketingFavorApi extends AbstractApi {
+
+
+ /**
+ * Instantiates a new Wechat marketing favor api.
+ *
+ * @param wechatPayClient the wechat pay client
+ * @param tenantId the tenant id
+ */
+ public WechatMarketingFavorApi(WechatPayClient wechatPayClient, String tenantId) {
+ super(wechatPayClient, tenantId);
+ }
+
+
+ /**
+ * 创建代金券批次API
+ *
+ * 通过调用此接口可创建代金券批次,包括 预充值 和 免充值 类型。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity createStock(StocksCreateParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_COUPON_STOCKS, params)
+ .function(this::createStocksFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Create stocks function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> createStocksFunction(WechatPayV3Type type, StocksCreateParams params) {
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ String mchId = v3.getMchId();
+ params.setBelongMerchant(mchId);
+ return Post(uri, params);
+ }
+
+ /**
+ * 激活代金券批次API
+ *
+ * 制券成功后,通过调用此接口激活批次,如果是预充值代金券,激活时会从商户账户余额中锁定本批次的营销资金。
+ *
+ * @param stockId the stock id
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity startStock(String stockId) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_START, stockId)
+ .function(this::startAndRestartAndPauseStockFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+
+ /**
+ * 发放代金券API
+ *
+ * 商户侧开发时建议增加发放流水记录。
+ *
+ * 微信支付文档所要求的微信公众号服务号不是必须的,只要你有一个绑定了微信支付商户平台和开放平台的appid即可。
+ *
+ * 流程为:
+ * 1. appid 请求授权微信登录。
+ * 2. 登录成功后,开发者在商户侧保存用户 对应此appid的openid 。
+ * 3. 通过 appid - openid 进行发券。
+ *
+ * 商户平台/API完成制券后,可使用发放代金券接口发券。通过调用此接口可发放指定批次给指定用户,发券场景可以是小程序、H5、APP等。
+ *
+ * 注意:
+ * • 商户可在H5活动页面、商户小程序、商户APP等自有场景内调用该接口完成发券,商户默认只允许发放本商户号(调用发券接口的商户号)创建的代金券,如需发放其他商户商户创建的代金券,请参考常见问题Q1。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity sendStock(StocksSendParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_USERS_COUPONS, params)
+ .function(this::sendStocksFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+
+ /**
+ * Send stocks function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> sendStocksFunction(WechatPayV3Type type, StocksSendParams params) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ params.setAppid(v3.getAppId());
+ params.setStockCreatorMchid(v3.getMchId());
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(params.getOpenid())
+ .toUri();
+ params.setOpenid(null);
+ return Post(uri, params);
+ }
+
+ /**
+ * 暂停代金券批次API
+ *
+ * 通过此接口可暂停指定代金券批次。暂停后,该代金券批次暂停发放,用户无法通过任何渠道再领取该批次的券。
+ *
+ * @param stockId the stock id
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity pauseStock(String stockId) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_PAUSE, stockId)
+ .function(this::startAndRestartAndPauseStockFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 重启代金券批次API
+ *
+ * 通过此接口可重启指定代金券批次。重启后,该代金券批次可以再次发放。
+ *
+ * @param stockId the stock id
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity restartStock(String stockId) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_RESTART, stockId)
+ .function(this::startAndRestartAndPauseStockFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Start and restart and pause stock function request entity.
+ *
+ * @param type the type
+ * @param stockId the stock id
+ * @return the request entity
+ */
+ private RequestEntity> startAndRestartAndPauseStockFunction(WechatPayV3Type type, String stockId) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ String mchId = v3.getMchId();
+ Map body = new HashMap<>(1);
+ body.put("stock_creator_mchid", mchId);
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(stockId)
+ .toUri();
+ return Post(uri, body);
+ }
+
+ /**
+ * 条件查询批次列表API
+ *
+ * 通过此接口可查询多个批次的信息,包括批次的配置信息以及批次概况数据。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryStocksByMch(StocksQueryParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS, params)
+ .function(this::queryStocksByMchFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Query stocks function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> queryStocksByMchFunction(WechatPayV3Type type, StocksQueryParams params) {
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("offset", String.valueOf(params.getOffset()));
+ queryParams.add("limit", String.valueOf(params.getLimit()));
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ queryParams.add("stock_creator_mchid", v3.getMchId());
+ OffsetDateTime createStartTime = params.getCreateStartTime();
+ if (Objects.nonNull(createStartTime)) {
+ //rfc 3339 YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE
+ queryParams.add("create_start_time", createStartTime
+ .format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
+ }
+ OffsetDateTime createEndTime = params.getCreateEndTime();
+ if (Objects.nonNull(createEndTime)) {
+ //rfc 3339 YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE
+ queryParams.add("create_end_time", createEndTime
+ .format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
+ }
+ StockStatus status = params.getStatus();
+ if (Objects.nonNull(status)) {
+ queryParams.add("status", status.value());
+ }
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build().toUri();
+ return Get(uri);
+ }
+
+
+ /**
+ * 查询批次详情API
+ *
+ * 通过此接口可查询批次信息,包括批次的配置信息以及批次概况数据。
+ *
+ * @param stockId the stock id
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryStockDetail(String stockId) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_DETAIL, stockId)
+ .function(this::stockDetailFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+
+ /**
+ * Stock detail function request entity.
+ *
+ * @param type the type
+ * @param stockId the stock id
+ * @return the request entity
+ */
+ private RequestEntity> stockDetailFunction(WechatPayV3Type type, String stockId) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("stock_creator_mchid", v3.getMchId());
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build()
+ .expand(stockId)
+ .toUri();
+ return Get(uri);
+
+ }
+
+ /**
+ * 查询代金券详情API
+ *
+ * 通过此接口可查询代金券信息,包括代金券的基础信息、状态。如代金券已核销,会包括代金券核销的订单信息(订单号、单品信息等)。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryCouponDetails(CouponDetailsQueryParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_USERS_COUPONS_DETAIL, params)
+ .function(this::couponDetailFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+
+ /**
+ * Coupon detail function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> couponDetailFunction(WechatPayV3Type type, CouponDetailsQueryParams params) {
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("appid", v3.getAppId());
+
+ MultiValueMap pathParams = new LinkedMultiValueMap<>();
+ pathParams.add("openid", params.getOpenId());
+ pathParams.add("coupon_id", params.getCouponId());
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build()
+ .expand(pathParams)
+ .toUri();
+ return Get(uri);
+
+ }
+
+ /**
+ * 查询代金券可用商户API
+ *
+ * 通过调用此接口可查询批次的可用商户号,判断券是否在某商户号可用,来决定是否展示。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryMerchantsByStockId(MchQueryParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_MERCHANTS, params)
+ .function(this::queryMerchantsByStockIdFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Query stocks function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> queryMerchantsByStockIdFunction(WechatPayV3Type type, MchQueryParams params) {
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("offset", String.valueOf(params.getOffset()));
+ queryParams.add("limit", String.valueOf(params.getLimit()));
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ queryParams.add("stock_creator_mchid", v3.getMchId());
+ String stockId = params.getStockId();
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build()
+ .expand(stockId)
+ .toUri();
+ return Get(uri);
+ }
+
+ /**
+ * 查询代金券可用单品API
+ *
+ * 通过此接口可查询批次的可用商品编码,判断券是否可用于某些商品,来决定是否展示。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryStockItems(MchQueryParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_ITEMS, params)
+ .function(this::queryMerchantsByStockIdFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 根据商户号查用户的券API
+ *
+ * 可通过该接口查询用户在某商户号可用的全部券,可用于商户的小程序/H5中,用户"我的代金券"或"提交订单页"展示优惠信息。无法查询到微信支付立减金。本接口查不到用户的微信支付立减金(又称“全平台通用券”),即在所有商户都可以使用的券,例如:摇摇乐红包;当按可用商户号查询时,无法查询用户已经核销的券
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryUserCouponsByMchId(UserCouponsQueryParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_USERS_COUPONS, params)
+ .function(this::queryUserCouponsFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Query user coupons function request entity.
+ *
+ * @param type the type
+ * @param params the params
+ * @return the request entity
+ */
+ private RequestEntity> queryUserCouponsFunction(WechatPayV3Type type, UserCouponsQueryParams params) {
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("appid", v3.getAppId());
+ queryParams.add("creator_mchid", v3.getMchId());
+ String senderMchId = params.getSenderMchId();
+ if (StringUtils.hasText(senderMchId)) {
+ queryParams.add("sender_mchid", senderMchId);
+ }
+ String availableMchId = params.getAvailableMchId();
+ if (StringUtils.hasText(availableMchId)) {
+ queryParams.add("available_mchid", availableMchId);
+ } else {
+ String offset = Objects.isNull(params.getOffset()) ? null : params.getOffset().toString();
+ queryParams.add("offset", offset);
+ String limit = Objects.isNull(params.getLimit()) ? null : params.getLimit().toString();
+ queryParams.add("limit", limit);
+ String status = Objects.nonNull(params.getStatus()) ? params.getStatus().name() : null;
+ queryParams.add("status", status);
+ String stockId = params.getStockId();
+ if (StringUtils.hasText(stockId)) {
+ queryParams.add("stock_id", stockId);
+ }
+ }
+
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build()
+ .expand(params.getOpenId())
+ .toUri();
+ return Get(uri);
+
+ }
+
+ /**
+ * 下载批次核销明细API
+ *
+ * 数据结果包含在响应体的 csv 字段中
+ *
+ * 可获取到某批次的核销明细数据,包括订单号、单品信息、银行流水号等,用于对账/数据分析。
+ *
+ * @param stockId the stock id
+ * @return the wechat response entity
+ * @see AbstractApi#billDownload(String) 对账单下载api
+ */
+ public WechatResponseEntity downloadStockUseFlow(String stockId) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_USE_FLOW, stockId)
+ .function(this::downloadFlowFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ String csv = this.billDownload(wechatResponseEntity.getBody().get("url").asText());
+ wechatResponseEntity.getBody().put("csv", csv);
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 下载批次退款明细API
+ *
+ * 数据结果包含在响应体的 csv 字段中
+ *
+ * 可获取到某批次的退款明细数据,包括订单号、单品信息、银行流水号等,用于对账/数据分析。
+ *
+ * @param stockId the stock id
+ * @return the wechat response entity
+ * @see AbstractApi#billDownload(String) 对账单下载api
+ */
+ public WechatResponseEntity downloadStockRefundFlow(String stockId) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_STOCKS_REFUND_FLOW, stockId)
+ .function(this::downloadFlowFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ String csv = this.billDownload(wechatResponseEntity.getBody().get("url").asText());
+ wechatResponseEntity.getBody().put("csv", csv);
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Download flow function request entity.
+ *
+ * @param type the type
+ * @param stockId the stock id
+ * @return the request entity
+ */
+ private RequestEntity> downloadFlowFunction(WechatPayV3Type type, String stockId) {
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(stockId)
+ .toUri();
+ return Get(uri);
+ }
+
+ /**
+ * 营销图片上传API
+ *
+ * 媒体图片只支持JPG、BMP、PNG格式,文件大小不能超过2M。
+ *
+ * 通过本接口上传图片后可获得图片url地址。图片url可在微信支付营销相关的API使用,包括商家券、代金券、支付有礼等。
+ *
+ * @param file the file
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity marketingImageUpload(MultipartFile file) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_IMAGE_UPLOAD, file)
+ .function(this::marketingImageUploadFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+
+ /**
+ * Marketing image upload function request entity.
+ *
+ * @param type the type
+ * @param file the file
+ * @return the request entity
+ */
+ @SneakyThrows
+ private RequestEntity> marketingImageUploadFunction(WechatPayV3Type type, MultipartFile file) {
+
+ Map meta = new LinkedHashMap<>(2);
+
+ String originalFilename = file.getOriginalFilename();
+ String filename = StringUtils.hasText(originalFilename) ? originalFilename : file.getName();
+ meta.put("filename", filename);
+
+ byte[] digest = SHA256.Digest.getInstance("SHA-256").digest(file.getBytes());
+ meta.put("sha256", Hex.toHexString(digest));
+ MultiValueMap body = new LinkedMultiValueMap<>();
+ body.add("meta", meta);
+ body.add("file", file.getResource());
+ // 签名
+ String metaStr = this.getMapper().writeValueAsString(meta);
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+ return RequestEntity.post(uri)
+ .header("Content-Type", MediaType.MULTIPART_FORM_DATA_VALUE)
+ .header("Meta-Info", metaStr)
+ .header("Pay-TenantId", tenantId())
+ .body(body);
+ }
+
+ /**
+ * 代金券核销回调通知API。
+ *
+ * 设置核销回调通知的{@code notifyUrl},{@code notifyUrl}需要设置应用白名单。开发者应该对代金券的核销结果进行流水记录。
+ *
+ * @param notifyUrl the notify url
+ * @return the wechat response entity
+ * @see WechatPayCallback#couponCallback(ResponseSignVerifyParams, Consumer) 核销回调
+ */
+ public WechatResponseEntity setMarketingFavorCallback(String notifyUrl) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.MARKETING_FAVOR_CALLBACKS, notifyUrl)
+ .function(this::setMarketingFavorCallbackFunction)
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * Sets marketing favor callback function.
+ *
+ * @param type the type
+ * @param notifyUrl the notify url
+ * @return the marketing favor callback function
+ */
+ private RequestEntity> setMarketingFavorCallbackFunction(WechatPayV3Type type, String notifyUrl) {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ Map body = new HashMap<>(3);
+ body.put("mchid", v3.getMchId());
+ body.put("notify_url", notifyUrl);
+ body.put("switch", true);
+ URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+ return Post(uri, body);
+ }
+}
+
+
+
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaBean.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaBean.java
new file mode 100644
index 0000000..11dad68
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaBean.java
@@ -0,0 +1,52 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+
+import cn.felord.payment.wechat.WechatPayProperties;
+import lombok.Data;
+
+import java.security.KeyPair;
+
+/**
+ * 微信支付元数据Bean.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class WechatMetaBean {
+ /**
+ * The Key pair.
+ */
+ private KeyPair keyPair;
+ /**
+ * The Serial number.
+ */
+ private String serialNumber;
+ /**
+ * The Tenant id.
+ */
+ private String tenantId;
+ /**
+ * The V3.
+ */
+ private WechatPayProperties.V3 v3;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java
new file mode 100644
index 0000000..22f6b11
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java
@@ -0,0 +1,76 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+
+import java.util.*;
+
+/**
+ * 配置容器
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class WechatMetaContainer {
+ private final Map wechatMetaBeanMap = new HashMap<>();
+ private final Set tenantIds = new HashSet<>();
+
+
+ /**
+ * Add wechat meta boolean.
+ *
+ * @param tenantId the tenantId
+ * @param wechatMetaBean the wechat meta bean
+ * @return the boolean
+ */
+ public WechatMetaBean addWechatMeta(String tenantId, WechatMetaBean wechatMetaBean) {
+ tenantIds.add(tenantId);
+ return this.wechatMetaBeanMap.put(tenantId, wechatMetaBean);
+ }
+
+ /**
+ * Remove wechat meta wechat meta bean.
+ *
+ * @param tenantId the tenantId
+ * @return the wechat meta bean
+ */
+ public WechatMetaBean removeWechatMeta(String tenantId) {
+ tenantIds.remove(tenantId);
+ return this.wechatMetaBeanMap.remove(tenantId);
+ }
+
+ /**
+ * Gets wechat meta.
+ *
+ * @param tenantId the tenantId
+ * @return the wechat meta
+ */
+ public WechatMetaBean getWechatMeta(String tenantId) {
+ return Objects.requireNonNull(this.wechatMetaBeanMap.get(tenantId));
+ }
+
+ /**
+ * Gets properties keys.
+ *
+ * @return the properties keys
+ */
+ public Set getTenantIds() {
+ return tenantIds;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayCallback.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayCallback.java
new file mode 100644
index 0000000..9a0ae13
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayCallback.java
@@ -0,0 +1,381 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.v3;
+
+import cn.felord.payment.PayException;
+import cn.felord.payment.wechat.v3.model.CallbackParams;
+import cn.felord.payment.wechat.v3.model.CouponConsumeData;
+import cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams;
+import cn.felord.payment.wechat.v3.model.TransactionConsumeData;
+import cn.felord.payment.wechat.v3.model.combine.CombineTransactionConsumeData;
+import cn.felord.payment.wechat.v3.model.discountcard.*;
+import cn.felord.payment.wechat.v3.model.payscore.PayScoreConsumer;
+import cn.felord.payment.wechat.v3.model.payscore.PayScoreUserConfirmConsumeData;
+import cn.felord.payment.wechat.v3.model.payscore.PayScoreUserPaidConsumeData;
+import cn.felord.payment.wechat.v3.model.payscore.PayScoreUserPermissionConsumeData;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.Assert;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Consumer;
+
+/**
+ * 微信支付回调工具.
+ *
+ * 注意:开发者应该保证回调调用的幂等性
+ *
+ * 支付通知http应答码为200或204才会当作正常接收,当回调处理异常时,应答的HTTP状态码应为500,或者4xx。
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Slf4j
+public class WechatPayCallback {
+ /**
+ * The constant MAPPER.
+ */
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+ /**
+ * The Signature provider.
+ */
+ private final SignatureProvider signatureProvider;
+ /**
+ * The Tenant id.
+ */
+ private final String tenantId;
+
+ static {
+ MAPPER.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
+ MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ }
+
+ /**
+ * Instantiates a new Wechat pay callback.
+ *
+ * @param signatureProvider the signature provider
+ * @param tenantId the tenant id
+ */
+ public WechatPayCallback(SignatureProvider signatureProvider, String tenantId) {
+ this.signatureProvider = signatureProvider;
+ Assert.hasText(tenantId, "tenantId is required");
+ this.tenantId = tenantId;
+ }
+
+
+ /**
+ * 微信支付代金券核销回调.
+ *
+ * @param params the params
+ * @param consumeDataConsumer the consume data consumer
+ * @return the map
+ * @since 1.0.0.RELEASE
+ */
+ @SneakyThrows
+ public Map couponCallback(ResponseSignVerifyParams params, Consumer consumeDataConsumer) {
+ String data = this.callback(params, EventType.COUPON);
+ CouponConsumeData consumeData = MAPPER.readValue(data, CouponConsumeData.class);
+ consumeDataConsumer.accept(consumeData);
+ Map responseBody = new HashMap<>(2);
+ responseBody.put("code", 200);
+ responseBody.put("message", "SUCCESS");
+ return responseBody;
+
+ }
+
+ /**
+ * 微信支付成功回调.
+ *
+ * 无需开发者判断,只有扣款成功微信才会回调此接口
+ *
+ * @param params the params
+ * @param consumeDataConsumer the consume data consumer
+ * @return the map
+ * @since 1.0.0.RELEASE
+ */
+ @SneakyThrows
+ public Map transactionCallback(ResponseSignVerifyParams params, Consumer consumeDataConsumer) {
+ String data = this.callback(params, EventType.TRANSACTION);
+ TransactionConsumeData consumeData = MAPPER.readValue(data, TransactionConsumeData.class);
+ consumeDataConsumer.accept(consumeData);
+ return Collections.singletonMap("code", "SUCCESS");
+
+ }
+
+ /**
+ * 微信合单支付成功回调.
+ *
+ * 无需开发者判断,只有扣款成功微信才会回调此接口
+ *
+ * @param params the params
+ * @param consumeDataConsumer the consume data consumer
+ * @return the map
+ * @since 1.0.0.RELEASE
+ */
+ @SneakyThrows
+ public Map combineTransactionCallback(ResponseSignVerifyParams params, Consumer consumeDataConsumer) {
+ String data = this.callback(params, EventType.TRANSACTION);
+ CombineTransactionConsumeData consumeData = MAPPER.readValue(data, CombineTransactionConsumeData.class);
+ consumeDataConsumer.accept(consumeData);
+ return Collections.singletonMap("code", "SUCCESS");
+
+ }
+
+ /**
+ * 微信支付分确认订单、支付成功回调通知.
+ *
+ * 该链接是通过商户 创建支付分订单 提交notify_url参数,必须为https协议。如果链接无法访问,商户将无法接收到微信通知。 通知url必须为直接可访问的url,不能携带参数。示例: “https://pay.weixin.qq.com/wxpay/pay.action”
+ *
+ * @param params the params
+ * @param payScoreConsumer the pay score consumer
+ * @return the map
+ * @since 1.0.2.RELEASE
+ */
+ @SneakyThrows
+ public Map payscoreUserOrderCallback(ResponseSignVerifyParams params, PayScoreConsumer payScoreConsumer) {
+ CallbackParams callbackParams = resolve(params);
+ String eventType = callbackParams.getEventType();
+
+ if (Objects.equals(eventType, EventType.PAYSCORE_USER_CONFIRM.event)) {
+ String data = this.decrypt(callbackParams);
+ PayScoreUserConfirmConsumeData confirmConsumeData = MAPPER.readValue(data, PayScoreUserConfirmConsumeData.class);
+ payScoreConsumer.getConfirmConsumeDataConsumer().accept(confirmConsumeData);
+ } else if (Objects.equals(eventType, EventType.PAYSCORE_USER_PAID.event)) {
+ String data = this.decrypt(callbackParams);
+ PayScoreUserPaidConsumeData paidConsumeData = MAPPER.readValue(data, PayScoreUserPaidConsumeData.class);
+ payScoreConsumer.getPaidConsumeDataConsumer().accept(paidConsumeData);
+ } else {
+ log.error("wechat pay event type is not matched, callbackParams {}", callbackParams);
+ throw new PayException(" wechat pay event type is not matched");
+ }
+
+ return Collections.singletonMap("code", "SUCCESS");
+ }
+
+ /**
+ * 授权/解除授权服务回调通知API.
+ *
+ * 微信支付分通过授权/解除授权服务通知接口将用户过授权/解除授权服务消息通知给商户
+ *
+ * 普通授权模式是通过[商户入驻配置申请表]提交service_notify_url设置,预授权模式是通过[商户预授权]提交的notify_url设置,必须为https协议。如果链接无法访问,商户将无法接收到微信通知。 通知url必须为直接可访问的url,不能携带参数。示例: “https://pay.weixin.qq.com/wxpay/pay.action”
+ *
+ * @param params the params
+ * @param consumeDataConsumer the consume data consumer
+ * @return the map
+ */
+ @SneakyThrows
+ public Map permissionCallback(ResponseSignVerifyParams params, Consumer consumeDataConsumer) {
+ CallbackParams callbackParams = resolve(params);
+ String eventType = callbackParams.getEventType();
+ boolean closed;
+ if (Objects.equals(eventType, EventType.PAYSCORE_USER_OPEN.event)) {
+ closed = false;
+ } else if (Objects.equals(eventType, EventType.PAYSCORE_USER_CLOSE.event)) {
+ closed = true;
+ } else {
+ log.error("wechat pay event type is not matched, callbackParams {}", callbackParams);
+ throw new PayException(" wechat pay event type is not matched");
+ }
+ String data = this.decrypt(callbackParams);
+ PayScoreUserPermissionConsumeData consumeData = MAPPER.readValue(data, PayScoreUserPermissionConsumeData.class);
+ consumeData.setClosed(closed);
+ consumeDataConsumer.accept(consumeData);
+ return Collections.singletonMap("code", "SUCCESS");
+ }
+
+ /**
+ * 用户领卡、守约状态变化、扣费状态变化通知API
+ *
+ * 用户领取优惠卡后或者用户守约状态发生变更后或扣费状态变化后,微信会把对应信息发送给商户。
+ *
+ * 该链接是通过商户预受理领卡请求 中提交notify_url参数,必须为https协议。如果链接无法访问,商户将无法接收到微信通知。 通知url必须为直接可访问的url,不能携带参数。示例: “https://pay.weixin.qq.com/wxpay/pay.action”
+ *
+ * @param params the params
+ * @param discountCardConsumer the discount card consumer
+ * @return the map
+ */
+ @SneakyThrows
+ public Map discountCardCallback(ResponseSignVerifyParams params, DiscountCardConsumer discountCardConsumer) {
+
+ CallbackParams callbackParams = resolve(params);
+ String eventType = callbackParams.getEventType();
+
+ if (Objects.equals(eventType, EventType.DISCOUNT_CARD_AGREEMENT_ENDED.event)) {
+ String data = this.decrypt(callbackParams);
+ DiscountCardAgreementEndConsumeData agreementEndConsumeData = MAPPER.readValue(data, DiscountCardAgreementEndConsumeData.class);
+ discountCardConsumer.getAgreementEndConsumeDataConsumer().accept(agreementEndConsumeData);
+ } else if (Objects.equals(eventType, EventType.DISCOUNT_CARD_USER_ACCEPTED.event)) {
+ String data = this.decrypt(callbackParams);
+ DiscountCardAcceptedConsumeData acceptedConsumeData = MAPPER.readValue(data, DiscountCardAcceptedConsumeData.class);
+ discountCardConsumer.getAcceptedConsumeDataConsumer().accept(acceptedConsumeData);
+ } else if (Objects.equals(eventType, EventType.DISCOUNT_CARD_USER_PAID.event)) {
+ String data = this.decrypt(callbackParams);
+ DiscountCardUserPaidConsumeData paidConsumeData = MAPPER.readValue(data, DiscountCardUserPaidConsumeData.class);
+ discountCardConsumer.getCardUserPaidConsumeDataConsumer().accept(paidConsumeData);
+ } else {
+ log.error("wechat pay event type is not matched, callbackParams {}", callbackParams);
+ throw new PayException(" wechat pay event type is not matched");
+ }
+ return Collections.singletonMap("code", "SUCCESS");
+ }
+
+
+ /**
+ * Callback.
+ *
+ * @param params the params
+ * @param eventType the event type
+ * @return the string
+ */
+ @SneakyThrows
+ private String callback(ResponseSignVerifyParams params, EventType eventType) {
+ CallbackParams callbackParams = this.resolve(params);
+
+ if (!Objects.equals(callbackParams.getEventType(), eventType.event)) {
+ log.error("wechat pay event type is not matched, callbackParams {}", callbackParams);
+ throw new PayException(" wechat pay event type is not matched");
+ }
+ return this.decrypt(callbackParams);
+ }
+
+ /**
+ * Resolve callback params.
+ *
+ * @param params the params
+ * @return the callback params
+ * @throws JsonProcessingException the json processing exception
+ * @since 1.0.2.RELEASE
+ */
+ private CallbackParams resolve(ResponseSignVerifyParams params) throws JsonProcessingException {
+ if (signatureProvider.responseSignVerify(params)) {
+ return MAPPER.readValue(params.getBody(), CallbackParams.class);
+ }
+ throw new PayException("invalid wechat pay callback");
+ }
+
+ /**
+ * Decrypt.
+ *
+ * @param callbackParams the callback params
+ * @return the string
+ * @since 1.0.2.RELEASE
+ */
+ private String decrypt(CallbackParams callbackParams) {
+ CallbackParams.Resource resource = callbackParams.getResource();
+ String associatedData = resource.getAssociatedData();
+ String nonce = resource.getNonce();
+ String ciphertext = resource.getCiphertext();
+ String data = signatureProvider.decryptResponseBody(tenantId, associatedData, nonce, ciphertext);
+ Assert.hasText(data, "decryptData is required");
+ return data;
+ }
+
+
+ /**
+ * 事件类型用于处理回调.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+ enum EventType {
+
+ /**
+ * 微信支付分确认订单事件.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAYSCORE_USER_CONFIRM("PAYSCORE.USER_CONFIRM"),
+
+ /**
+ * 微信支付分用户支付成功订单事件.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAYSCORE_USER_PAID("PAYSCORE.USER_PAID"),
+
+ /**
+ * 微信支付分授权事件.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAYSCORE_USER_OPEN("PAYSCORE.USER_OPEN_SERVICE"),
+
+ /**
+ * 微信支付分解除授权事件.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ PAYSCORE_USER_CLOSE("PAYSCORE.USER_CLOSE_SERVICE"),
+
+ /**
+ * 用户领取微信先享卡事件.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ DISCOUNT_CARD_USER_ACCEPTED("DISCOUNT_CARD.USER_ACCEPTED"),
+
+ /**
+ * 微信先享卡守约状态变化事件.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ DISCOUNT_CARD_AGREEMENT_ENDED("DISCOUNT_CARD.AGREEMENT_ENDED"),
+
+ /**
+ * 微信先享卡扣费状态变化事件.
+ *
+ * @since 1.0.2.RELEASE
+ */
+ DISCOUNT_CARD_USER_PAID("DISCOUNT_CARD.USER_PAID"),
+
+ /**
+ * 优惠券核销事件.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ COUPON("COUPON.USE"),
+ /**
+ * 支付成功事件.
+ *
+ * @since 1.0.0.RELEASE
+ */
+ TRANSACTION("TRANSACTION.SUCCESS");
+
+ /**
+ * The Event.
+ */
+ private final String event;
+
+ /**
+ * Instantiates a new Event type.
+ *
+ * @param event the event
+ */
+ EventType(String event) {
+ this.event = event;
+ }
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayClient.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayClient.java
new file mode 100644
index 0000000..e2011f0
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayClient.java
@@ -0,0 +1,314 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+
+import cn.felord.payment.PayException;
+import cn.felord.payment.wechat.WechatPayResponseErrorHandler;
+import cn.felord.payment.wechat.enumeration.WechatPayV3Type;
+import cn.felord.payment.wechat.v3.model.ResponseSignVerifyParams;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.springframework.http.*;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
+import org.springframework.util.Assert;
+import org.springframework.web.client.DefaultResponseErrorHandler;
+import org.springframework.web.client.RestOperations;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponents;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.function.BiFunction;
+import java.util.function.Consumer;
+
+/**
+ * The type Wechat pay client.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+public class WechatPayClient {
+ /**
+ * The Signature provider.
+ */
+ private final SignatureProvider signatureProvider;
+ /**
+ * The Rest operations.
+ */
+ private RestOperations restOperations;
+
+ /**
+ * Instantiates a new Wechat pay service.
+ *
+ * @param signatureProvider the signature provider
+ */
+ public WechatPayClient(SignatureProvider signatureProvider) {
+ this.signatureProvider = signatureProvider;
+ applyDefaultRestTemplate();
+ }
+
+
+ /**
+ * 构造 {@link WechatRequestEntity}.
+ *
+ * @param the type parameter
+ * @param wechatPayV3Type the v 3 pay type
+ * @param m the m
+ * @return the executor
+ */
+ public Executor withType(WechatPayV3Type wechatPayV3Type, M m) {
+ return new Executor<>(wechatPayV3Type, m, this.signatureProvider, this.restOperations);
+ }
+
+
+ /**
+ * The type Executor.
+ *
+ * @param the type parameter
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+ public static class Executor {
+ /**
+ * The V3 pay type.
+ */
+ private final WechatPayV3Type wechatPayV3Type;
+ /**
+ * The Rest operations.
+ */
+ private final RestOperations restOperations;
+ /**
+ * The Signature provider.
+ */
+ private final SignatureProvider signatureProvider;
+ /**
+ * The Model.
+ */
+ private final M model;
+
+ /**
+ * The Request entity bi function.
+ */
+ private BiFunction> requestEntityBiFunction;
+
+ /**
+ * The Response body consumer.
+ */
+ private Consumer> responseBodyConsumer;
+
+ /**
+ * Instantiates a new Executor.
+ *
+ * @param wechatPayV3Type the v 3 pay type
+ * @param model the model
+ * @param signatureProvider the signature provider
+ * @param restOperations the rest operations
+ */
+ Executor(WechatPayV3Type wechatPayV3Type,
+ M model,
+ SignatureProvider signatureProvider, RestOperations restOperations) {
+ this.wechatPayV3Type = wechatPayV3Type;
+ this.model = model;
+ this.signatureProvider = signatureProvider;
+ this.restOperations = restOperations;
+ }
+
+ /**
+ * Function executor.
+ *
+ * @param requestEntityBiFunction the request entity bifunction
+ * @return the executor
+ */
+ public Executor function(BiFunction> requestEntityBiFunction) {
+ this.requestEntityBiFunction = requestEntityBiFunction;
+ return this;
+ }
+
+ /**
+ * Consumer executor.
+ *
+ * @param responseBodyConsumer the response body consumer
+ * @return the executor
+ */
+ public Executor consumer(Consumer> responseBodyConsumer) {
+ this.responseBodyConsumer = responseBodyConsumer;
+ return this;
+ }
+
+
+ /**
+ * Request.
+ */
+ public void request() {
+ RequestEntity> requestEntity = this.requestEntityBiFunction.apply(this.wechatPayV3Type, this.model);
+ WechatRequestEntity> wechatRequestEntity = WechatRequestEntity.of(requestEntity, this.responseBodyConsumer);
+ this.doExecute(this.header(wechatRequestEntity));
+ }
+
+
+ /**
+ * Download string.
+ *
+ * @return the string
+ */
+ public String download() {
+ RequestEntity> requestEntity = this.requestEntityBiFunction.apply(this.wechatPayV3Type, this.model);
+ WechatRequestEntity> wechatRequestEntity = WechatRequestEntity.of(requestEntity, this.responseBodyConsumer);
+ return this.doDownload(this.header(wechatRequestEntity));
+ }
+
+
+ /**
+ * 构造私钥签名.
+ *
+ * @param the type parameter
+ * @param requestEntity the request entity
+ * @return the wechat request entity
+ */
+ private WechatRequestEntity header(WechatRequestEntity requestEntity) {
+
+ UriComponents uri = UriComponentsBuilder.fromUri(requestEntity.getUrl()).build();
+ String canonicalUrl = uri.getPath();
+ String encodedQuery = uri.getQuery();
+ Assert.notNull(canonicalUrl, "canonicalUrl is required");
+ if (encodedQuery != null) {
+ canonicalUrl += "?" + encodedQuery;
+ }
+ // 签名
+ HttpMethod httpMethod = requestEntity.getMethod();
+
+ Assert.notNull(httpMethod, "httpMethod is required");
+ HttpHeaders headers = requestEntity.getHeaders();
+
+ String body = requestEntity.hasBody() ? Objects.requireNonNull(requestEntity.getBody()).toString() : "";
+ if (WechatPayV3Type.MARKETING_IMAGE_UPLOAD.pattern().contains(canonicalUrl)) {
+ body = Objects.requireNonNull(headers.get("Meta-Info")).get(0);
+ }
+
+ String tenantId = Objects.requireNonNull(headers.get("Pay-TenantId")).get(0);
+ String authorization = signatureProvider.requestSign(tenantId, httpMethod.name(), canonicalUrl, body);
+
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.addAll(headers);
+ httpHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+ // for upload
+ if (Objects.isNull(httpHeaders.getContentType())) {
+ httpHeaders.setContentType(MediaType.APPLICATION_JSON);
+ }
+ httpHeaders.add("Authorization", authorization);
+ httpHeaders.add("User-Agent", "X-Pay-Service");
+ httpHeaders.remove("Meta-Info");
+ httpHeaders.remove("Pay-TenantId");
+ return requestEntity.headers(httpHeaders);
+
+ }
+
+
+ /**
+ * Do execute.
+ *
+ * @param the type parameter
+ * @param requestEntity the request entity
+ */
+ private void doExecute(WechatRequestEntity requestEntity) {
+
+ ResponseEntity responseEntity = restOperations.exchange(requestEntity, ObjectNode.class);
+ HttpHeaders headers = responseEntity.getHeaders();
+ ObjectNode body = responseEntity.getBody();
+ HttpStatus statusCode = responseEntity.getStatusCode();
+ // 微信请求id
+ String requestId = headers.getFirst("Request-ID");
+ if (!statusCode.is2xxSuccessful()) {
+ throw new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + body);
+ }
+
+ ResponseSignVerifyParams params = new ResponseSignVerifyParams();
+ // 微信平台证书序列号 用来取微信平台证书
+ params.setWechatpaySerial(headers.getFirst("Wechatpay-Serial"));
+ //获取应答签名
+ params.setWechatpaySignature(headers.getFirst("Wechatpay-Signature"));
+ //构造验签名串
+ params.setWechatpayTimestamp(headers.getFirst("Wechatpay-Timestamp"));
+ params.setWechatpayNonce(headers.getFirst("Wechatpay-Nonce"));
+
+ String content = Objects.isNull(body) ? "" : body.toString();
+ params.setBody(content);
+
+ // 验证微信服务器签名
+ if (signatureProvider.responseSignVerify(params)) {
+ Consumer> responseConsumer = requestEntity.getResponseBodyConsumer();
+ if (Objects.nonNull(responseConsumer)) {
+ // 验证通过消费
+ responseConsumer.accept(responseEntity);
+ }
+ } else {
+ throw new PayException("wechat pay signature failed, Request-ID " + requestId);
+ }
+ }
+
+ /**
+ * Do download string.
+ *
+ * @param the type parameter
+ * @param requestEntity the request entity
+ * @return the string
+ */
+ private String doDownload(WechatRequestEntity requestEntity) {
+
+ ResponseEntity responseEntity = restOperations.exchange(requestEntity, String.class);
+
+ HttpStatus statusCode = responseEntity.getStatusCode();
+ // 微信请求id
+ String requestId = requestEntity.getHeaders().getFirst("Request-ID");
+ if (!statusCode.is2xxSuccessful()) {
+ throw new PayException("wechat pay server error, Request-ID " + requestId + " , statusCode " + statusCode + ",result : " + responseEntity);
+ }
+ return Optional.ofNullable(responseEntity.getBody()).orElse("");
+ }
+
+ }
+
+ /**
+ * Signature provider signature provider.
+ *
+ * @return the signature provider
+ */
+ public SignatureProvider signatureProvider() {
+ return signatureProvider;
+ }
+
+ /**
+ * Apply default rest template.
+ */
+ private void applyDefaultRestTemplate() {
+ RestTemplate restTemplate = new RestTemplate();
+ DefaultResponseErrorHandler errorHandler = new WechatPayResponseErrorHandler();
+ restTemplate.setErrorHandler(errorHandler);
+ List> messageConverters = restTemplate.getMessageConverters();
+
+ messageConverters.removeIf(httpMessageConverter -> httpMessageConverter instanceof AllEncompassingFormHttpMessageConverter);
+ messageConverters.add(new ExtensionFormHttpMessageConverter());
+ restTemplate.setMessageConverters(messageConverters);
+ this.restOperations = restTemplate;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayScoreApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayScoreApi.java
new file mode 100644
index 0000000..86068ae
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayScoreApi.java
@@ -0,0 +1,467 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import cn.felord.payment.wechat.WechatPayProperties;
+import cn.felord.payment.wechat.enumeration.WeChatServer;
+import cn.felord.payment.wechat.enumeration.WechatPayV3Type;
+import cn.felord.payment.wechat.v3.model.payscore.*;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import java.net.URI;
+
+/**
+ * 微信支付分API.
+ *
+ * @author felord.cn
+ * @since 1.0.2.RELEASE
+ */
+public class WechatPayScoreApi extends AbstractApi {
+ /**
+ * Instantiates a new Abstract api.
+ *
+ * @param wechatPayClient the wechat pay client
+ * @param tenantId the tenant id
+ */
+ public WechatPayScoreApi(WechatPayClient wechatPayClient, String tenantId) {
+ super(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 微信支付分-查询用户授权状态API.
+ *
+ * 免确认订单起始接口,【免确认订单模式】是高级接口权限,参见:业务流程说明
+ *
+ * 用户申请使用服务时,商户可通过此接口查询用户是否“已授权”本服务。在“已授权”状态下的服务,用户才可以申请使用。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity userServiceState(UserServiceStateParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_USER_SERVICE_STATE, params)
+ .function((wechatPayV3Type, userServiceStateParams) -> {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ MultiValueMap expandParams = new LinkedMultiValueMap<>();
+ expandParams.add("appid", v3.getAppId());
+ expandParams.add("service_id", params.getServiceId());
+ expandParams.add("openid", params.getOpenId());
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(expandParams)
+ .toUri();
+ return Get(uri);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 创建支付分订单API
+ *
+ * 用户申请使用服务时,商户可通过此接口申请创建微信支付分订单。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity createServiceOrder(UserServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_CREATE_USER_SERVICE_ORDER, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+
+ orderParams.setAppid(v3.getAppId());
+ orderParams.setNotifyUrl(v3.getDomain().concat(orderParams.getNotifyUrl()));
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 查询支付分订单API
+ *
+ * 用于查询单笔微信支付分订单详细信息。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryServiceOrder(QueryServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_QUERY_USER_SERVICE_ORDER, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+
+ String outOrderNo = orderParams.getOutOrderNo();
+ if (StringUtils.hasText(outOrderNo)) {
+ queryParams.add("out_order_no", outOrderNo);
+ }
+
+ String queryId = orderParams.getQueryId();
+ if (StringUtils.hasText(queryId)) {
+ queryParams.add("query_id", queryId);
+ }
+ queryParams.add("service_id", orderParams.getServiceId());
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ queryParams.add("appid", v3.getAppId());
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .queryParams(queryParams)
+ .build()
+ .toUri();
+ return Get(uri);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 取消支付分订单API
+ *
+ * 微信支付分订单创建之后,由于某些原因导致订单不能正常支付时,可使用此接口取消订单。
+ *
+ * 订单为以下状态时可以取消订单:CREATED(已创单)、DOING(进行中)(包括商户完结支付分订单后,且支付分订单收款状态为待支付USER_PAYING)
+ *
+ * 注意:
+ * • DOING状态包含了订单用户确认、已完结-待支付(USER_PAYING)的状态,因此这种状态下订单也是可以被取消的,请确认当前操作是否正确,防止误操作将完结后需要支付分收款的单据取消。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity cancelServiceOrder(CancelServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_CANCEL_USER_SERVICE_ORDER, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(orderParams.getOutOrderNo())
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ orderParams.setAppid(v3.getAppId());
+ orderParams.setOutOrderNo(null);
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 修改订单金额API
+ *
+ * 完结订单总金额与实际金额不符时,可通过该接口修改订单金额。
+ * 例如:充电宝场景,由于机器计费问题导致商户完结订单时扣除用户99元,用户客诉成功后,商户需要按照实际的消费金额(如10元)扣费,当服务订单支付状态处于“待支付”时,商户可使用此能力修改订单金额。
+ *
+ * 注意:
+ * • 若此笔订单已收款成功,商户直接使用退款能力,将差价退回用户即可。
+ *
+ * • 修改次数>=1,第n次修改后金额 <第n-1次修改后金额
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity modifyServiceOrder(ModifyServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_MODIFY_USER_SERVICE_ORDER, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(orderParams.getOutOrderNo())
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ orderParams.setAppid(v3.getAppId());
+ orderParams.setOutOrderNo(null);
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 完结支付分订单API
+ *
+ * 前置条件:服务订单状态为“进行中”且订单状态说明需为[USER_CONFIRM:用户确认]
+ *
+ * 完结微信支付分订单。用户使用服务完成后,商户可通过此接口完结订单。
+ *
+ * 特别说明:
+ * • 完结接口调用成功后,微信支付将自动发起免密代扣。 若扣款失败,微信支付将自动再次发起免密代扣(按照一定频次),直到扣成功为止。
+ *
+ * @param params the params
+ * @return wechat response entity
+ */
+ public WechatResponseEntity completeServiceOrder(CompleteServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_COMPLETE_USER_SERVICE_ORDER, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(orderParams.getOutOrderNo())
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ orderParams.setAppid(v3.getAppId());
+ orderParams.setOutOrderNo(null);
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 商户发起催收扣款API
+ *
+ * 前置条件:服务订单支付状态处于“待支付”状态
+ *
+ * 当微信支付分订单支付状态处于“待支付”时,商户可使用该接口向用户发起收款。
+ *
+ * 注意:
+ * • 此能力不影响微信支付分代商户向用户发起收款的策略。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity payServiceOrder(PayServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_PAY_USER_SERVICE_ORDER, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(orderParams.getOutOrderNo())
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ orderParams.setAppid(v3.getAppId());
+ orderParams.setOutOrderNo(null);
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 同步服务订单信息API
+ *
+ * 前提条件:同步商户渠道收款成功信息时,即场景类型=“Order_Paid”,订单的状态需为[MCH_COMPLETE:商户完结订单]
+ *
+ * 由于收款商户进行的某些“线下操作”会导致微信支付侧的订单状态与实际情况不符。例如,用户通过线下付款的方式已经完成支付,而微信支付侧并未支付成功,此时可能导致用户重复支付。因此商户需要通过订单同步接口将订单状态同步给微信支付,修改订单在微信支付系统中的状态。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity syncServiceOrder(SyncServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_SYNC_USER_SERVICE_ORDER, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(orderParams.getOutOrderNo())
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ orderParams.setAppid(v3.getAppId());
+ orderParams.setOutOrderNo(null);
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 创单结单合并API
+ *
+ * 相对需确认模式,免确认模式减少了用户确认授权这步操作,因此在免确认模式下商户无法获取用户的授权状态,为了解决商户的困扰,我们为免确认模式特别提供了查询授权状态和调起授权页面的api接口,这些接口仅在免确认模式下需要调用,且必须调用。
+ *
+ * 该接口适用于无需微信支付分做订单风控判断的业务场景,在服务完成后,通过该接口对用户进行免密代扣。
+ *
+ * 注意:
+ * • 限制条件:【免确认订单模式】,用户已授权状态下,可调用该接口。
+ *
+ * 特别提醒:创单结单合并接口暂未对外开放,如有需要请咨询对接的微信支付运营人员,申请开通调用权限。
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity directCompleteServiceOrder(DirectCompleteServiceOrderParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_DIRECT_COMPLETE, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ orderParams.setAppid(v3.getAppId());
+ String notifyUrl = orderParams.getNotifyUrl();
+ if (StringUtils.hasText(notifyUrl)) {
+ orderParams.setNotifyUrl(v3.getDomain().concat(notifyUrl));
+ }
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 商户预授权API
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity permissions(ServiceOrderPermissionParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_PERMISSIONS, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .toUri();
+
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ String notifyUrl = orderParams.getNotifyUrl();
+ orderParams.setAppid(v3.getAppId());
+ if (StringUtils.hasText(notifyUrl)) {
+ orderParams.setNotifyUrl(v3.getDomain().concat(notifyUrl));
+ }
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+
+ /**
+ * 查询与用户授权记录(授权协议号)API
+ *
+ * 通过authorization_code,商户查询与用户授权关系
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryPermissionsByAuthCode(PermissionsAuthCodeParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_PERMISSIONS_AUTH_CODE, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .queryParam("service_id", orderParams.getServiceId())
+ .build()
+ .expand(orderParams.getAuthorizationCode())
+ .toUri();
+
+ return Get(uri);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 解除用户授权关系(授权协议号)API
+ *
+ * 通过authorization_code,商户解除用户授权关系
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity terminatePermissionsByAuthCode(PermissionsAuthCodeParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_TERMINATE_PERMISSIONS_AUTH_CODE, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(orderParams.getAuthorizationCode())
+ .toUri();
+ orderParams.setAuthorizationCode(null);
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 查询与用户授权记录(openid)API
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity queryPermissionsByOpenId(PermissionsOpenIdParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_PERMISSIONS_OPENID, params)
+ .function((wechatPayV3Type, orderParams) -> {
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .queryParam("appid", v3.getAppId())
+ .queryParam("service_id", orderParams.getServiceId())
+ .build()
+ .expand(orderParams.getOpenid())
+ .toUri();
+ return Get(uri);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+
+ /**
+ * 解除用户授权关系(openid)API
+ *
+ * @param params the params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity terminatePermissionsByOpenId(PermissionsOpenIdParams params) {
+ WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>();
+ this.client().withType(WechatPayV3Type.PAY_SCORE_TERMINATE_PERMISSIONS_OPENID, params)
+ .function((wechatPayV3Type, orderParams) -> {
+
+ URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
+ .build()
+ .expand(orderParams.getOpenid())
+ .toUri();
+ WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();
+ orderParams.setAppid(v3.getAppId());
+ orderParams.setOpenid(null);
+ return Post(uri, orderParams);
+ })
+ .consumer(wechatResponseEntity::convert)
+ .request();
+ return wechatResponseEntity;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatRequestEntity.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatRequestEntity.java
new file mode 100644
index 0000000..223282a
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatRequestEntity.java
@@ -0,0 +1,94 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import lombok.Getter;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.RequestEntity;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.MultiValueMap;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.util.function.Consumer;
+
+/**
+ * The type Wechat request entity.
+ *
+ * @param the type parameter
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Getter
+public class WechatRequestEntity extends RequestEntity {
+
+ /**
+ * The Response body consumer.
+ */
+ private final Consumer> responseBodyConsumer;
+
+ /**
+ * Instantiates a new Wechat request entity.
+ *
+ * @param body the body
+ * @param headers the headers
+ * @param method the method
+ * @param url the url
+ * @param type the type
+ * @param responseBodyConsumer the response body consumer
+ */
+ public WechatRequestEntity(T body, MultiValueMap headers, HttpMethod method, URI url, Type type, Consumer> responseBodyConsumer) {
+ super(body, headers, method, url, type);
+ this.responseBodyConsumer = responseBodyConsumer;
+ }
+
+ /**
+ * Headers wechat request entity.
+ *
+ * @param httpHeaders the http headers
+ * @return the wechat request entity
+ */
+ public WechatRequestEntity headers(HttpHeaders httpHeaders) {
+ return new WechatRequestEntity<>(this.getBody(),
+ httpHeaders,
+ this.getMethod(),
+ this.getUrl(),
+ this.getType(),
+ this.responseBodyConsumer);
+ }
+
+
+ /**
+ * Of wechat request entity.
+ *
+ * @param requestEntity the request entity
+ * @param responseBodyConsumer the response body consumer
+ * @return the wechat request entity
+ */
+ public static WechatRequestEntity> of(RequestEntity> requestEntity, Consumer> responseBodyConsumer) {
+ return new WechatRequestEntity<>(requestEntity.getBody(),
+ requestEntity.getHeaders(),
+ requestEntity.getMethod(),
+ requestEntity.getUrl(),
+ requestEntity.getType(),
+ responseBodyConsumer);
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatResponseEntity.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatResponseEntity.java
new file mode 100644
index 0000000..c95a846
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatResponseEntity.java
@@ -0,0 +1,126 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.Objects;
+
+/**
+ * The type Wechat response entity.
+ *
+ * @param the type parameter
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Slf4j
+@Data
+public class WechatResponseEntity {
+ /**
+ * The Http status.
+ */
+ private int httpStatus;
+ /**
+ * The Body.
+ */
+ private T body;
+
+
+ /**
+ * Convert {@link ResponseEntity} to {@link WechatResponseEntity}.
+ *
+ * @param responseEntity the response entity
+ */
+ public void convert(ResponseEntity responseEntity) {
+ if (log.isDebugEnabled()) {
+ log.debug("wechat response {}", responseEntity);
+ }
+ if (Objects.nonNull(responseEntity)) {
+ this.httpStatus = responseEntity.getStatusCodeValue();
+ this.body = responseEntity.getBody();
+ } else {
+ this.httpStatus = HttpStatus.REQUEST_TIMEOUT.value();
+ this.body = null;
+ }
+ }
+
+
+ /**
+ * Is 1 xx informational boolean.
+ *
+ * @return the boolean
+ */
+ public boolean is1xxInformational() {
+ if (log.isDebugEnabled()) {
+ log.debug("wechat httpStatus {}", this.httpStatus);
+ }
+ return HttpStatus.valueOf(this.httpStatus).is1xxInformational();
+ }
+
+ /**
+ * Is 2xx successful boolean.
+ *
+ * @return the boolean
+ */
+ public boolean is2xxSuccessful() {
+ if (log.isDebugEnabled()) {
+ log.debug("wechat httpStatus {}", this.httpStatus);
+ }
+ return HttpStatus.valueOf(this.httpStatus).is2xxSuccessful();
+ }
+
+ /**
+ * Is 3xx redirection boolean.
+ *
+ * @return the boolean
+ */
+ public boolean is3xxRedirection() {
+ if (log.isDebugEnabled()) {
+ log.debug("wechat httpStatus {}", this.httpStatus);
+ }
+ return HttpStatus.valueOf(this.httpStatus).is3xxRedirection();
+ }
+
+ /**
+ * Is 4xx client error boolean.
+ *
+ * @return the boolean
+ */
+ public boolean is4xxClientError() {
+ if (log.isDebugEnabled()) {
+ log.debug("wechat httpStatus {}", this.httpStatus);
+ }
+ return HttpStatus.valueOf(this.httpStatus).is4xxClientError();
+ }
+
+ /**
+ * Is 5xx server error boolean.
+ *
+ * @return the boolean
+ */
+ public boolean is5xxServerError() {
+ if (log.isDebugEnabled()) {
+ log.debug("wechat httpStatus {}", this.httpStatus);
+ }
+ return HttpStatus.valueOf(this.httpStatus).is5xxServerError();
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/Amount.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/Amount.java
new file mode 100644
index 0000000..621b14f
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/Amount.java
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+/**
+ * 支付金额 货币单位【分】默认使用人民币标识CNY
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class Amount {
+ /**
+ * The Total.
+ */
+ private int total;
+ /**
+ * The Currency.
+ */
+ private String currency = "CNY";
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CallbackParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CallbackParams.java
new file mode 100644
index 0000000..65ec281
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CallbackParams.java
@@ -0,0 +1,84 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+/**
+ * 微信支付回调请求参数.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class CallbackParams {
+ /**
+ * The Id.
+ */
+ private String id;
+ /**
+ * The Create time.
+ */
+ private String createTime;
+ /**
+ * The Event type.
+ */
+ private String eventType;
+ /**
+ * The Resource type.
+ */
+ private String resourceType;
+ /**
+ * The Summary.
+ */
+ private String summary;
+ /**
+ * The Resource.
+ */
+ private Resource resource;
+
+
+ /**
+ * The type Resource.
+ */
+ @Data
+ public static class Resource {
+ /**
+ * The Algorithm.
+ */
+ private String algorithm;
+ /**
+ * The Ciphertext.
+ */
+ private String ciphertext;
+ /**
+ * The Associated data.
+ */
+ private String associatedData;
+ /**
+ * The Nonce.
+ */
+ private String nonce;
+ /**
+ * The Original type.
+ */
+ private String originalType;
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ConsumeInformation.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ConsumeInformation.java
new file mode 100644
index 0000000..f172d1b
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ConsumeInformation.java
@@ -0,0 +1,54 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 已实扣代金券信息
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class ConsumeInformation {
+
+ /**
+ * The Consume mchid.
+ */
+ private String consumeMchid;
+
+ /**
+ * The Consume time.
+ */
+ private String consumeTime;
+
+ /**
+ * The Goods detail.
+ */
+ private List goodsDetail;
+
+ /**
+ * The Transaction id.
+ */
+ private String transactionId;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponAvailableTime.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponAvailableTime.java
new file mode 100644
index 0000000..dff3444
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponAvailableTime.java
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+/**
+ * The type Coupon available time.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class CouponAvailableTime {
+ /**
+ * The Available time after receive.
+ */
+ private Long availableTimeAfterReceive;
+ /**
+ * The Fix available time.
+ */
+ private FixAvailableTime fixAvailableTime;
+ /**
+ * The Second day available.
+ */
+ private Boolean secondDayAvailable;
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponConsumeData.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponConsumeData.java
new file mode 100644
index 0000000..ed11112
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponConsumeData.java
@@ -0,0 +1,112 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+/**
+ * 微信代金券核销通知参数
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class CouponConsumeData {
+
+ /**
+ * The Available begin time.
+ */
+ private String availableBeginTime;
+ /**
+ * The Available end time.
+ */
+ private String availableEndTime;
+ /**
+ * The Consume information.
+ */
+ private ConsumeInformation consumeInformation;
+ /**
+ * The Coupon id.
+ */
+ private String couponId;
+ /**
+ * The Coupon name.
+ */
+ private String couponName;
+ /**
+ * The Coupon type.
+ */
+ private CouponType couponType;
+ /**
+ * The Create time.
+ */
+ private String createTime;
+ /**
+ * The Description.
+ */
+ private String description;
+ /**
+ * The Discount to.
+ */
+ private DiscountTo discountTo;
+ /**
+ * The No cash.
+ */
+ private Boolean noCash;
+ /**
+ * The Normal coupon information.
+ */
+ private NormalCouponInformation normalCouponInformation;
+ /**
+ * The Singleitem.
+ */
+ private Boolean singleitem;
+ /**
+ * The Singleitem discount off.
+ */
+ private SingleitemDiscountOff singleitemDiscountOff;
+ /**
+ * The Status.
+ */
+ private String status;
+ /**
+ * The Stock creator mchid.
+ */
+ private String stockCreatorMchid;
+ /**
+ * The Stock id.
+ */
+ private String stockId;
+
+ /**
+ * 券类型
+ *
+ * @since 1.0.2.RELEASE
+ */
+ public enum CouponType{
+ /**
+ * 满减券
+ */
+ NORMAL,
+ /**
+ * 减至券
+ */
+ CUT_TO
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponDetailsQueryParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponDetailsQueryParams.java
new file mode 100644
index 0000000..2e6f5ff
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponDetailsQueryParams.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+/**
+ * 查询代金券详情API参数
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class CouponDetailsQueryParams {
+ /**
+ * 用户在appid下授权得到的openid
+ *
+ * 参考发券
+ */
+ private String openId;
+ /**
+ * 代金券id
+ */
+ private String couponId;
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponUseRule.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponUseRule.java
new file mode 100644
index 0000000..a3f13c5
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/CouponUseRule.java
@@ -0,0 +1,109 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 核销规则.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class CouponUseRule {
+
+
+ /**
+ * 可核销商品编码
+ */
+ private List availableItems;
+
+ /**
+ * 可用商户
+ */
+ private List availableMerchants;
+
+ /**
+ * 是否可以叠加使用
+ */
+ private Boolean combineUse;
+
+ /**
+ * 券生效时间
+ */
+ private CouponAvailableTime couponAvailableTime;
+
+ /**
+ * 固定面额满减券使用规则
+ */
+ private FixedNormalCoupon fixedNormalCoupon;
+
+ /**
+ * 订单优惠标记
+ */
+ private List goodsTag;
+ /**
+ * 指定支付方式
+ */
+ private List limitPay;
+ /**
+ * 指定银行卡BIN
+ */
+ private LimitCard limitCard;
+
+ /**
+ * 支付方式,枚举值:
+ *
+ *
+ * MICROAPP:小程序支付
+ * APPPAY:APP支付
+ * PPAY:免密支付
+ * CARD:刷卡支付
+ * FACE:人脸支付
+ * OTHER:其他支付
+ *
+ */
+ private String tradeType;
+
+
+ /**
+ * 指定银行卡BIN
+ *
+ * 限定该批次核销的指定银行卡BIN,当批次限定了指定银行卡时方可生效
+ */
+ @Data
+ public static class LimitCard {
+ /**
+ * 银行卡名称
+ *
+ * 将在微信支付收银台向用户展示,最多4个中文字
+ */
+ private String name;
+ /**
+ * 指定卡BIN
+ *
+ * 使用指定卡BIN的银行卡支付方可享受优惠,按json格式
+ * 特殊规则:单个卡BIN的字符长度为【6,9】,条目个数限制为【1,10】。
+ * 示例值:['62123456','62123457']
+ */
+ private List bin;
+ }
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/Detail.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/Detail.java
new file mode 100644
index 0000000..2c2381f
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/Detail.java
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * The type Detail.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class Detail {
+ /**
+ * 订单原价
+ */
+ private int costPrice;
+ /**
+ * 商品小票ID
+ */
+ private String invoiceId;
+ /**
+ * 单品列表
+ */
+ private List goodsDetail;
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/DiscountTo.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/DiscountTo.java
new file mode 100644
index 0000000..2b07faf
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/DiscountTo.java
@@ -0,0 +1,41 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+/**
+ * 减至优惠限定字段,仅减至优惠场景有返回
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class DiscountTo {
+
+ /**
+ * The Cut to price.
+ */
+ private Long cutToPrice;
+ /**
+ * The Max price.
+ */
+ private Long maxPrice;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/FixAvailableTime.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/FixAvailableTime.java
new file mode 100644
index 0000000..ae6ba94
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/FixAvailableTime.java
@@ -0,0 +1,47 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * The type Fix available time.
+ *
+ * @author felord.cn
+ * @since 1.0.0.RELEASE
+ */
+@Data
+public class FixAvailableTime {
+
+ /**
+ * The Available week day.
+ */
+ private List