package lakala

// ApplyContractCallBack 电子合同申请人工审核回调
type ApplyContractByPeopleCallBack struct {
	Code     string `json:"code"`
	Msg      string `json:"msg"`
	RespData struct {
		Version        string `json:"version"`
		OrderNo        string `json:"order_no"`
		OrgId          int    `json:"org_id"`
		EcApplyId      int64  `json:"ec_apply_id"`
		AuditStatus    string `json:"audit_status"`
		AuditDesc      string `json:"audit_desc"`
		SignH5Url      string `json:"sign_h5_url"`
		SignH5UrlExpTm string `json:"sign_h5_url_exp_tm"`
	} `json:"resp_data"`
}

// ApplyContractCallBack 电子合同申请回掉
type ApplyContractCallBack struct {
	AuditStatus string `json:"audit_status"`
	AuditDesc   string `json:"audit_desc"`
	EcApplyId   int64  `json:"ec_apply_id"`
	OrderNo     string `json:"order_no"`
	OrgId       int    `json:"org_id"`
	Returl      string `json:"ret_url"`
}

// SeparateCallback 商户分账创建/修改回调
type SeparateCallback struct {
	ApplyId          int64  `json:"applyId"`
	MerInnerNo       string `json:"merInnerNo"`
	MerCupNo         string `json:"merCupNo"`
	EntrustFileName  string `json:"entrustFileName"`
	AuditStatus      string `json:"auditStatus"`
	Remark           string `json:"remark"`
	AuditStatusText  string `json:"auditStatusText"`
	EntrustFilePath  string `json:"entrustFilePath"`
	RetUrl           string `json:"retUrl"`
	UploadAttachType string `json:"uploadAttachType"`
}

// SeparateBindCallback 分账关系绑定回调
type SeparateBindCallback struct {
	OptType         string `json:"optType"`         // 操作类型
	ApplyId         string `json:"applyId"`         // 申请编号
	MerCupNo        string `json:"merCupNo"`        // 商户号
	EntrustFileName string `json:"entrustFileName"` // 附件
	AuditStatus     string `json:"auditStatus"`     // 附件路径
	MerInnerNo      string `json:"merInnerNo"`      // 分账商户内部商户号
	ReceiverNo      string `json:"receiverNo"`      // 分账接收方编号
	Remark          string `json:"remark"`          // 备注
	AuditStatusText string `json:"auditStatusText"` // 审核状态
	EntrustFilePath string `json:"entrustFilePath"` // 附件路径
}

// SeparateResult 分账结果通知
type SeparateResult struct {
	SeparateNo    string `json:"separate_no"`     // 分账指令流水号
	OutSeparateNo string `json:"out_separate_no"` // 商户分账指令流水号
	CmdType       string `json:"cmd_type"`        // SEPARATE：分账 CANCEL：分账撤销FALLBACK：分账回退
	LogNo         string `json:"log_no"`          // 拉卡拉对账单流水号
	LogDate       string `json:"log_date"`        // 交易日期
	CalType       string `json:"cal_type"`        // 分账计算类型 0 按照指定金额。1 按照指定比例，默认 0
	SeparateType  string `json:"separate_type"`   // 分账接收类型 0 全部分账到商户本身。1 分账到多方，默认 1
	TotalAmt      string `json:"total_amt"`       // 发生总金额
	Status        string `json:"status"`          // 分账状态
	SeparateDate  string `json:"separate_date"`   // 分账日期
	FinishDate    string `json:"finish_date"`     // 完成日期
	FinalStatus   string `json:"final_status"`
	DetailDatas   []struct {
		RecvMerchantNo string `json:"recv_merchant_no"` // 接收方商户号
		RecvNo         string `json:"recv_no"`          // 接收方编号
		Amt            string `json:"amt"`              // 分账金额
	} `json:"detail_datas"`
}

