package lakala

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

	PayActive         = "labs/trans/preorder"   // 主扫聚合
	PayMicropayActive = "labs/trans/micropay"   // 聚合被扫
	RefundActive      = "labs/relation/refund"  // 主扫退款
	PayQueryActive    = "labs/query/tradequery" // 支付查询
	ClosePayActive    = "labs/relation/close"   // 主扫关单
)

const (
	PayStatusINIT       = "INIT"        // 初始化
	PayStatusCREATE     = "CREATE"      // 下单成功
	PayStatusSUCCESS    = "SUCCESS"     // 交易成功
	PayStatusFAIL       = "FAIL"        // 交易失败
	PayStatusDEAL       = "DEAL"        // 交易处理中
	PayStatusUNKNOWN    = "UNKNOWN"     // 未知状态
	PayStatusCLOSE      = "CLOSE"       // 订单关闭
	PayStatusPARTREFUND = "PART_REFUND" // 部分退款
	PayStatusREFUND     = "REFUND"      // 全部退款
	PayStatusREVOKED    = "REVOKED"     // 订单撤销
)

// AggregatePayReq 聚合主扫参数
type AggregatePayReq struct {
	MerchantNo        string          `json:"merchant_no"`         // 商户号	M	String(32)	拉卡拉分配的商户号
	TermNo            string          `json:"term_no"`             // 终端号	M	String(32)	拉卡拉分配的业务终端号
	OutTradeNo        string          `json:"out_trade_no"`        // 商户交易流水号	M	String(32)	商户系统唯一，对应数据库表中外部请求流水号。
	AccountType       string          `json:"account_type"`        // 钱包类型	M	String(32)	微信：WECHAT 支付宝：ALIPAY 银联：UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING 拉卡拉支付账户：LKLACC 网联小钱包：NUCSPAY 京东钱包：JD
	TransType         string          `json:"trans_type"`          // 接入方式	M	String(2)	41:NATIVE（（ALIPAY，云闪付支持，京东白条分期）51:JSAPI（微信公众号支付，支付宝服务窗支付，银联JS支付，翼支付JS支付, 拉卡拉钱包支付, 支付宝小程序支付）71:微信小程序支付61:APP支付（微信APP支付）
	TotalAmount       string          `json:"total_amount"`        // 金额	M	String(12)	单位分，整数型字符
	LocationInfo      LocationInfoObj `json:"location_info"`       // 地址位置信息	M	Object	地址位置信息，风控要求必送
	BusiMode          string          `json:"busi_mode"`           // 业务模式	C	String(8)	业务模式： ACQ-收单 不填，默认为“ACQ-收单”
	Subject           string          `json:"subject"`             // 订单标题	C	String(42)	标题，用于简单描述订单或商品主题，会传递给账户端 （账户端控制，实际最多42个字符），微信支付必送。
	PayOrderNo        string          `json:"pay_order_no"`        // 支付业务订单号	C	String(64)	拉卡拉订单系统订单号，以拉卡拉支付业务订单号为驱动的支付行为，需上传该字段。
	NotifyUrl         string          `json:"notify_url"`          // 商户通知地址	C	String(128)	商户通知地址，如果上传，且 pay_order_no 不存在情况下，则按此地址通知商户(详见“[交易通知]”接口)
	SettleType        string          `json:"settle_type"`         // 结算类型	C	String(4)	“0”或者空，常规结算方式，如需接拉卡拉分账通需传“1”，商户未开通分账之前切记不用上送此参数。
	Remark            string          `json:"remark"`              // 备注	C	String(128)
	PnrInsIdCd        string          `json:"pnr_ins_id_cd"`       // 服务商机构标识码	C	String(11)	银联分配的服务商机构标识码
	AccBusiFields     interface{}     `json:"acc_busi_fields"`     // 账户端业务信息域 (微信小程序支付-71、公众号支付-51 必传) 	C	Object	参见以下acc_busi_fields字段详细说明,不同的account_type和trans_type，需要传入的参数不一样
	CompleteNotifyUrl string          `json:"complete_notify_url"` // 发货确认通知地址	C	String(128)	发货类小程序确认收获后通知商户的地址
}

