package org.jeecg.modules.pay.entity;

import lombok.Data;
import lombok.experimental.Accessors;
import org.jeecg.modules.pay.config.WechatConstants;

import java.io.Serializable;

@Data
@Accessors(chain = true)
public class ReceiverAddForm implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 【子商户号】微信支付分配的子商户号，即分账的出资商户号。（直连商户不需要，服务商需要）
     */
    private String sub_mchid;
    /**
     * 【公众账号ID】微信分配的公众账号ID
     */
    private String appid = WechatConstants.WECHAT_SP_APPID;
    /**
     * 【子商户公众账号ID】子商户的公众账号ID，分账接收方类型包含PERSONAL_SUB_OPENID时必填。（直连商户不需要，服务商需要）
     */
    private String sub_appid;
    /**
     * 【接收方类型】枚举值：
     * MERCHANT_ID：商户ID
     * PERSONAL_OPENID：个人openid（由父商户APPID转换得到）
     * PERSONAL_SUB_OPENID：个人sub_openid（由子商户APPID转换得到）
     */
    private String type = "MERCHANT_ID";
    /**
     * 【接收方账号】类型是MERCHANT_ID时，是商户号
     * 类型是PERSONAL_OPENID时，是个人openid
     * 类型是PERSONAL_SUB_OPENID时，是个人sub_openid
     */
    private String account;
    /**
     * 【分账接收方全称】分账接收方类型是MERCHANT_ID时，是商户全称（必传），当商户是小微商户或个体户时，是开户人姓名
     * 分账接收方类型是PERSONAL_OPENID时，是个人姓名（选传，传则校验）
     * 分账接收方类型是PERSONAL_SUB_OPENID时，是个人姓名（选传，传则校验）
     * 1、此字段需要使用微信支付公钥加密（推荐），请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引，也可以使用微信支付平台证书公钥加密，参考获取平台证书序列号、平台证书加密敏感信息指引
     * 2、使用微信支付平台证书中的公钥
     * 3、使用RSAES-OAEP算法进行加密
     * 4、将请求中HTTP头部的Wechatpay-Serial设置为证书序列号
     */
    private String name;
    /**
     * 【与分账方的关系类型】子商户与接收方的关系。
     * 本字段值为枚举：
     * SERVICE_PROVIDER：服务商
     * STORE：门店
     * STAFF：员工
     * STORE_OWNER：店主
     * PARTNER：合作伙伴
     * HEADQUARTER：总部
     * BRAND：品牌方
     * DISTRIBUTOR：分销商
     * USER：用户
     * SUPPLIER：供应商
     * CUSTOM：自定义
     */
    private String relation_type = "CUSTOM";
    /**
     * 【自定义的分账关系】子商户与接收方具体的关系，本字段最多10个字。
     * 当字段relation_type的值为CUSTOM时，本字段必填
     * 当字段relation_type的值不为CUSTOM时，本字段无需填写
     */
    private String custom_relation = "自定义商户";
}
