This commit is contained in:
邹宗楠
2025-06-24 13:50:29 +08:00
parent 5b3ef2cd6d
commit 0599a21bce
42 changed files with 4192 additions and 26 deletions

View File

@@ -0,0 +1,223 @@
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" // 订单统一退货查询
)
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银联云闪付 CARDPOS刷卡交易 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单元为ObjectObject对象包含如下字段 ,按交易完成时间逆序排列
}
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 20200326posp接口必填
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"` // 账户端优惠金额
}