type LocationInfoObj 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)商户终端的地理位置，银联二维码交易必填，整体格式：纬度, 经度，+表示北纬、东经，-表示南纬、 西经。经度格式：1位正负号+3位整数+1位小数点+5位小数；纬度格式：1位正负号+2位整数+1位小数点+6位小数；举例：+31.221345, +121.12345
}

// AccBusiFieldsByWeChat acc_busi_fields 只有微信小程序和公众号支付时需要此参数
type AccBusiFieldsByWeChat struct {
	TimeoutExpress string `json:"timeout_express"` // 预下单有效时间	C	String(2)	预下单的订单的有效时间，以分钟为单位。建议不超过15分钟。不传值则默认5分钟。(微信主扫下单上送的失效时间，是控制prepay_id调起支付的有效时间。微信后台不会根据失效时间发起关单。 如需关单，调用关单接口。)
	SubAppid       string `json:"sub_appid"`       // 子商户公众账号ID	C	String(32)	微信分配的子商户公众账号ID，sub_appid（即微信小程序支付-71、公众号支付-51、微信app支付-61），此参数必传，只对微信支付有效 工行数字钱包情况下，该字段上送工行的openId 拉卡拉钱包情况下，该字段上送LAKALA的userId
	UserId         string `json:"user_id"`         // 用户标识	C	String(64)	用户在子商户sub_appid下的唯一标识，sub_openid，（即微信小程序支付-71、众号支付-51），此参数必传，只对微信支付有效
	Detail         string `json:"detail"`          // 商品详情 WeChatDetail	C	String(1024)	单品优惠功能字段，详见下文说明
	GoodsTag       string `json:"goods_tag"`       // 订单优惠标记	C	String(32)	订单优惠标记，微信平台配置的商品标记，用于优惠券或者满减使用，accountType为WECHAT时，可选填此字段
	Attach         string `json:"attach"`          // 附加域	C	String(128)	该字段主要用于商户携带订单的自定义数据。商户定制字段，直接送到账户端。
	DeviceInfo     string `json:"device_info"`     // 设备号	C	String(32)	终端设备号(门店号或收银设备ID)，注意：PC网页或JSAPI支付请传”WEB”
	LimitPay       string `json:"limit_pay"`       // 指定支付方式	C	String(20)	no_credit–指定不能使用信用卡支付
	SceneInfo      string `json:"scene_info"`      // 场景信息	C	String(256)	该字段用于上报场景信息，目前支持上报实际门店信息。
	LimitPayer     string `json:"limit_payer"`     // 限定支付	C	String(8)	ADULT：成年人
}

// WeChatDetail 微信支付商品详情
type WeChatDetail struct {
	CostPrice   string              `json:"cost_price"`   // C	String(12)	1.商户侧一张小票订单可能被分多次支付，订单原 价用于记录整张小票的交易金额。 2.当订单原价与支付金额不相等，则不享受优惠。 3.该字段主要用于防止同一张小票分多次支付，以 享受多次优惠的情况，正常支付订单不必上传此参 数。 如：608800
	ReceiptId   string              `json:"receipt_id"`   // C	String(12)	商家小票 ID
	GoodsDetail []WeChatGoodsDetail `json:"goods_detail"` // M	Object	单品信息，使用Json数组格式提交，见示例
}

type WeChatGoodsDetail struct {
	GoodsId      string `json:"goods_id"`       // M	String(32)	由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。如“商品编码”
	WxpayGoodsId string `json:"wxpay_goods_id"` // C	String(32)	微信支付定义的统一商品编号
	GoodsName    string `json:"goods_name"`     // C	String(256)	商品的实际名称
	Quantity     int    `json:"quantity"`       // M	int	用户购买的数量
	PriceM       int    `json:"price_m"`        // 单位为：分。如果商户有优惠，需传输商户优惠后的单价
}

// AccBusiFieldsByAliPay acc_busi_fields 支付宝支付
type AccBusiFieldsByAliPay struct {
	UserId             string      `json:"user_id"`         // 用户标识	C	String(64)	用户在子商户sub_appid下的唯一标识，sub_openid，（即微信小程序支付-71、众号支付-51），此参数必传，只对微信支付有效
	TimeoutExpress     string      `json:"timeout_express"` // 预下单有效时间	C	String(2)	预下单的订单的有效时间，以分钟为单位。建议不超过15分钟。不传值则默认5分钟。(微信主扫下单上送的失效时间，是控制prepay_id调起支付的有效时间。微信后台不会根据失效时间发起关单。 如需关单，调用关单接口。)
	ExtendParams       interface{} `json:"extend_params"`   // 支付宝业务扩展参数 ，见说明
	GoodsDetail        interface{} `json:"goods_detail"`
	StoreId            string      `json:"store_id"`
	DisablePayChannels string      `json:"disable_pay_channels"`
	BusinessParams     string      `json:"business_params"`
	MinAge             string      `json:"min_age"`
	PromoParams        interface{} `json:"promo_params"`
	PriorityPayAssets  interface{} `json:"priority_pay_assets"`
}

