liujie
2023-08-16 5cb1979f05446792cc33a8cb6b7aaae906da5a70
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/MallBook/model/InterfaceRequest.java
New file
@@ -0,0 +1,176 @@
/**
 *
 */
package com.stylefeng.guns.modular.system.util.MallBook.model;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.stylefeng.guns.modular.system.util.MallBook.config.ChannelConfig;
import com.stylefeng.guns.modular.system.util.MallBook.util.RSASignature;
import com.stylefeng.guns.modular.system.util.MallBook.util.StringUtil;
import java.io.Serializable;
/**
 * 接口请求包
 *
 */
public class InterfaceRequest<T> implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = -8130938432046696213L;
    /**
     * 商户平台编号
     */
    private String merchantNo = ChannelConfig.merchantNo;
    /**
     * 接口版本号,不同版本号触发不同接口业务
     */
    private String version = ChannelConfig.version;
    /*
     * 渠道类型  HF:汇付
     */
    private String channelType = ChannelConfig.channelType;
    /**
     * 业务系统订单ID
     */
    private String merOrderId;
    /**
     * 签名
     */
    private String sign;
    /**
     * 业务类型编号
     */
    private String serverCode;
    /**
     * 业务参数,json格式
     */
    private String params;
    /**
     * 时间戳
     */
    private String date;
    public String getChannelType() {
        return channelType;
    }
    public void setChannelType(String channelType) {
        this.channelType = channelType;
    }
    public String getMerOrderId() {
        return merOrderId;
    }
    public void setMerOrderId(String merOrderId) {
        this.merOrderId = merOrderId;
    }
    public String getMerchantNo() {
        return merchantNo;
    }
    public void setMerchantNo(String merchantNo) {
        this.merchantNo = merchantNo;
    }
    public String getSign() {
        return sign;
    }
    public void setSign(String sign) {
        this.sign = sign;
    }
    public String getServerCode() {
        return serverCode;
    }
    public void setServerCode(String serverCode) {
        this.serverCode = serverCode;
    }
    public String getParams() {
        return params;
    }
    public void setParams(String params) {
        this.params = params;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    /**
     * 签名顺序必须一致!!!
     * 签名顺序必须一致!!!
     * 签名顺序必须一致!!!
     *  订单号 + 商户号 + 渠道类型 +  时间戳 + 业务参数json
     * @return 待签名字符串
     */
    public String content() {
        return StrUtil.builder()
                .append(StringUtil.convertNull(merOrderId))
                .append(StringUtil.convertNull(merchantNo))
                .append(StringUtil.convertNull(channelType))
                .append(StringUtil.convertNull(date))
                .append(StringUtil.convertNull(params))
                .toString();
    }
    public InterfaceRequest() {
    }
    public InterfaceRequest(T obj, String serverCode) {
        this.merOrderId = IdUtil.fastSimpleUUID();
        this.serverCode = serverCode;
        this.date = System.currentTimeMillis() + "";
        this.params = JSONUtil.toJsonStr(obj);
        // todo 使用商户平台私钥生成sign,需要修改证书对应路径
        this.sign = RSASignature.sign(content());
    }
    @Override
    public String toString() {
        return "InterfaceRequest{" +
                "merOrderId='" + merOrderId + '\'' +
                ", merchantNo='" + merchantNo + '\'' +
                ", sign='" + sign + '\'' +
                ", serverCode='" + serverCode + '\'' +
                ", params='" + params + '\'' +
                ", date='" + date + '\'' +
                ", version='" + version + '\'' +
                ", channelType='" + channelType + '\'' +
                '}';
    }
}