## 入口类

`WechatApiProvider`是本项目微信支付的入口类，已被注入**Spring IoC**，由它来初始化微信支付相关的**API**，具体分为**直连商户
**和**服务商**两个体系。

> 以下清单请搭配微信支付文档使用。

### 直连商户

#### 基础支付

- [x] `WechatDirectPayApi` 基础支付，通过`WechatApiProvider#directPayApi`初始化
    - [x] `jsPay` JSAPI/小程序下单
    - [x] `appPay` APP下单
    - [x] `h5Pay` H5下单
    - [x] `nativePay` Native下单
    - [x] 查询订单
        1. `queryTransactionById` 微信支付订单号查询
        2. `queryTransactionByOutTradeNo` 商户订单号查询
    - [x] `close` 关闭订单
    - [x] `WechatPayCallback#transactionCallback` 支付通知，参见下面回调说明
    - [x] `refund` 申请退款
    - [x] `queryRefundInfo` 查询单笔退款
    - [x] `WechatPayCallback#refundCallback` 退款结果通知，参见下面回调说明
    - [x] `downloadTradeBill` 申请交易账单，直接下载为gzip或者txt文件
    - [x] `downloadFundFlowBill` 申请资金账单，直接下载为gzip或者txt文件
- [x] `WechatCombinePayApi` 合单支付，通过`WechatApiProvider#combinePayApi`初始化
    - [x] `jsPay` 合单JSAPI/小程序下单
    - [x] `appPay` 合单APP下单
    - [x] `h5Pay` 合单H5下单
    - [x] `nativePay` 合单Native下单
    - [x] `queryTransactionByOutTradeNo` 查询订单，**合单支付目前只支持商户订单号查询**
    - [x] `close` 合单关闭订单
    - [x] `WechatPayCallback#combineTransactionCallback` 合单支付通知，参见下面回调说明
    - [x] `refund` 合单申请退款
    - [x] `queryRefundInfo` 合单查询单笔退款
    - [x] `WechatPayCallback#refundCallback` 退款结果通知，参见下面回调说明
    - [x] `downloadTradeBill` 申请交易账单，直接下载为gzip或者txt文件
    - [x] `downloadFundFlowBill` 申请资金账单，直接下载为gzip或者txt文件
- [ ] ~~付款码支付~~，暂时没有V3接口，可通过payment spring boot 提供的V2扩展功能自行实现。

#### 经营能力

##### 微信支付分

- [x] `WechatPayScoreApi` 微信支付分，通过`WechatApiProvider#payScoreApi`初始化
    - [x] 公共API
        - [x] `createServiceOrder` 创建支付分订单
        - [x] `queryServiceOrder` 查询支付分订单
        - [x] `cancelServiceOrder` 取消支付分订单
        - [x] `modifyServiceOrder` 修改订单金额
        - [x] `completeServiceOrder` 完结支付分订单
        - [x] `syncServiceOrder` 同步服务订单信息
        - [x] `WechatPayCallback#payscoreUserOrderCallback` 支付成功回调通知，参见下面回调说明
        - [x] `refund` 支付分申请退款
        - [x] `queryRefundInfo` 支付分查询单笔退款
        - [x] `WechatPayCallback#refundCallback` 支付分退款结果通知，参见下面回调说明
    - [x] 免确认预授权模式
        - [x] `permissions` 商户预授权
        - [x] `queryPermissionsByAuthCode` 查询与用户授权记录（授权协议号）
        - [x] `terminatePermissionsByAuthCode` 解除用户授权关系（授权协议号）
        - [x] `queryPermissionsByOpenId` 查询与用户授权记录（openid）
        - [x] `terminatePermissionsByOpenId` 解除用户授权关系（openid）
        - [x] `WechatPayCallback#permissionCallback` 开启/解除授权服务回调通知，参见下面回调说明
    - [x] 需确认模式
        - [x] `WechatPayCallback#payscoreUserOrderCallback` 确认订单回调通知，参见下面回调说明

##### 支付即服务