// AggregatePayResp 请求支付响应报文
type AggregatePayResp struct {
	MerchantNo       string      `json:"merchant_no"`        // 商户号	M	String(32)	拉卡拉分配的商户号（请求接口中商户号）
	OutTradeNo       string      `json:"out_trade_no"`       // 商户请求流水号	M	String(32)	请求报文中的商户请求流水号
	TradeNo          string      `json:"trade_no"`           // 拉卡拉交易流水号	M	String(32)	拉卡拉交易流水号
	LogNo            string      `json:"log_no"`             // 拉卡拉对账单流水号	M	String(14)	拉卡拉对账单流水号
	SettleMerchantNo string      `json:"settle_merchant_no"` // 结算商户号	M	String(32)	拉卡拉分配的商户号
	SettleTermNo     string      `json:"settle_term_no"`     // 结算终端号	M	String(32)	拉卡拉分配的业务终端号
	AccRespFields    interface{} `json:"acc_resp_fields"`    // 账户端返回信息域	C	Object	账户端返回信息域
}

// AccRespFieldsAliNative 阿里_NATIVE 支付返回
type AccRespFieldsAliNative struct {
	Code      string `json:"code"`       // 二维码信息	M	String(256)	商户可用此参数自定义去生成二维码后展示出来进行扫码支付
	CodeImage string `json:"code_image"` // 二维码图片内容	M	String(256)	商户收款二维码图片。Base64编码，暂无
	SubMchId  string `json:"sub_mch_id"` // 子商户号	C	String(20)	账户端子商户号
}

// AccRespFieldsAliJSAPI 阿里_JSAPI
type AccRespFieldsAliJSAPI struct {
	PrepayId string `json:"prepay_id"`  // 预下单Id	M	String(32)	预支付交易会话ID
	SubMchId string `json:"sub_mch_id"` // 子商户号	C	String(20)	账户端子商户号
}

// AccRespFieldsWechatJSAPIAndMin 微信(71-小程序)微信(51-JSAPI)场景下
type AccRespFieldsWechatJSAPIAndMin struct {
	PrepayId  string `json:"prepay_id"`  // 预下单Id	M	String(32)	预支付交易会话ID
	PaySign   string `json:"pay_sign"`   // 支付签名信息	M	String(256)	签名
	AppId     string `json:"app_id"`     // 小程序id	M	String(32)	商户注册具有支付权限的小程序成功后即可获得小程序id
	TimeStamp string `json:"time_stamp"` // 时间戳	M	String(32)	当前的时间
	NonceStr  string `json:"nonce_str"`  // 随机字符串	M	String(32)	随机字符串
	Package   string `json:"package"`    // 订单详情扩展字符串	M	String(128)
	SignType  string `json:"sign_type"`  // 签名方式	M	String(32)	签名类型，支持RSA
	SubMchId  string `json:"sub_mch_id"` // 子商户号	C	String(20)	账户端子商户号
}

// AccRespFieldsUQRCodeAndJdPay 银联京东41-NATIVE 支付返回
type AccRespFieldsUQRCodeAndJdPay struct {
	Code string `json:"code"` // 二维码信息	M	String(256)	商户可用此参数自定义去生成二维码后展示出来进行扫码支付
}

// AccRespFieldsUQRCodeJsApi 银联JSAPI支付
type AccRespFieldsUQRCodeJsApi struct {
	RedirectUrl string `json:"redirect_url"` // 银联JS支付重定向地址	M	String(256)	银联JS支付返回重定向地址
	SubMchId    string `json:"sub_mch_id"`   // 子商户号	C	String(20)	账户端子商户号
}

