package lakala

const (
	OrderTestUrl = "https://test.wsmsd.cn/sit/api/v3/" // 收银订单创建测试地址
	OrderProdUrl = "https://s2.lakala.com/api/v3"      // 收银订单创建正式地址

	CrateOrderActive           = "ccss/counter/order/special_create" // 创建订单
	CloseOrderActive           = "ccss/counter/order/close"          // 订单关单
	QueryOrderActive           = "ccss/counter/order/query"          // 订单查询
	OrderRefundActive          = "lams/trade/trade_refund"           // 订单统一退货
	OrderRefundQueryActive     = "lams/trade/trade_refund_query"     // 订单统一退货查询
	OrderEcApplyActive         = "mms/open_api/ec/apply"             // 电子合同申请
	OrderEcApplyStatusActive   = "mms/open_api/ec/qma_status"        // 人工复合结果查询
	OrderEcApplyByPeopleActive = "mms/open_api/ec/apply_manual"      // 申请人工审核
	OrderEcQuery               = "mms/open_api/ec/q_status"          // 电子合同查询

)

const (
	OrderCloseStatusWaitPay    = "0"
	OrderCloseStatusPaying     = "1"
	OrderCloseStatusPaySuccess = "2"
	OrderCloseStatusPayFail    = "3"
	OrderCloseStatusExpire     = "4"
	OrderCloseStatusCancel     = "5"
	OrderCloseStatusRefund     = "6"
	OrderCloseStatusClose      = "7"
)

