package com.jeequan.jeepay.core.model.params.dgpay;

import com.alibaba.fastjson.JSON;
import com.jeequan.jeepay.core.annotate.ChannelMchId;
import com.jeequan.jeepay.core.constants.ChannelMchIdTypeEnum;
import com.jeequan.jeepay.core.model.params.IsvParams;
import com.jeequan.jeepay.core.utils.StringKit;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.StringUtils;

/**
 * 汇付 斗拱 配置信息
 *
 * @author xiaoyu
 *
 * @date 2022/6/6 10:31
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class DgpayIsvParams extends IsvParams {

    /** 支付场景类型  1.线下，2.线上 **/
    private String payScene;

    /** 商户手取现类型 0-关闭 T1-下工作日 D1-下自然日 D0-当日 **/
    private String mchSettManual;

    /** 商户取现费率 % **/
    private String cashFee;

    /** 结算 D1-下自然日 T1-下工作日 **/
    private String settleCycle;

    /** 结算D1费率 % **/
    private String settleFee;

    /** 系统号 **/
    @ChannelMchId(type = ChannelMchIdTypeEnum.ISV_NO)
    private String sysId;

    /** 产品ID PAYUN、EDUSTD **/
    private String productId;

    /** 微信开通意愿二维码url */
    private String wxOpenUrl;

    /** 支付宝开通意愿二维码url */
    private String aliChannelExtUrl;

    /**
     * 汇付服务商渠道号，与微信支付宝渠道号无关
     */
    private String channelNo;

    /** 微信渠道号（汇付自定义，指定线上或线下支付场景时必填） */
    private String wxChannelNo;

    private String zfbChannelNo;

    /** 电子协议 协议模板号 */
    private String agreementModel;

    /** 电子协议 协议模板名称 */
    private String agreementName;

    /** rsaPrivateKey **/
    private String rsaPrivateKey;

    /** publicKey 汇付公钥 **/
    private String rsaPublicKey;

    /** posPrivateKey 终端秘钥 **/
    private String webhookPrivateKey;

    /** 智能POS公钥 **/
    private String posPublicKey;

    @Override
    public String deSenData() {

        DgpayIsvParams isvParams = this;
        if (StringUtils.isNotBlank(isvParams.rsaPrivateKey)) {
            isvParams.setRsaPrivateKey(StringKit.autoDesensitization(isvParams.rsaPrivateKey));
        }
        if (StringUtils.isNotBlank(isvParams.rsaPublicKey)) {
            isvParams.setRsaPublicKey(StringKit.autoDesensitization(isvParams.rsaPublicKey));
        }
        if (StringUtils.isNotBlank(isvParams.webhookPrivateKey)) {
            isvParams.setWebhookPrivateKey(StringKit.autoDesensitization(isvParams.webhookPrivateKey));
        }
        if (StringUtils.isNotBlank(isvParams.posPublicKey)) {
            isvParams.setPosPublicKey(StringKit.autoDesensitization(isvParams.posPublicKey));
        }

        return JSON.toJSONString(isvParams);
    }

}
