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 toMap(){ Map map = new HashMap(); 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; } }