- [x] `WechatSmartGuideApi` 支付即服务，通过`WechatApiProvider#smartGuideApi`初始化
    - [x] `register` 服务人员注册
    - [x] `assign` 服务人员分配
    - [x] `query` 服务人员查询
    - [x] `modify` 服务人员信息更新

#### 行业方案

##### 智慧商圈

- [x] `WechatBusinessCircleApi` 智慧商圈，通过`WechatApiProvider#businessCircleApi`初始化
    - [ ] 商圈会员积分服务授权结果通知回调（未实现）
    - [x] `WechatPayCallback#mallTransactionCallback` 商圈会员场内支付结果通知，参见下面回调说明
    - [x] `apply` 商圈积分同步
    - [x] `WechatPayCallback#mallRefundCallback` 商圈会员场内退款通知，参见下面回调说明
    - [x] `queryAuthStatus` 商圈积分授权查询
    - [ ] 商圈会员待积分状态查询（未实现）
    - [ ] 商圈会员停车状态同步（未实现）

##### 微信支付分停车服务

- [x] `WechatPayScoreParkingApi` 微信支付分停车服务，通过`WechatApiProvider#payScoreParkingApi`初始化
    - [x] `find` 查询车牌服务开通信息
    - [x] `parking` 创建停车入场
    - [x] `transactionsParking` 扣费受理
    - [x] `queryTransactionByOutTradeNo` 查询订单
    - [x] `WechatPayCallback#payscoreParkingCallback` 停车入场状态变更通知，参见下面回调说明
    - [x] `WechatPayCallback#payscoreTransParkingCallback` 订单支付结果通知，参见下面回调说明
    - [x] `refund` 申请退款
    - [x] `queryRefundInfo` 查询单笔退款
    - [x] `WechatPayCallback#refundCallback` 退款结果通知，参见下面回调说明

#### 营销工具

##### 代金券

- [x] `WechatMarketingFavorApi` 代金券，通过`WechatApiProvider#payScoreParkingApi`初始化
    - [x] `createStock` 创建代金券批次
    - [x] `startStock` 激活代金券批次
    - [x] `sendStock` 发放代金券
    - [x] `pauseStock` 暂停代金券批次
    - [x] `restartStock` 重启代金券批次
    - [x] `queryStocksByMch` 条件查询批次列表
    - [x] `queryStockDetail` 查询批次详情
    - [x] `queryCouponDetails` 查询代金券详情
    - [x] `queryMerchantsByStockId` 查询代金券可用商户
    - [x] `queryStockItems` 查询代金券可用单品
    - [x] `queryUserCouponsByMchId` 根据商户号查用户的券
    - [x] `downloadStockUseFlow` 下载批次核销明细
    - [x] `downloadStockRefundFlow` 下载批次退款明细
    - [x] `setMarketingFavorCallback` 设置消息通知地址
    - [x] `WechatPayCallback#couponCallback` 核销事件回调通知，参见下面回调说明
    - [x] `sendCouponsCard` 发放消费卡

> `sendCouponsCard` 发放消费卡，功能仅向指定邀约商户开放，如有需要请联系微信支付运营经理。

##### 商家券

- [x] `WechatMarketingBusiFavorApi` 商家券，通过`WechatApiProvider#busiFavorApi`初始化
    - [x] `createStock` 创建商家券券批次
    - [x] `queryStockDetail` 查询商家券详情
    - [x] `use` 核销用户券
    - [x] `queryUserStocks` 根据过滤条件查询用户券
    - [x] `queryUserCoupon` 查询用户单张券详情
    - [x] `uploadCouponCodes` 上传预存code
    - [x] `setCallbacks` 设置商家券事件通知地址
    - [x] `getCallbacks` 查询商家券事件通知地址
    - [x] `associate` 关联订单信息
    - [x] `disassociate` 取消关联订单信息
    - [x] `budget` 修改批次预算
    - [x] `updateStock` 修改商家券基本信息
    - [x] `refund` 申请退券
    - [x] `deactivate` 使券失效
    - [x] `payMakeup` 营销补差付款
    - [x] `queryMakeup` 查询营销补差付款单详情
    - [x] `payMakeup` 营销补差付款
    - [x] `WechatPayCallback#busiFavorReceiveCallback` 领券事件回调通知，参见下面回调说明