// CreateOrderReq 拉卡拉创建支付订单
type CreateOrderReq struct {
	OutOrderNo           string              `json:"out_order_no"`            // M	String	32	商户订单号	12345678
	MerchantNo           string              `json:"merchant_no"`             // M	String	32	银联商户号	822100041120005
	TotalAmount          int64               `json:"total_amount"`            // M	long	12	订单金额，单位：分	200
	OrderEfficientTime   string              `json:"order_efficient_time"`    // M	String	14	订单有效期 格式yyyyMMddHHmmss,最大支持下单时间+7天	20210803141700
	OrderInfo            string              `json:"order_info"`              // M	String	64	订单标题，在使用收银台扫码支付时必输入，交易时送往账户端
	VposId               string              `json:"vpos_id"`                 // C	String	32	交易设备标识，进件返回接口中的termId字段，非API接口进件请联系业务员。	462621830268882944
	ChannelId            string              `json:"channel_id"`              // C	String	32	渠道号 （一般不用）	24865454154
	NotifyUrl            string              `json:"notify_url"`              // C	String	128	订单支付成功后商户接收订单通知的地址 http://xxx.xxx.com
	SupportCancel        int                 `json:"support_cancel"`          // C	int	1	是否支持撤销 默认 0 不支持 busi_mode为“PAY-付款”不支持 撤销	（0 不支持 1支持）
	SupportRefund        int                 `json:"support_refund"`          // C	int	1	是否支持退款 默认0 不支持	（0 不支持 1支持）
	SupportRepeatPay     int                 `json:"support_repeat_pay"`      // C	int	1	是否支持“多次发起支付” 默认0 不支持	（0 不支持 1支持）
	OutUserId            string              `json:"out_user_id"`             // C	String	64	发起订单方的userId，归属于channelId下的userId
	CallbackUrl          string              `json:"callback_url"`            // C	String	128	客户端下单完成支付后返回的商户网页跳转地址。
	TermNo               string              `json:"term_no"`                 // C	String	32	结算终端号,合单场景必输该字段
	SplitMark            string              `json:"split_mark"`              // C	String	2	合单标识，“1”为合单，不填默认是为非合单
	SettleType           string              `json:"settle_type"`             // C	String	4	结算类型（非合单） （“0”或者空，常规结算方式） 注意：该字段会影响结算方式，慎用。（调用拉卡拉分账接口需必传1）
	OutSplitInfo         []OutSplitInfoObj   `json:"out_split_info"`          // C	List<> 拆单信息合单标识为“1”时必传该字段。,详细字段见out_split_info字段说明
	CounterParam         string              `json:"counter_param"`           // C	String	1024	json字符串 收银台展示参数	{\“pay_mode\“ : \“ALIPAY\“} ，指定支付方式为支付宝  ALIPAY：支付宝 WECHAT：微信 UNION：银联云闪付 CARD：POS刷卡交易 LKLAT：线上转帐 QUICK_PAY：快捷支付 EBANK：网银支付 UNION_CC：银联支付 BESTPAY：翼支付 HB_FQ：花呗分期 UNION_FQ：银联聚分期 ONLINE_CARDLESS：线上外卡若要指定支付方式为支付宝传参格式：{\“pay_mode\“ : \“ALIPAY\“}
	CounterRemark        string              `json:"counter_remark"`          // C	String	128	收银台备注
	BusiTypeParam        string              `json:"busi_type_param"`         // C	String	256	业务类型控制参数，jsonStr格式	[{\“busi_type\“:\“UPCARD\“,\“params\“:{\“crd_flg\“:\“CRDFLG_D|CRDFLG_C|CRDFLG_OTH\“}},{\“busi_type\“:\“SCPAY\“,\“params\“:{\“pay_mode\“:\“ALIPAY\“,\“crd_flg\“:\“CRDFLG_D\“}}] 说明：UPCARD-刷卡，SCPAY-扫码，CRDFLG_D-借记卡，CRDFLG_C-贷记卡，CRDFLG_OTH-不明确是借记卡还是贷记卡pay_mode送参说明：ALIPAY-支付宝，WECHAT-微信，UNION-银联二维码，DCPAY-数字货币，BESTPAY-翼支付说明：一旦使用该字段，则增加限制，必须在指定限制范围内支付。比如，只配置”busi_type”:”UPCARD”的参数而不配置”busi_type”:”SCPAY”的参数，则只能通过刷卡而不能通过扫码完成支付
	SgnInfo              []string            `json:"sgn_info"`                // C	list<> 签约协议号列表（字符串）	[“1234”,”2345”]，不支持空列表[]；列表中签约协议号不能为空；列表中签约协议号不能重复
	ProductId            string              `json:"product_id"`              // C	String	6	指定产品编号 （200809:线上外卡收银台） 注意：该字段默认不需要指定，特殊场景下使用，慎用
	GoodsMark            string              `json:"goods_mark"`              // C	String 商品信息标识 （1:含商品信息，不填默认不含商品信息）
	GoodsField           string              `json:"goods_field"`             // C	String	2	商品信息域(good_mark送1时该域必填，否则不送。只有线上外卡业务上送该字段) 详细字段见goods_field字段说明
	OrderSceneField      *OrderSceneFieldObj `json:"order_scene_field"`       // C	Object 2	订单场景域，特殊场景下需要上送 详细字段见order_scene_field字段说明
	AgeLimit             string              `json:"age_limit"`               // C	String	1	0:不限年龄；1:年龄限制
	RepeatPayAutoRefund  string              `json:"repeat_pay_auto_refund"`  // C	String	1 0:重复支付后不自动退货；1:重复支付后自动退货 （默认不送为0），注意：请详细了解字段场景后上送 需注意互斥条件：repeat_pay_auto_refund选择“1”重复支付后自动退货后，repeat_pay_notify仅支持选择“0”重复支付订单不通知
	RepeatPayNotify      string              `json:"repeat_pay_notify"`       // C	String	1	0:重复支付订单不通知；1:重复支付订单通知 （默认不送为0）
	CloseOrderAutoRefund string              `json:"close_order_auto_refund"` // C	String	1	0:不自动退货；1:关闭订单后支付成功触发自动退货 （默认不送为0）注意：请详细了解字段场景后上送
	ShopName             string              `json:"shop_name"`               // C	String	64	网点名称
	InteRouting          string              `json:"inte_routing"`            // C	String	2	智能路由下单标识 1-是 0-否（默认不送为0）备注：需要在收银台管控台配置聚合收银台小程序白名单
	DiscountCode         string              `json:"discount_code"`           // C	String	64	优惠码(目前供线上国补下单使用)
}

