🐛 #1546 修复WxRedisOps问题, #1548 修复WxOpenInMemoryConfigStorage锁问题,#1305 增加商户电子发票功能

This commit is contained in:
Mario Luo
2020-05-12 18:17:17 +08:00
committed by GitHub
parent 609b38a9db
commit 058ce62a2b
25 changed files with 1078 additions and 14 deletions

View File

@@ -0,0 +1,50 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 发票充红请求参数
*/
@Data
public class ClearOutInvoiceRequest implements Serializable {
private ClearOutInvoiceInfo invoiceinfo;
@Data
public static class ClearOutInvoiceInfo implements Serializable {
/**
* 用户的openid 用户知道是谁在开票
*/
private String wxopenid;
/**
* 发票请求流水号,唯一查询发票的流水号
*/
private String fpqqlsh;
/**
* 纳税人识别码
*/
private String nsrsbh;
/**
* 纳税人名称
*/
private String nsrmc;
/**
* 原发票代码,即要冲红的蓝票的发票代码
*/
private String yfpdm;
/**
* 原发票号码,即要冲红的蓝票的发票号码
*/
private String yfphm;
}
}

View File

@@ -0,0 +1,23 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 获取电子开票用户授权数据
*/
@Data
public class InvoiceAuthDataRequest implements Serializable {
/**
* 开票平台在微信的标识号,商户需要找开票平台提供
*/
private String sPappid;
/**
* 订单id在商户内单笔开票请求的唯一识别号
*/
private String orderId;
}

View File

@@ -0,0 +1,66 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 用户开票认证信息返回结果DTO
*/
@Data
public class InvoiceAuthDataResult implements Serializable {
/**
* 订单授权状态当errcode为0时会出现
*/
private String invoiceStatus;
/**
* 授权时间为十位时间戳utc+8当errcode为0时会出现
*/
private Long authTime;
/**
* 用户授权信息
*/
private UserAuthInfo userAuthInfo;
@Data
public static class UserAuthInfo implements Serializable {
/**
* 个人抬头
*/
private UserField userField;
/**
* 单位抬头
*/
private BizField bizField;
}
@Data
public static class UserField implements Serializable {
private String title;
private String phone;
private String email;
private List<KeyValuePair> customField;
}
@Data
public static class BizField implements Serializable {
private String title;
private String taxNo;
private String addr;
private String phone;
private String bankType;
private String bankNo;
private List<KeyValuePair> customField;
}
@Data
public static class KeyValuePair implements Serializable {
private String key;
private String value;
}
}

View File

@@ -0,0 +1,52 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 获取授权地址的输入参数
*/
@Data
public class InvoiceAuthPageRequest implements Serializable {
/**
* 开票平台在微信的标识号,商户需要找开票平台提供
*/
private String sPappid;
/**
* 订单id在商户内单笔开票请求的唯一识别号
*/
private String orderId;
/**
* 订单金额,以分为单位
*/
private Long money;
/**
* 开票来源
*/
private String source;
/**
* 授权成功后跳转页面。本字段只有在source为H5的时候需要填写引导用户在微信中进行下一步流程。app开票因为从外部app拉起微信授权页授权完成后自动回到原来的app故无需填写。
*/
private String redirectUrl;
/**
* 授权类型0开票授权1填写字段开票授权2领票授权
*/
private Integer type;
/**
* 时间戳单位s
*/
private Long timestamp;
/**
* 内部填充(请务设置)
*/
private String ticket;
}

View File

@@ -0,0 +1,22 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 获取授权链接返回结果DTO
*/
@Data
public class InvoiceAuthPageResult implements Serializable {
/**
* 授权页地址
*/
private String authUrl;
/**
* 当发起端为小程序时, 返回
*/
private String appid;
}

View File

@@ -0,0 +1,61 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class InvoiceAuthPageSetting implements Serializable {
private AuthField authField;
@Data
public static class AuthField implements Serializable {
private UserField userField;
private BizField bizField;
}
@Data
public static class UserField implements Serializable {
private Integer showTitle;
private Integer showPhone;
private Integer showEmail;
private Integer requirePhone;
private Integer requireEmail;
private List<InvoiceAuthDataResult.KeyValuePair> customField;
}
@Data
public static class BizField implements Serializable {
private Integer showTitle;
private Integer showTaxNo;
private Integer showAddr;
private Integer showPhone;
private Integer showBankType;
private Integer showBankNo;
private Integer requireTaxNo;
private Integer requireAddr;
private Integer requirePhone;
private Integer requireBankType;
private Integer requireBankNo;
private List<InvoiceAuthDataResult.KeyValuePair> customField;
}
@Data
public static class CustomField implements Serializable {
/**
* 字段名
*/
private String key;
/**
* 01 默认为0
*/
private Integer isRequire;
/**
* 提示文案
*/
private String notice;
}
}

