jiangping
2025-07-19 0cfbaf9a439dc75824c52a6e58b6849064afbc80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
package com.doumee.config.wx;
 
 
import com.google.gson.annotations.SerializedName;
import com.wechat.pay.java.core.cipher.PrivacyDecryptor;
import lombok.Data;
 
import java.util.Objects;
 
/**
 * 商户单号查询转账单实体类信息
 *
 * @author: suhai
 * @date: 2025/05/13  11:28
 */
@Data
public class TransferDetailEntityNew {
    /** 商户号 Y 说明:微信支付分配的商户号 */
    @SerializedName("mch_id")
    private String mchId;
 
    /** 商户单号 Y 说明:商户系统内部的商家单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一 */
    @SerializedName("out_bill_no")
    private String outBillNo;
 
    /** 商家转账订单号 Y 说明:商家转账订单的主键,唯一定义此资源的标识 */
    @SerializedName("transfer_bill_no")
    private String transferBillNo;
 
    /** 商户appid Y 说明:申请商户号的appid或商户号绑定的appid(企业号corpid即为此appid) */
    @SerializedName("appid")
    private String appid;
 
    /** 单据状态 Y 说明:单据状态  */
    @SerializedName("state")
    private String state;
 
    /** 转账金额 Y 说明:转账金额单位为“分”。*/
    @SerializedName("transfer_amount")
    private Integer transferAmount;
 
    /** 转账备注 Y 说明:转账备注,用户收款时可见该备注信息,UTF8编码,最多允许32个字符。*/
    @SerializedName("transfer_remark")
    private String transferRemark;
 
    /** 失败原因 N 说明:订单已失败或者已退资金时,返回失败原因。 */
    @SerializedName("fail_reason")
    private String failReason;
 
    /** 收款用户OpenID Y 说明:商户AppID下,某用户的OpenID  */
    @SerializedName("openid")
    private String openid;
 
    /** 收款用户姓名 N 说明:收款方真实姓名。需要加密传入,支持标准RSA算法和国密算法,公钥由微信侧提供。
     转账金额 >= 2,000元时,该笔明细必须填写
     若商户传入收款用户姓名,微信支付会校验收款用户与输入姓名是否一致,并提供电子回单 */
    @SerializedName("user_name")
    private String userName;
 
    /** 单据创建时间 N 说明:单据受理成功时返回,按照使用rfc3339所定义的格式,格式为yyyy-MM-DDThh:mm:ss+TIMEZONE */
    @SerializedName("create_time")
    private String createTime;
 
    /** 最后一次状态变更时间 N 说明:单据最后更新时间,按照使用rfc3339所定义的格式,格式为yyyy-MM-DDThh:mm:ss+TIMEZONE */
    @SerializedName("update_time")
    private String updateTime;
 
    public String getMchId() {
        return mchId;
    }
 
    public void setMchId(String mchId) {
        this.mchId = mchId;
    }
 
    public String getOutBillNo() {
        return outBillNo;
    }
 
    public void setOutBillNo(String outBillNo) {
        this.outBillNo = outBillNo;
    }
 
    public String getTransferBillNo() {
        return transferBillNo;
    }
 
    public void setTransferBillNo(String transferBillNo) {
        this.transferBillNo = transferBillNo;
    }
 
    public String getAppid() {
        return appid;
    }
 
    public void setAppid(String appid) {
        this.appid = appid;
    }
 
    public String getState() {
        return state;
    }
 
    public void setState(String state) {
        this.state = state;
    }
 
    public Integer getTransferAmount() {
        return transferAmount;
    }
 
    public void setTransferAmount(Integer transferAmount) {
        this.transferAmount = transferAmount;
    }
 
    public String getTransferRemark() {
        return transferRemark;
    }
 
    public void setTransferRemark(String transferRemark) {
        this.transferRemark = transferRemark;
    }
 
    public String getFailReason() {
        return failReason;
    }
 
    public void setFailReason(String failReason) {
        this.failReason = failReason;
    }
 
    public String getOpenid() {
        return openid;
    }
 
    public void setOpenid(String openid) {
        this.openid = openid;
    }
 
    public String getUserName() {
        return userName;
    }
 
    public void setUserName(String userName) {
        this.userName = userName;
    }
 
    public String getCreateTime() {
        return createTime;
    }
 
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
 
    public String getUpdateTime() {
        return updateTime;
    }
 
    public void setUpdateTime(String updateTime) {
        this.updateTime = updateTime;
    }
 
    @Override
    public boolean equals(Object o) {
        if (o == null || getClass() != o.getClass()) return false;
        TransferDetailEntityNew that = (TransferDetailEntityNew) o;
        return Objects.equals(mchId, that.mchId) && Objects.equals(outBillNo, that.outBillNo) && Objects.equals(transferBillNo, that.transferBillNo) && Objects.equals(appid, that.appid) && Objects.equals(state, that.state) && Objects.equals(transferAmount, that.transferAmount) && Objects.equals(transferRemark, that.transferRemark) && Objects.equals(failReason, that.failReason) && Objects.equals(openid, that.openid) && Objects.equals(userName, that.userName) && Objects.equals(createTime, that.createTime) && Objects.equals(updateTime, that.updateTime);
    }
 
    @Override
    public int hashCode() {
        return Objects.hash(mchId, outBillNo, transferBillNo, appid, state, transferAmount, transferRemark, failReason, openid, userName, createTime, updateTime);
    }
 
    @Override
    public String toString() {
        return "TransferDetailEntityNew{" +
                "mchId='" + mchId + '\'' +
                ", outBillNo='" + outBillNo + '\'' +
                ", transferBillNo='" + transferBillNo + '\'' +
                ", appid='" + appid + '\'' +
                ", state='" + state + '\'' +
                ", transferAmount=" + transferAmount +
                ", transferRemark='" + transferRemark + '\'' +
                ", failReason='" + failReason + '\'' +
                ", openid='" + openid + '\'' +
                ", userName='" + userName + '\'' +
                ", createTime='" + createTime + '\'' +
                ", updateTime='" + updateTime + '\'' +
                '}';
    }
 
    public TransferDetailEntityNew cloneWithCipher(PrivacyDecryptor encryptor) {
        TransferDetailEntityNew copy = new TransferDetailEntityNew();
        copy.mchId = mchId;
        copy.outBillNo = outBillNo;
        copy.transferBillNo = transferBillNo;
        copy.appid = appid;
        copy.state = state;
        copy.transferAmount = transferAmount;
        copy.transferRemark = transferRemark;
        copy.failReason = failReason;
        copy.openid = openid;
        if (userName != null && !userName.isEmpty()) {
            copy.userName = encryptor.decrypt(userName);
        }
        copy.createTime = createTime;
        copy.updateTime = updateTime;
        return copy;
    }
}