type OutSplitInfoObj struct {
	OutSubOrderNo string `json:"out_sub_order_no"` // 外部子订单号	M	String(32)	商户子订单号
	MerchantNo    string `json:"merchant_no"`      // 商户号	M	String(32)	拉卡拉分配的银联商户号
	TermNo        string `json:"term_no"`          // 终端号	M	String(32)	拉卡拉分配的业务终端号
	Amount        string `json:"amount"`           // 金额	M	String(12)	单位分，整数型字符
	SettleType    string `json:"settle_type"`      // 结算类型（合单）	C	String(4)	“0”或者空，常规结算方式
}

type OrderSceneFieldObj struct {
	OrderSceneType string `json:"order_scene_type"` // 订单场景类型	M	String(16)	订单场景类型（按下述定义场景送值）HB_FQ：花呗分期场景KL_FQ：考拉分期场景
	SceneInfo      string `json:"scene_info"`       // 订单场景信息	C	String(1024)	订单场景信息（json字符串格式），不同的订单场景类型需要上送的结构不一样（详见具体场景）
}

// CreateOrderResp 创建订单返回参数
type CreateOrderResp struct {
	MerchantNo         string `json:"merchant_no"`
	ChannelId          string `json:"channel_id"`
	OutOrderNo         string `json:"out_order_no"`
	OrderCreateTime    string `json:"order_create_time"`
	OrderEfficientTime string `json:"order_efficient_time"`
	PayOrderNo         string `json:"pay_order_no"`
	CounterUrl         string `json:"counter_url"`
}

// CloseOrderReq 订单关单参数, 要么传out_order_no，要么传pay_order_no
type CloseOrderReq struct {
	MerchantNo string `json:"merchant_no"`  // M	String	32	商户号	822100041120005
	OutOrderNo string `json:"out_order_no"` // C	String	32	商户订单号	12345678
	PayOrderNo string `json:"pay_order_no"` // C	String	64	支付订单号	21070211012001970631000383039
	ChannelId  string `json:"channel_id"`   // C	String	32	渠道号	10
}

// QueryOrderResp 查询订单详情
type QueryOrderResp struct {
	PayOrderNo         string                  `json:"pay_order_no"`          // M	String	64	支付订单号	21070211012001970631000383039
	OutOrderNo         string                  `json:"out_order_no"`          // M	String	32	商户订单号	12345678
	ChannelId          string                  `json:"channel_id"`            // M	String	32	渠道号
	TransMerchantNo    string                  `json:"trans_merchant_no"`     // C	String	32	交易商户号
	TransTermNo        string                  `json:"trans_term_no"`         // C	String	16	交易终端号
	MerchantNo         string                  `json:"merchant_no"`           // M	String	32	结算商户号（合单订单中该结算商户号为主单名义上结算商户号）	822126090640003
	TermNo             string                  `json:"term_no"`               // M	String	16	结算终端号（合单订单中该结算商户号为主单名义上结算终端号）
	OrderStatus        string                  `json:"order_status"`          // M	String	2	订单状态	0:待支付 1:支付中 2:支付成功 3:支付失败 4:已过期 5:已取消 6:部分退款或者全部退款 7:订单已关闭枚举
	OrderInfo          string                  `json:"order_info"`            // C	String	100	订单描述
	TotalAmount        int64                   `json:"total_amount"`          // M	long	12	订单金额，单位：分	200
	OrderCreateTime    string                  `json:"order_create_time"`     // M	String	14	订单创建时间	格式yyyyMMddHHmmss
	OrderEfficientTime string                  `json:"order_efficient_time"`  // M	String	14	订单有效时间	格式yyyyMMddHHmmss
	SettleType         string                  `json:"settle_type"`           // C	String	4	结算类型（非合单） （“0”或者空，常规结算方式）
	SplitMark          string                  `json:"split_mark"`            // C	String	2	合单标识	“1”为合单，不填默认是为非拆单
	CounterParam       string                  `json:"counter_param"`         // C	String	1024	json字符串 收银台参数	{\“pay_mode\“ : \“ALIPAY\“} ，指定支付方式为支付宝
	CounterRemark      string                  `json:"counter_remark"`        // C	String	128	收银台备注
	BusiTypeParam      string                  `json:"busi_type_param"`       // C	String	256	业务类型控制参数，jsonStr格式	[{\“busi_type\“:\“UPCARD\“,\“params\“:{\“crd_flg\“:\“CRDFLG_D|CRDFLG_C|CRDFLG_OTH\“}},{\“busi_type\“:\“SCPAY\“,\“params\“:{\“crd_flg\“:\“CRDFLG_D\“}}]说明：UPCARD-刷卡，SCPAY-扫码，CRDFLG_D-借记卡，CRDFLG_C-贷记卡，CRDFLG_OTH-不明确是借记卡还是贷记卡说明：一旦使用该字段，则增加限制，必须在指定限制范围内支付。比如，只配置”busi_type”:”UPCARD”的参数而不配置”busi_type”:”SCPAY”的参数，则只能通过刷卡而不能通过扫码完成支付
	OutSplitInfo       []OutSplitInfoObj       `json:"out_split_info"`        // C	List<>商户拆单信息,	详细字段见out_split_info字段说明
	SplitInfo          []SplitInfoObj          `json:"split_info"`            // C	List<交易拆单信息	详细字段见split_info字段说明
	SgnInfo            []string                `json:"sgn_info"`              // C	list<>签约协议号列表	[“1234”,”2345”]
	GoodsMark          string                  `json:"goods_mark"`            // C	String	2	商品标识
	GoodsField         string                  `json:"goods_field"`           // C	String	2048	商品信息
	OrderTradeInfoList []OrderTradeInfoListObj `json:"order_trade_info_list"` // M	List<>订单交易信息列表	list单元为Object，Object对象包含如下字段 ，按交易完成时间逆序排列
}