// EwalletWithdrawD1CallBack 帐管家提现结果通知
type EwalletWithdrawD1CallBack struct {
	PayNo           string `json:"payNo"`
	EwalletId       string `json:"ewalletId"`       // 钱包ID
	DrawJnl         string `json:"drawJnl"`         // 提款流水号
	ReqDate         string `json:"reqDate"`         // 请求日期
	DrawAmt         string `json:"drawAmt"`         // 提款金额（元）：含手续费
	DrawFee         string `json:"drawFee"`         // 手续费（元）
	DrawMode        string `json:"drawMode"`        // 提款模式(D0/D1)
	BatchAutoSettle string `json:"batchAutoSettle"` // 结算模式（01主动提款 02余额自动结算 03 交易自动结算）
	BatchNo         string `json:"batchNo"`         // 自动结算批次号
	AcctNo          string `json:"acctNo"`          // 结算账户号（脱敏）
	AcctName        string `json:"acctName"`        // 结算账户名（脱敏）
	DrawState       string `json:"drawState"`       // 提款状态 DRAW.ACCEPTED 提款已受理 DRAW.FREEZE 提款冻结DRAW.PROCESSING 提款处理中DRAW.SUCCESS 提款成功DRAW.FAILED 提款失败
	Memo            string `json:"memo"`            // 结果信息
	MerOrderNo      string `json:"merOrderNo"`      // 商户订单号
	SettleNo        string `json:"settleNo"`        // 结算流水号
	BankNo          string `json:"bankNo"`          // 银行行号
	NbkName         string `json:"nbkName"`         // 银行名称
	MercId          string `json:"mercId"`          // 商户号
	CompleteTime    string `json:"completeTime"`    // 完成时间
	CreatedTime     string `json:"createdTime"`     // 创建时间
}

// QueryOrderCallBackResp 查询订单详情
type QueryOrderCallBackResp 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”为合单，不填默认是为非拆单
	SplitInfo          []SplitInfoCallbackObj        `json:"split_info"`           // C	List<交易拆单信息	详细字段见split_info字段说明
	OrderTradeInfo     OrderTradeInfoListCallBackObj `json:"order_trade_info"`     // M	List<>订单交易信息列表	list单元为Object，Object对象包含如下字段 ，按交易完成时间逆序排列
	CounterRemark      string                        `json:"counter_remark"`       // C	String	128	收银台备注
}

type SplitInfoCallbackObj 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 OrderTradeInfoListCallBackObj 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	付款银行
	AccSettleAmount        string `json:"acc_settle_amount"`         // C    String    12    账户端结算金额
	AccMdiscountAmount     string `json:"acc_mdiscount_amount"`      // C    String    12    商户侧优惠金额(账户端)
	AccDiscountAmount      string `json:"acc_discount_amount"`       // C    String    12    账户端优惠金额
	AccOtherDiscountAmount string `json:"acc_other_discount_amount"` // C    String    12    账户端其它优惠金额
	CounterRemark          string `json:"counter_remark"`            // C    String    128     收银台备注
	//ResultDescstring string `json:"result_descstring"`  // （待上线）	C	String	32	交易结果描述
}