// AccRespFieldsBestPayJsApi 银联JSAPI支付
type AccRespFieldsBestPayJsApi struct {
	BestPayInfo string `json:"best_pay_info"` // 翼支付JS参数	C	String(512)	翼支付JS参数(老网联) best_pay_info、redirect_url两者有其一
	RedirectUrl string `json:"redirect_url"`  // 翼支付支付重定向地址	C	String(256)	翼支付支付重定向地址(新网联)
}

// AccRespFieldsWechatApp 微信app支付
type AccRespFieldsWechatApp struct {
	PrepayId  string `json:"prepay_id"`  // 预下单Id	M	String(32)	预支付交易会话ID
	PaySign   string `json:"pay_sign"`   // 支付签名信息	M	String(256)	签名
	AppId     string `json:"app_id"`     // 移动应用appid	M	String(32)	商户注册具有支付权限的安卓/IOSAPP成功后即可获得移动应用appid
	TimeStamp string `json:"time_stamp"` // 时间戳	M	String(32)	当前的时间
	NonceStr  string `json:"nonce_str"`  // 随机字符串	M	String(32)	随机字符串
	Package   string `json:"package"`    // 订单详情扩展字符串	M	String(128)
	SignType  string `json:"sign_type"`  // 签名方式	M	String(32)	签名类型，支持RSA
	PartnerId string `json:"partner_id"` // 从业机构号	M	String(32)
	SubMchId  string `json:"sub_mch_id"` // 子商户号	C	String(20)	账户端子商户号
}

// AggregateRefundReq 主扫退款参数
type AggregateRefundReq struct {
	MerchantNo       string          `json:"merchant_no"`         // 商户号	M	String(32)	拉卡拉分配的商户号
	TermNo           string          `json:"term_no"`             // 终端号	M	String(32)	拉卡拉分配的业务终端号
	OutTradeNo       string          `json:"out_trade_no"`        // 商户交易流水号	M	String(32)	商户系统唯一，对应数据库表中外部请求流水号。
	RefundAmount     string          `json:"refund_amount"`       // 退款金额	M	String(12)	单位分，整数数字型字符
	RefundReason     string          `json:"refund_reason"`       // 退款原因	C	String(32)	退款原因描述
	OriginOutTradeNo string          `json:"origin_out_trade_no"` // 原商户请求流水号
	OriginTradeNo    string          `json:"origin_trade_no"`     // 原拉卡拉交易流水号	C	String(32)	下单成功时，返回的拉卡拉交易流水。 origin_out_trade_no、origin_log_no、origin_trade_no至少一个必填，（调用收银台下单接口拉起交易后发起退款时至少要传两个），同时存在时优先级顺序如下： origin_trade_no、origin_log_no、origin_out_trade_no。
	OriginLogNo      string          `json:"origin_log_no"`       // 原对账单流水号	C	String(14)	对账单中的交易流水。 origin_out_trade_no、origin_log_no、origin_trade_no至少一个必填，（调用收银台下单接口拉起交易后发起退款时至少要传两个），同时存在时优先级顺序如下： origin_trade_no、origin_log_no、origin_out_trade_no。
	LocationInfo     LocationInfoObj `json:"location_info"`       // 地址位置信息	M	Object	地址位置信息，风控要求必送
}

// AggregateRefundResp 主扫退款响应参数
type AggregateRefundResp struct {
	MerchantNo       string `json:"merchant_no"`         // 商户号	M	String(32)	拉卡拉分配的商户号
	OutTradeNo       string `json:"out_trade_no"`        // 请求中的商户请求流水号
	TradeNo          string `json:"trade_no"`            // 拉卡拉交易流水号
	LogNo            string `json:"log_no"`              // 拉卡拉对账单流水号
	AccTradeNo       string `json:"acc_trade_no"`        // 账户端交易流水号
	AccountType      string `json:"account_type"`        // 微信：WECHAT 支付宝：ALIPAY 银联：UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING
	TotalAmount      string `json:"total_amount"`        // 单位分，整数数字型字符串
	RefundAmount     string `json:"refund_amount"`       // 单位分，整数数字型字符串
	PayerAmount      string `json:"payer_amount"`        // 单位分，整数数字型字符串
	TradeTime        string `json:"trade_time"`          // 实际退款时间。yyyyMMddHHmmss
	OriginTradeNo    string `json:"origin_trade_no"`     // 如果请求中携带，则返回
	OriginOutTradeNo string `json:"origin_out_trade_no"` // 如果请求中携带，则返回
	UpIssAddnData    string `json:"up_iss_addn_data"`    // 参与单品营销优惠时返回
	UpCouponInfo     string `json:"up_coupon_info"`      // 参与单品营销优惠时返回
	TradeInfo        string `json:"trade_info"`          // 数字货币中行返回示例说明：[{“fundchannel”:”BOC”,”amount”:”18”}]
}