type SplitInfoObj struct {
	SubTradeNo    string `json:"sub_trade_no"`     // 子单交易流水号	M	String(32)	子单交易流水号
	SubLogNo      string `json:"sub_log_no"`       // 子单对账单流水号	M	String(14)	子单对账单流水号
	OutSubOrderNo string `json:"out_sub_order_no"` // 外部子订单号	M	String(32)	商户子订单号
	MerchantNo    string `json:"merchant_no"`      // 商户号	M	String(32)	拉卡拉分配的银联商户号
	TermNo        string `json:"term_no"`          // 终端号	M	String(32)	拉卡拉分配的业务终端号
	Amount        string `json:"amount"`           // 金额	M	String(12)	单位分，整数型字符
}

type OrderTradeInfoListObj struct {
	TradeNo          string `json:"trade_no"`           // M	String	32	交易流水号	2021070266210002570007或者 21080302570007
	LogNo            string `json:"log_no"`             // M	String	14	对账单流水号	66210002570007或者 21080302570007
	TradeRefNo       string `json:"trade_ref_no"`       // M	String	12	交易参考号	080302570007,仅busi_type为UPCARD时返回
	TradeType        string `json:"trade_type"`         // M	String	16	交易类型	PAY-消费 REFUND-退款 CANCEL-撤销
	TradeStatus      string `json:"trade_status"`       // M	String	2	支付状态	返回状态 S:成功 F:失败 C:被冲正 U:预记状态 X:发送失败 T: 发送超时 P: 处理中
	TradeAmount      int64  `json:"trade_amount"`       // M	long	12	交易金额，单位：分	200
	PayerAmount      int64  `json:"payer_amount"`       // M	long	12	付款人实际支付金额，单位：分
	UserId1          string `json:"user_id1"`           // C	String	64	用户标识1	微信sub_open_id 支付宝buyer_logon_id（买家支付宝账号）
	UserId2          string `json:"user_id2"`           // C	String	64	用户标识2	微信openId 支付宝buyer_user_id 银联user_id
	BusiType         string `json:"busi_type"`          // M	String	16	支付业务类型：UPCARD-银行卡SCPAY-扫码支付DCPAY-数币支付ONLINE-线上支付
	TradeTime        string `json:"trade_time"`         // C	String	14	交易完时间	格式yyyyMMddHHmmss
	AccTradeNo       string `json:"acc_trade_no"`       // C	String	32	付款受理交易流水号	支付宝流水号、微信流水号
	PayerAccountNo   string `json:"payer_account_no"`   // C	String	32	付款人账号
	PayerName        string `json:"payer_name"`         // C	String	32	付款人名称（仅ONLINE交易返回）
	PayerAccountBank string `json:"payer_account_bank"` // C	String	32	付款账号开户行
	AccType          string `json:"acc_type"`           // C	String	2	账户类型	busi_type为UPCARD时返回：00-借记卡,01-贷记卡,02-准贷记卡,03-预付卡busi_type为SCPAY时返回：00：不确定,02-微信零钱,03-支付宝花呗,04-支付宝钱包,99-未知
	PayMode          string `json:"pay_mode"`           // C	String	2	付款方式	busi_type为SCPAY时返回：UQRCODEPAY-银联、WECHAT-微信、ALIPAY-支付宝
	ClientBatchNo    string `json:"client_batch_no"`    // C	String	6	终端批次号	刷卡交易终端批次号，只有busi_type为UPCARD时返回
	ClientSeqNo      string `json:"client_seq_no"`      // C	String	6	终端流水号	刷卡交易终端流水号，只有busi_type为UPCARD时返回
	SettleMerchantNo string `json:"settle_merchant_no"` // C	String	32	结算商户号
	SettleTermNo     string `json:"settle_term_no"`     // C	String	16	结算终端号
	OriginTradeNo    string `json:"origin_trade_no"`    // C	String	32	原交易流水号(扫码交易的退款场景中，对应原交易流水号)	2021070266210002570007
	AuthCode         string `json:"auth_code"`          // C	String	64	快捷签约协议号
	BankType         string `json:"bank_type"`          // C	String	64	付款银行
	ResultDescstring string `json:"result_descstring"`  // （待上线）	C	String	32	交易结果描述
}

