xiaoyong931011
2022-09-24 3e0c2e4de5415cfa1bab063044ef6d1235f50f6e
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
package cc.mrbird.febs.pay.model;
 
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.pay.util.RandomStringGenerator;
import cc.mrbird.febs.pay.util.Signature;
 
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
 
public class BrandWCPayRequestData {
 
    //每个字段具体的意思请查看API文档
    private String appId = "";
    private String timeStamp = "";
    private String nonceStr = "";
    private String prepay_id = "";
    private String signType = "";
    private String paySign = "";
 
    public BrandWCPayRequestData(String prepay_id, String appID, String paySecret){
        //默认必须设置
        setAppId(appID);
        //随机字符串,不长于32 位
        setNonceStr(RandomStringGenerator.getRandomStringByLength(32));
        setTimeStamp(Long.toString(System.currentTimeMillis() / 1000L));
        setPrepay_id("prepay_id="+prepay_id);
        //根据API给的签名规则进行签名 【 必须要放在本方法的最后】
        setSignType(AppContants.SIGN_MD5);
        String sign = Signature.getSign(toMap(),paySecret);
        setPaySign(sign);//把签名数据设置到Sign这个属性中
    }
 
    public String getAppId() {
        return appId;
    }
 
 
    public void setAppId(String appId) {
        this.appId = appId;
    }
 
 
    public String getTimeStamp() {
        return timeStamp;
    }
 
 
    public void setTimeStamp(String timeStamp) {
        this.timeStamp = timeStamp;
    }
 
 
    public String getNonceStr() {
        return nonceStr;
    }
 
 
    public void setNonceStr(String nonceStr) {
        this.nonceStr = nonceStr;
    }
 
 
    public String getPrepay_id() {
        return prepay_id;
    }
 
 
    public void setPrepay_id(String prepay_id) {
        this.prepay_id = prepay_id;
    }
 
 
    public String getSignType() {
        return signType;
    }
 
 
    public void setSignType(String signType) {
        this.signType = signType;
    }
 
 
    public String getPaySign() {
        return paySign;
    }
 
 
    public void setPaySign(String paySign) {
        this.paySign = paySign;
    }
 
 
    public Map<String,Object> toMap(){
        Map<String,Object> map = new HashMap<String, Object>();
        Field[] fields = this.getClass().getDeclaredFields();
        for (Field field : fields) {
            Object obj;
            try {
                obj = field.get(this);
                if(obj!=null){
                    if(field.getName().equals("prepay_id")){
                        map.put("package", obj);
                    }else{
                        map.put(field.getName(), obj);
                    }
                }
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return map;
    }
 
}