add
yj
2024-12-05 b9900893177c78fc559223521fe839aa21000017
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
package com.dobbinsoft.fw.pay.model.request;
 
import com.dobbinsoft.fw.pay.enums.PayChannelType;
import com.dobbinsoft.fw.pay.enums.PayPlatformType;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 
import java.io.Serializable;
import java.math.BigDecimal;
 
/**
 * <pre>
 *  微信支付请求对象共用的参数存放类
 * </pre>
 */
@Data
public abstract class MatrixBasePayRequest implements Serializable {
 
    private static final long serialVersionUID = -7550724004813511502L;
    /**
     * 支付渠道
     */
    private PayChannelType payChannel;
 
    /**
     * 支付平台
     */
    private PayPlatformType payPlatform;
 
    /**
     * <pre>
     * 字段名:公众账号ID.
     * 变量名:appid
     * 是否必填:是
     * 类型:String(32)
     * 示例值:wxd678efh567hg6787
     * 描述:微信分配的公众账号ID(企业号corpid即为此appId)
     * </pre>
     */
    private String appid;
    /**
     * <pre>
     * 字段名:商户号.
     * 变量名:mch_id
     * 是否必填:是
     * 类型:String(32)
     * 示例值:1230000109
     * 描述:微信支付分配的商户号
     * </pre>
     */
    private String mchId;
    /**
     * <pre>
     * 字段名:服务商模式下的子商户公众账号ID.
     * 变量名:sub_appid
     * 是否必填:是
     * 类型:String(32)
     * 示例值:wxd678efh567hg6787
     * 描述:微信分配的子商户公众账号ID
     * </pre>
     */
    private String subAppId;
    /**
     * <pre>
     * 字段名:服务商模式下的子商户号.
     * 变量名:sub_mch_id
     * 是否必填:是
     * 类型:String(32)
     * 示例值:1230000109
     * 描述:微信支付分配的子商户号,开发者模式下必填
     * </pre>
     */
    private String subMchId;
    /**
     * <pre>
     * 字段名:随机字符串.
     * 变量名:nonce_str
     * 是否必填:是
     * 类型:String(32)
     * 示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS
     * 描述:随机字符串,不长于32位。推荐随机数生成算法
     * </pre>
     */
    private String nonceStr;
    /**
     * <pre>
     * 字段名:签名.
     * 变量名:sign
     * 是否必填:是
     * 类型:String(32)
     * 示例值:C380BEC2BFD727A4B6845133519F3AD6
     * 描述:签名,详见签名生成算法
     * </pre>
     */
    private String sign;
 
    /**
     * <pre>
     * 签名类型.
     * sign_type
     * 否
     * String(32)
     * HMAC-SHA256
     * 签名类型,目前支持HMAC-SHA256和MD5
     * </pre>
     */
    private String signType;
 
    /**
     * 将单位为元转换为单位为分.
     *
     * @param yuan 将要转换的元的数值字符串
     * @return the integer
     */
    public static Integer yuanToFen(String yuan) {
        return new BigDecimal(yuan).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue();
    }
 
 
    /**
     * 如果配置中已经设置,可以不设置值.
     *
     * @param appid 微信公众号appid
     */
    public void setAppid(String appid) {
        this.appid = appid;
    }
 
    /**
     * 如果配置中已经设置,可以不设置值.
     *
     * @param mchId 微信商户号
     */
    public void setMchId(String mchId) {
        this.mchId = mchId;
    }
 
    /**
     * 默认采用时间戳为随机字符串,可以不设置.
     *
     * @param nonceStr 随机字符串
     */
    public void setNonceStr(String nonceStr) {
        this.nonceStr = nonceStr;
    }
 
    @Override
    public String toString() {
        return WxGsonBuilder.create().toJson(this);
    }
 
}