// RefundOrderReq 统一退单请求接口
type RefundOrderReq struct {
	MerchantNo      string        `json:"merchant_no"`       // 商户号    是    String(32)    拉卡拉分配的商户号
	TermNo          string        `json:"term_no"`           // 终端号    是    String(32)    拉卡拉分配的终端号
	OutTradeNo      string        `json:"out_trade_no"`      // 商户请求流水号    是    String(32)    商户系统唯一
	RefundAmount    string        `json:"refund_amount"`     // 退款金额    是    String(12)    单位分，整数数字型字符
	OriginBizType   string        `json:"origin_biz_type"`   // 原业务类型    是    String(1)    原交易类型:1 银行卡，2 外卡，3 扫码，4 线上
	OriginTradeDate string        `json:"origin_trade_date"` // 原交易日期    是 String(8)    原交易日期：yyyyMMdd
	OriginLogNo     string        `json:"origin_log_no"`     // 拉卡拉对账单流水号    否    String(14)    正交易返回的拉卡拉对账单流水号
	OriginTradeNo   string        `json:"origin_trade_no"`   // 原交易拉卡拉交易订单号    否    String(32)    下单成功时，返回的扫码系统生成的送往账户方的交易流水号，在微信或支付宝交易信息界面显示为商户订单号；origin_log_no和origin_trade_no任填其一
	OriginCardNo    string        `json:"origin_card_no"`    // 原交易银行卡号    否    String(32)    原交易银行卡号，银行卡退款必填，如无完整卡号可送交易通知时的脱敏卡号如6226****8223
	LocationInfo    *LocationInfo `json:"location_info"`     // 地址位置信息    否    Object    地址位置信息
	RefundType      string        `json:"refund_type"`       // 退款模式    否    String(2)    当商户进件时退货模式配置的为 指定模式退货时，该字段有效。00：退货帐户, 05：商户余额退货, 06：终端余额退货
}

// LocationInfo 地址信息
type LocationInfo struct {
	RequestIp   string `json:"request_ip"`   // 请求方IP地址	M	String(64)	请求方的IP地址，存在必填，格式如36.45.36.95
	BaseStation string `json:"base_station"` // 基站信息	C	String(128)	客户端设备的基站信息（主扫时基站信息使用该字段）
	Location    string `json:"location"`     // 维度, 经度    C    String(32)    商户终端的地理位置，存在必填 格式：纬度, 经度，+表示北纬、东经，-表示南纬、 西经，精度最长支持小数点后9位。举例:+37.123456789, -121.123456789
}