// PayStatusQueryReq 支付查询
type PayStatusQueryReq struct {
	MerchantNo string `json:"merchant_no"`  // 商户号	M	String(32)	拉卡拉分配的商户号
	TermNo     string `json:"term_no"`      // 终端号	M	String(32)	拉卡拉分配的终端号
	OutTradeNo string `json:"out_trade_no"` //	商户交易流水号	C	String(32)	下单时的商户请求流水号 说明：out_trade_no、trade_no、必有其一。如果存在多个字段上送，优先级顺序如下： trade_no、 out_trade_no
	TradeNo    string `json:"trade_no"`     // 拉卡拉交易流水号    C    String(32)    拉卡拉交易流水号
}

type PayStatusQueryResp 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位
	TradeMainType          string               `json:"trade_main_type"`           //交易大类	C	String(32)	PREORDER-主扫，MICROPAY-被扫，REFUND-退款，CANCEL-撤销，无-其它类型
	SplitAttr              string               `json:"split_attr"`                // 拆单属性	C	String(1)	只有涉及合单交易时会出现：M-主单，S-子单
	SplitInfo              []SplitInfoList      `json:"split_info"`                //拆单信息	C	List<>	如果查询订单是主单，则返回。见splitInfo字段说明。拆单信息见split_info域说明
	TradeState             string               `json:"trade_state"`               // 交易状态	M	String(16)	INIT-初始化 CREATE-下单成功 SUCCESS-交易成功 FAIL-交易失败 DEAL-交易处理中 UNKNOWN-未知状态 CLOSE-订单关闭 PART_REFUND-部分退款 REFUND-全部退款(或订单被撤销）
	TradeStateDesc         string               `json:"trade_state_desc"`          // 交易状态描述	C	String(256)	交易状态描述
	AccTradeNo             string               `json:"acc_trade_no"`              // 账户端交易订单号	M	String(32)	账户端交易订单号
	AccountType            string               `json:"account_type"`              // 钱包类型	M	String(32)	微信：WECHAT 支付宝：ALIPAY 银联：UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING  数字人民币-DCPAY
	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
	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
	AccActivityId          string               `json:"acc_activity_id"`           // 活动 ID	C	String(32)	在账户端商户后台配置的批次 ID
	TradeReqDate           string               `json:"trade_req_date"`            // 交易请求日期	M	String(8)
	AccRespFields          interface{}          `json:"acc_resp_fields"`           // 账户端返回信息域	C	Object	账户端返回信息域
	RefundSplitInfo        []RefundSplitInfoObj `json:"refund_split_info"`         // 合单退款拆单信息	C	List<>	如果查询订单是退款主单，则返回。见refundSplitInfo字段说明。拆单信息见refund_split_info域说明
}

type SplitInfoList struct {
	UbTradeNo     string `json:"ub_trade_no"`      // 子单交易流水号	M	String(32)	子单交易流水号
	SubLogNo      string `json:"sub_log_no"`       // 子单对账单流水号	M	String(14)	子单对账单流水号
	OutSubTradeNo string `json:"out_sub_trade_no"` // 外部子交易流水号	M	String(32)	商户子交易流水号，商户号下唯一
	MerchantNo    string `json:"merchant_no"`      // 商户号	M	String(32)	拉卡拉分配的商户号
	MerchantName  string `json:"merchant_name"`    // 商户名称	M	String(64)	商户名称
	TermNo        string `json:"term_no"`          // 终端号	M	String(32)	拉卡拉分配的业务终端号
	Amount        string `json:"amount"`           // 金额	M	String(12)	单位分，整数型字符
}