##### 委托营销

- [x] `WechatMarketingPartnershipApi` 委托营销，通过`WechatApiProvider#marketingshipApi`初始化
    - [x] `build` 建立合作关系
    - [x] `query` 查询合作关系列表

##### 支付有礼

- [x] `WechatMarketingPayGiftActivityApi` 支付有礼，通过`WechatApiProvider#marketingPayGiftActivityApi`初始化
    - [x] `create` 创建全场满额送活动
    - [x] `details` 查询活动详情接口
    - [x] `merchants` 查询活动发券商户号
    - [x] `goods` 查询活动指定商品列表
    - [x] `terminate` 终止活动
    - [x] `addMches` 新增活动发券商户号
    - [x] `page` 获取支付有礼活动列表
    - [x] `deleteMch` 删除活动发券商户号

##### 图片上传（营销专用）

- [x] 参见 **其它能力**

##### 现金红包（基于V2）

- [x] `WechatPayRedpackApi` 现金红包，通过`WechatApiProvider#redpackApi`初始化
    - [x] `sendRedpack` 发放随机红包
    - [x] `sendRedpack` 发放裂变红包
    - [x] `redpackInfo` 查询红包信息

> 重要：**基于V2实现，因此需要在配置文件中配置v2支付对应的`appSecret`参数**

#### 资金应用

##### 商家转账到零钱

- [x] `WechatBatchTransferApi` 商家转账到零钱，通过`WechatApiProvider#batchTransferApi`初始化
    - [x] `batchTransfer` 发起批量转账
    - [x] 查询转账批次单
        1. `queryBatchByBatchId` 通过微信批次单号查询批次单
        2. `queryBatchByOutBatchNo` 通过商家批次单号查询批次单
    - [x] 查询转账明细单
        1. `queryBatchDetailByWechat` 通过微信明细单号查询明细单
        2. `queryBatchDetailByMch` 通过商家明细单号查询明细单
    - [x] 申请转账电子回单
        1. `receiptBill` 转账账单电子回单申请受理接口
        2. `downloadBill` 查询转账账单电子回单接口，附带下载能力
    - [x] 申请转账明细电子回单
        1. `transferElectronic` 受理转账明细电子回单
        2. `queryTransferElectronicResult` 查询转账账单电子回单接口

##### 分账

- [x] `WechatProfitsharingApi` 分账，通过`WechatApiProvider#profitsharingApi`初始化
    - [x] `profitsharingOrders` 请求分账
    - [x] `queryProfitsharingOrder` 查询分账结果
    - [x] `returnOrders` 请求分账回退
    - [x] `queryReturnOrders` 查询分账回退结果
    - [x] `unfreeze` 解冻剩余资金
    - [x] `queryAmounts` 查询剩余待分金额
    - [x] `addReceivers` 添加分账接收方
    - [x] `deleteReceivers` 删除分账接收方
    - [x] `downloadMerchantBills` 申请分账账单

#### 风险合规

##### 消费者投诉2.0

- [ ] 功能实现中……

#### 其它能力

##### 清关报关

- [ ] 清关报关 暂时没有V3接口，可通过payment spring boot 提供的V2扩展功能自行实现。

##### 媒体上传

> 包含图片上传和视频上传

- [x] `WechatMediaApi` 媒体上传，通过`WechatApiProvider#mediaApi`初始化
    - [x] `mediaImageUpload` 图片上传
    - [x] `mediaVideoUpload` 视频上传
    - [x] `marketingImageUpload` 营销图片上传

> 通过营销**图片上传API**上传图片后可获得图片url地址。图片url可在微信支付营销相关的API使用，包括商家券、代金券、支付有礼等。

### 服务商

施工中……