// RefundOrderResp 统一退单响应
type RefundOrderResp struct {
	LogNo            string      `json:"log_no"`              // 拉卡拉退款单号
	TradeTime        string      `json:"trade_time"`          // 平台交易时间
	OutTradeNo       string      `json:"out_trade_no"`        // out_trade_no
	TotalAmount      string      `json:"total_amount"`        // 交易金额
	PayerAmount      string      `json:"payer_amount"`        // 实际退款金额
	RefundAmount     string      `json:"refund_amount"`       // 申请退款金额
	AccTradeNo       interface{} `json:"acc_trade_no"`        // 账户端交易订单号
	OriginLogNo      interface{} `json:"origin_log_no"`       // 原拉卡拉统一交易单号
	OriginTradeNo    string      `json:"origin_trade_no"`     // 原交易拉卡拉交易订单号
	OriginOutTradeNo string      `json:"origin_out_trade_no"` // 原商户请求流水号
}

// RefundOrderQueryReq 统一退货查询
type RefundOrderQueryReq struct {
	MerchantNo       string `json:"merchant_no"`         // 商户号    是    String(32)    拉卡拉分配的商户号
	TermNo           string `json:"term_no"`             // 终端号    是    String(32)    拉卡拉分配的终端号
	OutTradeNo       string `json:"out_trade_no"`        // 商户请求流水号    是    String(64)    商户系统唯一
	OriginTradeDate  string `json:"origin_trade_date"`   // 原交易日期    是    String(8)    原退货交易日期：yyyyMMdd 20200326，posp接口必填
	OriginBizType    string `json:"origin_biz_type"`     // 原业务类型    是    String(1)    原交易类型:1 银行卡，2 外卡，3 扫码，4 线上
	OriginTradeNo    string `json:"origin_trade_no"`     // 原交易拉卡拉交易订单号    否    String(32)    小票订单号、微信/支付宝商家订单号
	OriginTradeRefNo string `json:"origin_trade_ref_no"` // 系统参考号    否    String(12)    小票参考号
	OriginOutTradeNo string `json:"origin_out_trade_no"` // 退款请求流水号    否    String(32)    原退款交易商户请求流水号
}

// RefundOrderQueryResp 统一退货查询
type RefundOrderQueryResp struct {
	OutTradeNo         string      `json:"out_trade_no"`         // 商户请求流水号
	TradeTime          string      `json:"trade_time"`           // 交易时间
	TradeState         string      `json:"trade_state"`          // 交易状态
	TradeNo            string      `json:"trade_no"`             // 拉卡拉商户订单号
	LogNo              string      `json:"log_no"`               // 拉卡拉退款单号
	RefundAmount       string      `json:"refund_amount"`        // 交易金额
	PayMode            interface{} `json:"pay_mode"`             // 支付方式
	CrdNo              interface{} `json:"crd_no"`               // 卡号
	AccountType        string      `json:"account_type"`         // 钱包类型
	OpenId             string      `json:"open_id"`              // 用户标识
	SubOpenId          string      `json:"sub_open_id"`          // 用户子标识
	BankType           interface{} `json:"bank_type"`            // 付款银行
	PayerAmount        string      `json:"payer_amount"`         // 付款人实付金额
	AccSettleAmount    string      `json:"acc_settle_amount"`    // 账户端结算金额
	AccMdiscountAmount string      `json:"acc_mdiscount_amount"` // 商户侧优惠金额（账户端）
	AccDiscountAmount  string      `json:"acc_discount_amount"`  // 账户端优惠金额
}