// PayStatusCallBack 拉卡拉支付回调
type PayStatusCallBack struct {
	MerchantNo             string                `json:"merchant_no"`               // 商户号	M	String(32)	拉卡拉分配的商户号（交易请求接口中商户号）
	OutTradeNo             string                `json:"out_trade_no"`              // 商户交易流水号	M	String(64)
	TradeNo                string                `json:"trade_no"`                  // 拉卡拉交易流水号	M	String(32)	拉卡拉交易流水号
	LogNo                  string                `json:"log_no"`                    // 拉卡拉对账单流水号	M	String(14)	trade_no的后14位
	AccTradeNo             string                `json:"acc_trade_no"`              // 账户端交易订单号	M	String(32)	账户端交易订单号
	AccountType            string                `json:"account_type"`              // 钱包类型	M	String(32)	微信：WECHAT 支付宝：ALIPAY 银联：UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING  数字人民币-DCPAY
	SettleMerchantNo       string                `json:"settle_merchant_no"`        // 结算商户号	C	String(32)	拉卡拉分配的商户号
	SettleTermNo           string                `json:"settle_term_no"`            // 结算终端号	C	String(32)	拉卡拉分配的业务终端号
	TradeStatus            string                `json:"trade_status"`              // 交易状态	M	String(16)	INIT-初始化 CREATE-下单成功 SUCCESS-交易成功 FAIL-交易失败 DEAL-交易处理中 UNKNOWN-未知状态 CLOSE-订单关闭 PART_REFUND-部分退款 REFUND-全部退款 REVOKED-订单撤销
	TotalAmount            string                `json:"total_amount"`              // 订单金额	M	String(12)	单位分，整数数字型字符
	PayerAmount            string                `json:"payer_amount"`              // 付款人实付金额	C	String(12)	付款人实付金额，单位分
	AccSettleAmount        string                `json:"acc_settle_amount"`         // 账户端结算金额	C	String(12)	账户端应结订单金额，单位分 ，账户端应结订单金额=付款人实际发生金额+账户端优惠金额
	AccMdiscountAmount     string                `json:"acc_mdiscount_amount"`      // 商户侧优惠金额（账户端）	C	String(12)	商户优惠金额，单位分
	AccDiscountAmount      string                `json:"acc_discount_amount"`       // 账户端优惠金额	C	String(12)	账户端优惠金额，单位分
	AccOtherDiscountAmount string                `json:"acc_other_discount_amount"` // 账户端其它优惠金额	C	String(12)	账户端返回账户端其它优惠金额，单位分
	TradeTime              string                `json:"trade_time"`                // 交易完成时间	C	String(14)	实际支付时间。yyyyMMddHHmmss
	UserId1                string                `json:"user_id1"`                  // 用户标识1	C	String(128)	微信sub_open_id, 支付宝buyer_logon_id（买家支付宝账号）
	UserId2                string                `json:"user_id2"`                  // 用户标识2	C	String(128)	微信openId,支付宝buyer_user_id,银联user_id
	AccActivityId          string                `json:"acc_activity_id"`           // 活动 ID	C	String(32)	在账户端商户后台配置的批次 ID
	BankType               string                `json:"bank_type"`                 // 付款银行	C	String(128)	付款银行
	CardType               string                `json:"card_type"`                 // 银行卡类型	C	String(16)	00：借记 01：贷记 02：微信零钱 03：支付宝花呗 04：支付宝其他 05：数字货币 06：拉卡拉支付账户 99：未知 sha
	Remark                 string                `json:"remark"`                    // 备注	C	String(128)
	HbFqPayInfo            HbFqPayInfoObj        `json:"hb_fq_pay_info"`            // 花呗分期支付信息	C	Object
	SubMchId               string                `json:"sub_mch_id"`                // 子商户号	C	String(20)	账户端子商户号
	OutSplitRspInfos       []OutSplitRspInfosObj `json:"out_split_rsp_infos"`       // 合单信息	C	List<>
	DiscountGoodsDetail    string                `json:"discount_goods_detail"`     // 单品券优惠的商品优惠信息	C	String(1024)
}

// HbFqPayInfoObj 花呗分期
type HbFqPayInfoObj struct {
	FqAmount       string `json:"fq_amount"`        // 分期金额	M	String(12)	单位分，整数数字型字符
	UserInstallNum string `json:"user_install_num"` // 分期期数	M	String(12)	分期期数，整数数字型字
}

// OutSplitRspInfosObj 合单信息内容
type OutSplitRspInfosObj struct {
	SubTradeNo    string `json:"sub_trade_no"`     // 子单拉卡拉流水号	M	String(32)
	SubLogNo      string `json:"sub_log_no"`       // 子单对账流水号	M	String(12)
	OutSubTradeNo string `json:"out_sub_trade_no"` // 子单外部流水号	M	String(32)
	MerchantNo    string `json:"merchant_no"`      // 子单商户号	M	String(32)
	TermNo        string `json:"term_no"`          // 子单终端号	M	String(8)
	Amount        string `json:"amount"`           // 子单金额	M	String(12)	单位：分
}

// DiscountGoodsDetail 优惠信息
type DiscountGoodsDetail struct {
	GoodsId        string `json:"goods_id"`        // 商品id    M    String
	GoodsName      string `json:"goods_name"`      // 商品名称    C    String
	DiscountAmount string `json:"discount_amount"` // 优惠金额    C    String
	VoucherId      string `json:"voucher_id"`      // 优惠id    C    String
}