type RefundSplitInfoObj struct {
	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(32)	拉卡拉分配的业务终端号
	RefundAmount  string `json:"refund_amount"`    // 申请退款金额	M	String(12)	单位分，整数型字符
	SubTradeNo    string `json:"sub_trade_no"`     // 拉卡拉子交易流水号	C	String(32)
	SubLogNo      string `json:"sub_log_no"`       // 对账单子流水号	C	String(14)	sub_trade_no后14位
	TradeState    string `json:"trade_state"`      // 子交易状态	C	String(16)	SUCCESS-交易成功 FAIL-交易失败
	ResultCode    string `json:"result_code"`      // 处理结果码	C	String(32)
	ResultMsg     string `json:"result_msg"`       // 处理描述	C	String(128)
}

// PayMicroPayReq 扫码支付
type PayMicroPayReq struct {
	MerchantNo   string          `json:"merchant_no"`   // 商户号	M	String(32)	拉卡拉分配的商户号
	TermNo       string          `json:"term_no"`       // 终端号	M	String(32)	拉卡拉分配的业务终端号
	OutTradeNo   string          `json:"out_trade_no"`  // 商户交易流水号	M	String(32)	商户系统唯一，对应数据库表中外部请求流水号。
	AuthCode     string          `json:"auth_code"`     // M	String(32)	扫码支付授权码，设备读取用户APP中的条码或者二维码信息，用户付款码条形码规则见说明
	TotalAmount  string          `json:"total_amount"`  // 单位分，整数型字符
	LocationInfo LocationInfoObj `json:"location_info"` // 地址位置信息	M	Object	地址位置信息，风控要求必送
	NotifyUrl    string          `json:"notify_url"`    // 商户通知地址，如上传，且 pay_order_no 不存在情况下，且支付响应报文是交易中状态的场景下，则按此地址通知商户
	SettleType   string          `json:"settle_type"`   // “0”或者空，常规结算方式；如需接拉卡拉分账通需传“1”，商户未开通分账之前切记不用上送此参数。
	Subject      string          `json:"subject"`       // 标题，用于简单描述订单或商品（账户端控制，实际最多42个字符），微信支付必送。
	//busi_mode       string      `json:"busi_mode"`    // 业务模式： ACQ-收单 不填，默认为“ACQ-收单”
	//pay_order_no    string      `json:"pay_order_no"` // 拉卡拉订单系统订单号，以拉卡拉支付业务订单号为驱动的支付行为，需上传该字段。 订单交易下单，交易时上送订单系统订单号，交易流程中会校验有效性、判重
	//remark          string      `json:"remark"`
	//scan_type       string      `json:"scan_type"`
	//acc_busi_fields interface{} `json:"acc_busi_fields"`
	//pnr_ins_id_cd   string      `json:"pnr_ins_id_cd"`
}

type PayMicroPayResp struct {
	NeedQuery          string `json:"need_query"`           // 是否需要发起查询 0=不需要 1=需要 当返回1时，代表订单处理中，商户需主动发起查询
	OutTradeNo         string `json:"out_trade_no"`         // 商户交易流水号
	TradeNo            string `json:"trade_no"`             // 拉卡拉交易流水号
	LogNo              string `json:"log_no"`               // 拉卡拉对账单流水号
	AccTradeNo         string `json:"acc_trade_no"`         // 账户端交易流水号
	AccountType        string `json:"account_type"`         // 微信：WECHAT 支付宝：ALIPAY 银联：UQRCODEPAY 翼支付: BESTPAY 数字货币：DCPAY
	TotalAmount        string `json:"total_amount"`         // 单位分，整数数字型字符 订单金额=付款人实际发生金额+商户优惠金额+账户端优惠金额
	PayerAmount        string `json:"payer_amount"`         // 付款人实际发生金额
	AccSettleAmount    string `json:"acc_settle_amount"`    // 应结订单金额，单位分 ，账户端应结订单金额=付款人实际发生金额+账户端优惠金额
	AccMdiscountAmount string `json:"acc_mdiscount_amount"` // 账户端返回商户优惠金额，单位分
	AccDiscountAmount  string `json:"acc_discount_amount"`  // 账户端返回账户端优惠金额，单位分
	TradeTime          string `json:"trade_time"`           // 以账户端返回时间为准
	BankType           string `json:"bank_type"`            // 付款银行
	CardType           string `json:"card_type"`            // 00：借记 01：贷记 02：微信零钱 03：支付宝花呗 04：支付宝其他 05：数字货币 06：拉卡拉支付账户 99：未知
}