// ApplyContractParam 合同申请参数
type ApplyContractParam struct {
	OrderNo             string `json:"order_no"`              // 四方机构自定义订单编号	M	String(32)	建议：平台编号+14位年月日时（24小时制）分秒+8位的随机数（同一接入机构不重复）
	OrgId               int    `json:"org_id"`                //	机构号	M	Integer	签约方所属拉卡拉机构
	EcTypeCode          string `json:"ec_type_code"`          // 合同类别	M	String(12)	EC001 : 特约商户支付服务合作协议V3.1(商户入网) PASSPORT（护照）；HK_MACAO_PASS（港澳居民往来内地通行证）；TAIWAN_PASS（台湾居民来往大陆通行证）；
	CertName            string `json:"cert_name"`             // 法人/经营者姓名    M    String(32)
	CertNo              string `json:"cert_no"`               // 法人/经营者证件号码    M    String(32)
	CertType            string `json:"cert_type"`             // 法人/经营者证件类型	    M    String(32)
	Mobile              string `json:"mobile"`                // 签约手机号    M    String(16)    1.小微个人商户（无营业执照），签约手机号必须填写商户经营者本人手机号；2.个体工商户或企业商户（有营业执照），签约手机号必须填写法人手机号或者经办人手机号 合同签署人手机号，请慎重填写，不可修改
	BusinessLicenseNo   string `json:"business_license_no"`   // 营业执照号    C    String(32)    个体工商户或企业商户 必传
	BusinessLicenseName string `json:"business_license_name"` // 营业执照名称    C    String(32)    个体工商户或企业商户 必传
	OpenningBankCode    string `json:"openning_bank_code"`    // 企业/经营者结算开户行号    M    String(32)
	OpenningBankName    string `json:"openning_bank_name"`    // 企业/经营者结算开户行名称    M    String(128)
	AcctTypeCode        string `json:"acct_type_code"`        // 企业/经营者结算卡性质    M    String(2)    57 对公、 58 对私
	AcctNo              string `json:"acct_no"`               // 企业/经营者结算卡号    M    String(32)
	AcctName            string `json:"acct_name"`             // 企业/经营者结算卡名称    M    String(64)    企业/经营者结算卡名称
	EcContentParameters string `json:"ec_content_parameters"` // 电子合同内容参数集合    M    JSONString    按合同类型（ecTypeCode）传递不同的参数集合，
	AgentTag            int    `json:"agent_tag"`             // 是否经办签约    C    Integer(1)    0 不启用 1启用 ； 缺省 0
	AgentName           string `json:"agent_name"`            // 经办人名称    C    String(32)    经办人名称（要与证件号对应）agentTag 为1时 必传
	AgentCertType       string `json:"agent_cert_type"`       // 经办人证件类型    C    String(32)    RESIDENT_ID（身份证）；PASSPORT（护照）；HK_MACAO_PASS（港澳居民往来内地通行证）；TAIWAN_PASS（台湾居民来往大陆通行证）；
	AgentCertNo         string `json:"agent_cert_no"`         // 经办人证件号    C    String(32)    agentTag 为1时 必传
	AgentFileName       string `json:"agent_file_name"`       // 经办签约授权委托书文件名    C    String(32)    agentTag 为1时 必传
	AgentFilePath       string `json:"agent_file_path"`       // 经办授权委托书文件路径    C    String(128)    agentTag 为1时 必传
	Remark              string `json:"remark"`                // 备注说明    C    String(128)    备注说明
	RetUrl              string `json:"ret_url"`               // 电子合同签约结果回调通知    C    String(128)    成功签约才通知
}

type ApplyContract struct {
	Code     string             `json:"code"`
	Msg      string             `json:"msg"`
	RespData *ApplyContractResp `json:"resp_data"`
}

// ApplyContractResp 签约响应参数
type ApplyContractResp struct {
	OrderNo   string `json:"order_no"`
	EcApplyId int64  `json:"ec_apply_id"`
	ResultUrl string `json:"result_url"`
}

// ApplyContractByPeople 电子合同申请人工复合
type ApplyContractByPeople struct {
	Version   string                  `json:"version"`
	OrderNo   string                  `json:"order_no"`    // 建议：平台编号+14位年月日时（24小时制）分秒+8位的随机数（同一接入机构不重复）
	OrgId     int                     `json:"org_id"`      // 签约方所属拉卡拉机构
	EcApplyId int64                   `json:"ec_apply_id"` // 申请接口反馈编号
	FileData  []ApplyContractFileType `json:"file_data"`   // 附件信息集合
	ApplyDesc string                  `json:"apply_desc"`  // 复议提交的原因说明
}

type ApplyContractFileType struct {
	AttachType      string `json:"attach_type"`
	AttachExtName   string `json:"attach_ext_name"`
	AttachName      string `json:"attach_name"`
	AttachStorePath string `json:"attach_store_path"`
}