View File

@@ -0,0 +1,30 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import java.io.Serializable;
/**
* 拒绝开票请求参数
*/
public class InvoiceRejectRequest implements Serializable {
/**
* 开票平台标示
*/
private String sPappid;
/**
* 订单id
*/
private String orderId;
/**
* 拒绝原因
*/
private String reason;
/**
* 引导用户跳转url
*/
private String url;
}

View File

@@ -0,0 +1,52 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 电子发票信息查询结果
*/
@Data
public class InvoiceResult implements Serializable {
/**
* 发票相关信息
*/
private InvoiceDetail invoicedetail;
@Data
public static class InvoiceDetail implements Serializable {
/**
* 发票流水号
*/
private String fpqqlsh;
/**
* 检验码
*/
private String jym;
/**
* 校验码
*/
private String kprq;
/**
* 发票代码
*/
private String fpdm;
/**
* 发票号码
*/
private String fphm;
/**
* 发票url
*/
private String pdfurl;
}
}

View File

@@ -0,0 +1,200 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 开票信息请求参数
*/
@Data
public class MakeOutInvoiceRequest implements Serializable {
private InvoiceInfo invoiceinfo;
/**
* 发票信息
*/
@Data
public static class InvoiceInfo implements Serializable {
/**
* 维修openid
*/
private String wxopenid;
/**
* 订单号
*/
private String ddh;
/**
* 发票请求流水号,唯一识别开票请求的流水号
*/
private String fpqqlsh;
/**
* 纳税人识别码
*/
private String nsrsbh;
/**
* 纳税人名称
*/
private String nsrmc;
/**
* 纳税人地址
*/
private String nsrdz;
/**
* 纳税人电话
*/
private String nsrdh;
/**
* 纳税人开户行
*/
private String nsrbank;
/**
* 纳税人银行账号
*/
private String nsrbankid;
/**
* 购货方名称
*/
private String ghfnsrsbh;
/**
* 购货方识别号
*/
private String ghfmc;
/**
* 购货方地址
*/
private String ghfdz;
/**
* 购货方电话
*/
private String ghfdh;
/**
* 购货方开户行
*/
private String ghfbank;
/**
* 购货方银行帐号
*/
private String ghfbankid;
/**
* 开票人
*/
private String kpr;
/**
* 收款人
*/
private String skr;
/**
* 复核人
*/
private String fhr;
/**
* 价税合计
*/
private String jshj;
/**
* 合计金额
*/
private String hjje;
/**
* 合计税额
*/
private String hjse;
/**
* 备注
*/
private String bz;
/**
* 行业类型 0 商业 1其它
*/
private String hylx;
/**
* 发票商品条目
*/
private List<InvoiceDetailItem> invoicedetailList;
}
/**
* 发票条目
*/
@Data
public static class InvoiceDetailItem implements Serializable {
/**
* 发票性质
*/
private String fphxz;
/**
* 19位税收分类编码
*/
private String spbm;
/**
* 项目名称
*/
private String xmmc;
/**
* 计量单位
*/
private String dw;
/**
* 规格型号
*/
private String ggxh;
/**
* 项目数量
*/
private String xmsl;
/**
* 项目单价
*/
private String xmdj;
/**
* 项目金额 不含税,单位元 两位小数
*/
private String xmje;
/**
* 税率 精确到两位小数 如0.01
*/
private String sl;
/**
* 税额 单位元 两位小数
*/
private String se;
}
}

View File

@@ -0,0 +1,22 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 商户联系信息
*/
@Data
public class MerchantContactInfo implements Serializable {
/**
* 联系电话
*/
private String phone;
/**
* 开票超时时间
*/
private Integer timeout;
}

View File

@@ -0,0 +1,16 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 设置商户联系信息和发票过时时间参数
*/
@Data
public class MerchantContactInfoWrapper implements Serializable {
private MerchantContactInfo contact;
}

View File

@@ -0,0 +1,19 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import java.io.Serializable;
/**
* 商户的开票平台信息
*/
public class MerchantInvoicePlatformInfo implements Serializable {
/**
* 微信支付商户号
*/
private String mchid;
/**
* 为该商户提供开票服务的开票平台 id ,由开票平台提供给商户
*/
private String sPappid;
}

View File

@@ -0,0 +1,15 @@
package me.chanjar.weixin.mp.bean.invoice.merchant;
import lombok.Data;
import java.io.Serializable;
/**
* 设置商户联系信息和发票过时时间参数
*/
@Data
public class MerchantInvoicePlatformInfoWrapper implements Serializable {
private MerchantInvoicePlatformInfo paymchInfo;
}