package com.ruoyi.order.util.tencent.protocol; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import com.ruoyi.order.util.DateUtil; import com.ruoyi.order.util.tencent.common.RandomStringGenerator; import com.ruoyi.order.util.tencent.common.Signature; /** * 调起支付-API需要提交的数据 * @author pan */ public class AppPayReqData { //每个字段具体的意思请查看API文档 private String appid;//公众账号ID private String partnerid;//商户号 private String prepayid;//预支付编号(微信返回的支付交易会话ID) private String _package = "Sign=WXPay";//扩展字段(暂填写固定值Sign=WXPay) private String noncestr = RandomStringGenerator.getRandomStringByLength(32);//随机字符串 (32位) private String timestamp = DateUtil.nowDateLongStr().substring(0, 10);//时间戳 private String sign;//签名 /** * 调用微信支付 * @param appid 微信分配的APPID * @param partnerid 微信支付分配的商户号ID * @param prepayid 预支付编号(微信返回的支付交易会话ID) */ public AppPayReqData(Integer apptype, String appid, String partnerid, String prepayid, String noncestr){ //微信分配的APPID this.appid = appid; //微信支付接口与预支付接口随机字符串,保持一致! this.noncestr = noncestr; //微信支付分配的商户号ID this.partnerid = partnerid; //预支付编号(微信返回的支付交易会话ID) this.prepayid = prepayid; // 根据API给的签名规则进行签名 String sign = Signature.getSign(apptype, toMap()); setSign(sign);//微信公众号(最后参与签名的参数有appId, timeStamp, nonceStr, package, signType) } 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 ("_package".equals(field.getName())) { map.put("package", obj); }else{ map.put(field.getName(), obj); } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return map; } public String getAppid() { return appid; } public void setAppid(String appid) { this.appid = appid; } public String getPartnerid() { return partnerid; } public void setPartnerid(String partnerid) { this.partnerid = partnerid; } public String getPrepayid() { return prepayid; } public void setPrepayid(String prepayid) { this.prepayid = prepayid; } public String get_package() { return _package; } public void set_package(String _package) { this._package = _package; } public String getNoncestr() { return noncestr; } public void setNoncestr(String noncestr) { this.noncestr = noncestr; } public String getTimestamp() { return timestamp; } public void setTimestamp(String timestamp) { this.timestamp = timestamp; } public String getSign() { return sign; } public void setSign(String sign) { this.sign = sign; } }