引入账户相关常量和类型定义

- 新增附件类型(AttType)常量定义,包括身份证、银行卡、营业执照等16种类型
- 新增分账范围(SplitRange)常量,支持全部交易分账和标记交易分账
- 新增分账资金来源(SepFundSource)常量,区分交易分账和余额分账
- 新增分账发起模式(SplitLaunchMode)常量,支持自动、规则指定和手动分账
- 新增分账结算类型(SplitSettleType)常量,支持主扫现结和交易自动结算
- 新增分账规则来源(SplitRuleSource)常量,区分商户规则和平台规则
- 新增账户类型码(AcctTypeCode)常量,支持对公和对私账户- 新增账户证件类型(AcctCertificateType)常量,支持身份证、护照等多种证件
- 新增分账计算类型(CalType)常量,支持固定金额和比例分账
- 新增支付类型(PayType)常量,支持收款、付款、分账等6种账户类型
- 修改ApplyBindAttachment.AttachType类型为consts.AttType
- 修改ApplyLedgerMerRequest.SplitRange类型为consts.SplitRange
- 修改ApplyLedgerMerRequest.SepFundSource类型为consts.SepFundSource- 修改ApplyLedgerMerRequest.SplitLaunchMode类型为consts.SplitLaunchMode
- 修改ApplyLedgerMerRequest.SettleType类型为consts.SplitSettleType- 修改ApplyLedgerMerRequest.SplitRuleSource类型为consts.SplitRuleSource- 修改ApplyLedgerReceiverRequest.AcctTypeCode类型为consts.AcctTypeCode
- 修改BalanceQueryRequest.PayType类型为consts.PayType
- 修改MergePreorderReqData.AccountType类型为consts.AccountType
- 修改MergePreorderReqData.TransType类型为consts.TransType
- 修改PreorderReqData.AccountType类型为consts.AccountType
- 修改PreorderReqData.TransType类型为consts.TransType
- 修改PreorderReqData.SettleType类型为consts.SettleType
- 修改RefundReqData.RefundAccMode类型为consts.RefundAccMode
- 修改RefundReqData.RefundAmtSts类型为consts.RefundAmtSts
- 新增AccountType常量定义,支持微信、支付宝、银联等10种账户类型
- 新增TransType常量定义,支持NATIVE、JSAPI、小程序等4种接入方式
- 新增SettleType常量定义,支持常规结算和分账通结算- 新增RefundAccMode常量定义,支持4种退款账户模式
- 新增RefundAmtSts常量定义,支持分账前后退款状态区分
menu v1.0.4
maguodong 2025-10-10 14:47:25 +08:00
parent 0aa9bc80ec
commit 5824ed7eef
13 changed files with 344 additions and 116 deletions

134
consts/account.go Normal file
View File

@ -0,0 +1,134 @@
package consts
type AttType string
const (
ATT_TYPE_FR_ID_CARD_FRONT AttType = "FR_ID_CARD_FRONT" // 法人身份证正面
ATT_TYPE_FR_ID_CARD_BEHIND AttType = "FR_ID_CARD_BEHIND" // 法人身份证反面
ATT_TYPE_ID_CARD_FRONT AttType = "ID_CARD_FRONT" // 结算人身份证正面
ATT_TYPE_ID_CARD_BEHIND AttType = "ID_CARD_BEHIND" // 结算人身份证反面
ATT_TYPE_BANK_CARD AttType = "BANK_CARD" // 银行卡
ATT_TYPE_BUSINESS_LICENCE AttType = "BUSINESS_LICENCE" // 营业执照
ATT_TYPE_MERCHANT_PHOTO AttType = "MERCHANT_PHOTO" // 商户门头照片
ATT_TYPE_SHOPINNER AttType = "SHOPINNER" // 商铺内部照片
ATT_TYPE_XY AttType = "XY" // 线下纸质协议
ATT_TYPE_NETWORK_XY AttType = "NETWORK_XY" // 电子协议
ATT_TYPE_HT AttType = "HT" // 租赁合同
ATT_TYPE_COOPERATION_QUALIFICATION_PROOF AttType = "COOPERATION_QUALIFICATION_PROOF" // 合作资质证明
ATT_TYPE_FOOD_QUALIFICATION_PROOF AttType = "FOOD_QUALIFICATION_PROOF" // 食品经营相关资质
ATT_TYPE_NO_LEGAL_PERSON_SETT_AUTH_LETTER AttType = "NO_LEGAL_PERSON_SETT_AUTH_LETTER" // 非法人结算授权书
ATT_TYPE_SPLIT_ENTRUST_FILE AttType = "SPLIT_ENTRUST_FILE" // 结算授权委托书
ATT_TYPE_RENTAL_AGREEMENT AttType = "RENTAL_AGREEMENT" // 集市方与场地方间的租赁协议
ATT_TYPE_SPLIT_COOPERATION_FILE AttType = "SPLIT_COOPERATION_FILE" // 集市方与摊主间的合作协议
ATT_TYPE_OTHERS AttType = "OTHERS" // 其他
)
func (at AttType) Ptr() string {
return string(at)
}
type SplitRange string
const (
SPLIT_RANGE_ALL SplitRange = "ALL" // 全部交易分账
SPLIT_RANGE_MARK SplitRange = "MARK" // 标记交易分账
)
func (sr SplitRange) Ptr() string {
return string(sr)
}
type SepFundSource string
const (
SEP_FUND_SOURCE_TR SepFundSource = "TR" // 交易分账
SEP_FUND_SOURCE_BA SepFundSource = "BR" // 余额分账
)
func (sf SepFundSource) Ptr() string {
return string(sf)
}
type SplitLaunchMode string
const (
SPLIT_LAUNCH_MODE_AUTO SplitLaunchMode = "AUTO" // 自动触发分账
SPLIT_LAUNCH_MODE_POINTRULE SplitLaunchMode = "POINTRULE" // 指定规则分账
SPLIT_LAUNCH_MODE_MANUAL SplitLaunchMode = "MANUAL" // 手动分账
)
func (slm SplitLaunchMode) Ptr() string {
return string(slm)
}
type SplitSettleType string
const (
SPLIT_SETTLE_TYPE_01 SplitSettleType = "01" // 主扫现结
SPLIT_SETTLE_TYPE_03 SplitSettleType = "03" // 交易自动结算
)
func (sst SplitSettleType) Ptr() string {
return string(sst)
}
type SplitRuleSource string
const (
SPLIT_RULE_SOURCE_MER SplitRuleSource = "MER" // 商户分账规则
SPLIT_RULE_SOURCE_PLATFORM SplitRuleSource = "PLATFORM" // 平台分账规则
)
func (srs SplitRuleSource) Ptr() string {
return string(srs)
}
type AcctTypeCode string
const (
ACCT_TYPE_CODE_57 AcctTypeCode = "57" // 对公
ACCT_TYPE_CODE_58 AcctTypeCode = "58" // 对私
)
func (act AcctTypeCode) Ptr() string {
return string(act)
}
type AcctCertificateType string
const (
ACCT_CERTIFICATE_TYPE_ID_CARD AcctCertificateType = "17" // 身份证
ACCT_CERTIFICATE_TYPE_PASSPORT AcctCertificateType = "18" // 护照
ACCT_CERTIFICATE_TYPE_HONGKONG_MACAO AcctCertificateType = "19" // 港澳居民来往内地通行证
ACCT_CERTIFICATE_TYPE_TRAVEL AcctCertificateType = "20" // 台湾居民来往内地通行证
)
func (act AcctCertificateType) Ptr() string {
return string(act)
}
type CalType string
const (
CAL_TYPE_0 CalType = "0" // 按固定金额分账
CAL_TYPE_1 CalType = "1" // 按比例分账
)
func (ct CalType) Ptr() string {
return string(ct)
}
type PayType string
const (
PAY_TYPE_01 PayType = "01" // 收款账户
PAY_TYPE_02 PayType = "02" // 付款账户
PAY_TYPE_03 PayType = "03" // 分账商户账户
PAY_TYPE_04 PayType = "04" // 分账接收方账户
PAY_TYPE_05 PayType = "05" // 充值代付账户
PAY_TYPE_06 PayType = "06" // 结算代付账户
)
func (pt PayType) Ptr() string {
return string(pt)
}

67
consts/field.go Normal file
View File

@ -0,0 +1,67 @@
package consts
type AccountType string
const (
ACCOUNT_TYPE_WECHAT AccountType = "WECHAT" // 微信
ACCOUNT_TYPE_ALIPAY AccountType = "ALIPAY" // 支付宝
ACCOUNT_TYPE_UQRCODEPAY AccountType = "UQRCODEPAY" // 银联
ACCOUNT_TYPE_BASTPAY AccountType = "BASTPAY" // 翼支付
ACCOUNT_TYPE_SUNING AccountType = "SUNING" // 苏宁
ACCOUNT_TYPE_LKLACC AccountType = "LKLACC" // 拉卡拉支付账户
ACCOUNT_TYPE_NUCSPAY AccountType = "NUCSPAY" // 网联小钱包
ACCOUNT_TYPE_JD AccountType = "JD"
)
func (at AccountType) Ptr() string {
return string(at)
}
type TransType string
const (
TRANS_TYPE_NATIVE TransType = "41" // NATIVEALIPAY, 云闪付支持, 京东白条分期)
TRANS_TYPE_JSAPI TransType = "51" // JSAPI微信公众号支付, 支付宝服务窗、JS支付, 翼支付JS支付, 拉卡拉钱包支付, 京东白条分期)
TRANS_TYPE_WECHATPAY TransType = "71" // 微信小程序支付
TRANS_TYPE_APP TransType = "61" // APP支付微信APP支付String(2)
)
func (tt TransType) Ptr() string {
return string(tt)
}
type SettleType string
const (
SETTLE_TYPE_NORMAL SettleType = "0" // 常规结算
SETTLE_TYPE_SPECIAL SettleType = "1" // 拉卡拉分账通结算
)
func (st SettleType) Ptr() string {
return string(st)
}
type RefundAccMode string
// 00退货账户余额 05商户余额 06终端余额 30终点账户
const (
REFUND_ACC_MODE_USER_BALANCE RefundAccMode = "00" // 退货账户余额
REFUND_ACC_MODE_MERCHANT_BALANCE RefundAccMode = "05" // 商户余额
REFUND_ACC_MODE_TERMINAL_BALANCE RefundAccMode = "06" // 终端余额
REFUND_ACC_MODE_ACCOUNT RefundAccMode = "30" // 终点账户
)
func (rat RefundAccMode) Ptr() string {
return string(rat)
}
type RefundAmtSts string
const (
REFUND_AMT_STS_NORMAL RefundAmtSts = "00" // 分账前
REFUND_AMT_STS_SPLIT RefundAmtSts = "01" // 分账后
)
func (ras RefundAmtSts) Ptr() string {
return string(ras)
}

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
// ApplyBindRequest 分账关系绑定请求结构体
// 用于发起分账接收方与商户的关系绑定申请
// 拉卡拉SDK接口文档分账关系绑定接口
@ -28,9 +30,9 @@ type ApplyBindReqData struct {
}
type ApplyBindAttachment struct {
AttachType string `json:"attachType"` // 附件类型编码必传长度32
AttachName string `json:"attachName"` // 附件名称必传长度32
AttachStorePath string `json:"attachStorePath"` // 附件路径必传长度128通过调用附件上传接口获取
AttachType consts.AttType `json:"attachType"` // 附件类型编码必传长度32
AttachName string `json:"attachName"` // 附件名称必传长度32
AttachStorePath string `json:"attachStorePath"` // 附件路径必传长度128通过调用附件上传接口获取
}
// ApplyBindResponse 分账关系绑定响应结构体

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
// ApplyLedgerMerRequest 商户分账业务开通申请请求结构体
type ApplyLedgerMerRequest struct {
ReqData *ApplyLedgerMerReqData `json:"reqData"` // 请求业务数据
@ -19,12 +21,12 @@ type ApplyLedgerMerReqData struct {
SplitLowestRatio float64 `json:"splitLowestRatio"` // 最低分账比例必传长度12百分比支持2位精度取值范围70-70.50
SplitEntrustFileName string `json:"splitEntrustFileName"` // 分账授权委托书文件名称必传长度64文件格式pdf
SplitEntrustFilePath string `json:"splitEntrustFilePath"` // 分账授权委托书文件路径必传长度64调用附件上传接口获取
SplitRange string `json:"splitRange"` // 分账范围必传长度32取值说明ALL-全部交易分账(所有交易默认都分账)MARK-标记交易分账(只有带标记交易才分账,其余交易正常结算)
SplitFundSource string `json:"splitFundSource"` // 分账依据非必传长度32取值说明TRA-交易分账BAR-金额分账
SplitRange consts.SplitRange `json:"splitRange"` // 分账范围必传长度32取值说明ALL-全部交易分账(所有交易默认都分账)MARK-标记交易分账(只有带标记交易才分账,其余交易正常结算)
SepFundSource consts.SepFundSource `json:"sepFundSource"` // 分账依据非必传长度32取值说明TRA-交易分账BAR-金额分账
ElecContractId string `json:"elecContractId"` // 电子合同编号非必传长度32收单已签约交易电子合同编号供审核人员复核使用
SplitLaunchMode string `json:"splitLaunchMode"` // 分账发起方式非必传长度32取值说明AUTO-自动触发分账POINTTRUE-指定规则分账MANUAL-手动分账
SettleType string `json:"settleType"` // 结算类型非必传长度32取值说明01-主扫现结02-复扫现结03-交易自动结算
SplitRuleSource string `json:"splitRuleSource"` // 分账规则来源条件必传长度32取值说明MER-商户自定规则PLATFORM-平台分润规则(分润规则必传)
SplitLaunchMode consts.SplitLaunchMode `json:"splitLaunchMode"` // 分账发起方式非必传长度32取值说明AUTO-自动触发分账POINTTRUE-指定规则分账MANUAL-手动分账
SettleType consts.SplitSettleType `json:"settleType"` // 结算类型非必传长度32取值说明01-主扫现结02-复扫现结03-交易自动结算
SplitRuleSource consts.SplitRuleSource `json:"splitRuleSource"` // 分账规则来源条件必传长度32取值说明MER-商户自定规则PLATFORM-平台分润规则(分润规则必传)
RetUrl string `json:"retUrl"` // 回调通知地址必传长度128分账申请结果以异步消息或同步返回的方式通知如需无线路由处理也可以通过第三方商户信息查询接口确定结算结果
Attachments []*ApplyBindAttachment `json:"attachments,omitempty"` // 附加资料,可选,集合,其他需附加的文件信息
}

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
// ApplyLedgerReceiverRequest 分账接收方创建请求结构体
// 用于向拉卡拉接口发送分账接收方创建请求
// 包含请求头信息和业务数据
@ -43,7 +45,7 @@ type ApplyLedgerReceiverReqData struct {
// 收款账户名称必传长度32
AcctName string `json:"acctName"`
// 收款账户类型代码必传长度32取值说明57对公58对私
AcctTypeCode string `json:"acctTypeCode"`
AcctTypeCode consts.AcctTypeCode `json:"acctTypeCode"`
// 收款账户证件类型必传长度32取值说明17身份证18护照19港澳居民来往内地通行证20台湾居民来往内地通行证身份证外类型先咨询后再使用
AcctCertificateType string `json:"acctCertificateType"`
// 收款账户证件号必传长度32

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
// BalanceQueryRequest 余额查询请求结构体
// 用于向拉卡拉接口发送余额查询请求
// 包含请求头信息和业务数据
@ -23,7 +25,7 @@ type BalanceQueryReqData struct {
// 账号若该参数上送则payType将无效非必传最大长度32
PayNo string `json:"pay_no"`
// 账号类型01收款账户02付款账户03分账商户账户04分账接收方账户05充值代付账户06结算代付账户-未上送则默认01非必传最大长度32
PayType string `json:"pay_type"`
PayType consts.PayType `json:"pay_type"`
// 账户标志01:一般账户;03:虚户)-未上送则默认01非必传最大长度32
MgtFlag string `json:"mgt_flag"`
}

View File

@ -1,31 +1,34 @@
package model
import "github.com/gogf/gf/v2/os/gtime"
import (
"github.com/black1552/lkl_sdk/consts"
"github.com/gogf/gf/v2/os/gtime"
)
// MergePreorder 主扫合单交易请求结构体
type MergePreorder struct {
ReqTime string `json:"req_time"` // 请求时间格式YYYYMMDDHHMMSS
Version string `json:"version"` // 接口版本号,固定值"3.0"
ReqTime string `json:"req_time"` // 请求时间格式YYYYMMDDHHMMSS
Version string `json:"version"` // 接口版本号,固定值"3.0"
ReqData *MergePreorderReqData `json:"req_data"` // 请求业务数据
}
// MergePreorderReqData 主扫合单交易请求业务数据
type MergePreorderReqData struct {
MerchantNo string `json:"merchant_no"` // 商户号拉卡拉分配的商户号String(32),必填
TermNo string `json:"term_no"` // 终端号拉卡拉分配的业务终端号String(32),必填
OutTradeNo string `json:"out_trade_no"` // 商户交易流水号商户系统唯一String(32),必填
OutSplitInfo []*OutSplitInfo `json:"out_split_info"` // 拆单信息List必填
AccountType string `json:"account_type"` // 钱包类型微信WECHAT 支付宝ALIPAY 银联UQRCODEPAY 京东钱包JDString(32),必填
TransType string `json:"trans_type"` // 接入方式41:NATIVE扫码支付(仅ALIPAY支持) 51:JSAPI微信公众号支付支付宝服务窗支付银联JS支付支付宝JS支付、拉卡拉钱包支付71:微信小程序支付 81:支付宝H5支付需特殊商户账户端支持String(2),必填
TotalAmount string `json:"total_amount"` // 金额单位分整数型字符String(12),必填
LocationInfo *LocationInfo `json:"location_info"` // 地址位置信息Object风控要求必送必填
BusiMode string `json:"busi_mode"` // 业务模式ACQ-收单 PAY-付款不填,默认为"ACQ-收单"String(8),选填
Subject string `json:"subject"` // 订单标题用于简单描述订单或商品主题传递给账户端账户端控制实际最多42个字节String(42),选填
NotifyUrl string `json:"notify_url"` // 商户通知地址,如果上传,且 pay_order_no 不存在情况下则按此地址通知商户String(128),选填
Remark string `json:"remark"` // 备注String(128),选填
IdentityInfo string `json:"identity_info"` // 实名支付信息json字符串如{"identityNo": "3200000000000000XX", "name": "张三"}然后国密sm2加密String(1024),选填
AccBusiFields *AccBusiFields `json:"acc_busi_fields"` // 账户端业务信息域Object选填
CompleteNotifyUrl string `json:"complete_notify_url"` // 发货确认通知地址发货类小程序确认收货后通知商户的地址String(128),选填
MerchantNo string `json:"merchant_no"` // 商户号拉卡拉分配的商户号String(32),必填
TermNo string `json:"term_no"` // 终端号拉卡拉分配的业务终端号String(32),必填
OutTradeNo string `json:"out_trade_no"` // 商户交易流水号商户系统唯一String(32),必填
OutSplitInfo []*OutSplitInfo `json:"out_split_info"` // 拆单信息List必填
AccountType consts.AccountType `json:"account_type"` // 钱包类型微信WECHAT 支付宝ALIPAY 银联UQRCODEPAY 京东钱包JDString(32),必填
TransType consts.TransType `json:"trans_type"` // 接入方式41:NATIVE扫码支付(仅ALIPAY支持) 51:JSAPI微信公众号支付支付宝服务窗支付银联JS支付支付宝JS支付、拉卡拉钱包支付71:微信小程序支付 81:支付宝H5支付需特殊商户账户端支持String(2),必填
TotalAmount string `json:"total_amount"` // 金额单位分整数型字符String(12),必填
LocationInfo *LocationInfo `json:"location_info"` // 地址位置信息Object风控要求必送必填
BusiMode string `json:"busi_mode"` // 业务模式ACQ-收单 PAY-付款不填,默认为"ACQ-收单"String(8),选填
Subject string `json:"subject"` // 订单标题用于简单描述订单或商品主题传递给账户端账户端控制实际最多42个字节String(42),选填
NotifyUrl string `json:"notify_url"` // 商户通知地址,如果上传,且 pay_order_no 不存在情况下则按此地址通知商户String(128),选填
Remark string `json:"remark"` // 备注String(128),选填
IdentityInfo string `json:"identity_info"` // 实名支付信息json字符串如{"identityNo": "3200000000000000XX", "name": "张三"}然后国密sm2加密String(1024),选填
AccBusiFields *AccBusiFields `json:"acc_busi_fields"` // 账户端业务信息域Object选填
CompleteNotifyUrl string `json:"complete_notify_url"` // 发货确认通知地址发货类小程序确认收货后通知商户的地址String(128),选填
}
// OutSplitInfo 拆单信息
@ -40,29 +43,29 @@ type OutSplitInfo struct {
// LocationInfo 地址位置信息
type LocationInfo struct {
RequestIp string `json:"request_ip"` // 请求方IP地址请求方的IP地址存在必填格式如36.45.36.95String(64),必填
RequestIp string `json:"request_ip"` // 请求方IP地址请求方的IP地址存在必填格式如36.45.36.95String(64),必填
BaseStation string `json:"base_station"` // 基站信息客户端设备的基站信息主扫时基站信息使用该字段String(128),选填
Location string `json:"location"` // 维度,经度,商户终端的地理位置,存在必填格式:纬度,经度,+表示北纬、东经,-表示南纬、西经精度最长支持小数点后9位。举例:+37.123456789,121.123456789String(32),选填
Location string `json:"location"` // 维度,经度,商户终端的地理位置,存在必填格式:纬度,经度,+表示北纬、东经,-表示南纬、西经精度最长支持小数点后9位。举例:+37.123456789,121.123456789String(32),选填
}
// AccBusiFields 账户端业务信息域,微信主扫场景
type AccBusiFields struct {
TimeoutExpress string `json:"timeout_express"` // 预下单的订单的有效时间以分钟为单位。如果在有效时间内没有完成付款则在账户端该订单失效。如用户超时则账户端完成失效处理建议不超过15分钟。不传值则默认5分钟String(2),选填
SubAppId string `json:"sub_appid"` // 子商户公众账号IDsub_appid即微信小程序支付-71、公众号支付-51、微信支付-61此参数必传只对微信支付生效拉卡拉钱包情况下该字段上送LAKALA的openidString(32),选填
UserId string `json:"user_id"` // 用户标识用户在子商户sub_appid下的唯一标识sub_openid即微信小程序支付-71、公众号支付-51此参数必传只对微信支付有效String(64),选填
Detail string `json:"detail"` // 商品详情单品优惠功能字段详见下文说明String(1024),选填
GoodsTag string `json:"goods_tag"` // 订单优惠标记微信平台配置的商品标记用于优惠券或者满减使用accountType为WECHAT时可选填此字段String(32),选填
Attach string `json:"attach"` // 附加域附加数据在查询API和支付通知中原样返回该字段主要用于商户携带订单的自定义数据。商户定制字段直接送到账户端String(128),选填
TimeoutExpress string `json:"timeout_express"` // 预下单的订单的有效时间以分钟为单位。如果在有效时间内没有完成付款则在账户端该订单失效。如用户超时则账户端完成失效处理建议不超过15分钟。不传值则默认5分钟String(2),选填
SubAppId string `json:"sub_appid"` // 子商户公众账号IDsub_appid即微信小程序支付-71、公众号支付-51、微信支付-61此参数必传只对微信支付生效拉卡拉钱包情况下该字段上送LAKALA的openidString(32),选填
UserId string `json:"user_id"` // 用户标识用户在子商户sub_appid下的唯一标识sub_openid即微信小程序支付-71、公众号支付-51此参数必传只对微信支付有效String(64),选填
Detail string `json:"detail"` // 商品详情单品优惠功能字段详见下文说明String(1024),选填
GoodsTag string `json:"goods_tag"` // 订单优惠标记微信平台配置的商品标记用于优惠券或者满减使用accountType为WECHAT时可选填此字段String(32),选填
Attach string `json:"attach"` // 附加域附加数据在查询API和支付通知中原样返回该字段主要用于商户携带订单的自定义数据。商户定制字段直接送到账户端String(128),选填
GoodsDetail []*GoodsDetail `json:"goods_detail"` // 商品详情列表,微信商品详情字段说明
}
// GoodsDetail 微信商品详情字段说明
type GoodsDetail struct {
GoodsId string `json:"goods_id"` // 商品ID由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。如"商品编码",必填
GoodsId string `json:"goods_id"` // 商品ID由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。如"商品编码",必填
WxpayGoodsId string `json:"wxpay_goods_id"` // 微信支付定义的统一商品编号String(32),选填
GoodsName string `json:"goods_name"` // 商品的实际名称String(256),选填
Quantity string `json:"quantity"` // 用户购买的数量String(12),必填
Price string `json:"price"` // 单价单位为分。如果商户有优惠需传输商户优惠后的单价String(12),必填
GoodsName string `json:"goods_name"` // 商品的实际名称String(256),选填
Quantity string `json:"quantity"` // 用户购买的数量String(12),必填
Price string `json:"price"` // 单价单位为分。如果商户有优惠需传输商户优惠后的单价String(12),必填
}
// NewMergePreorder 创建主扫合单交易请求
@ -76,46 +79,46 @@ func NewMergePreorder(param *MergePreorderReqData) *MergePreorder {
// MergePreorderResponse 主扫合单交易响应结构体
type MergePreorderResponse struct {
Code string `json:"code"` // 响应码BBS00000表示成功
Msg string `json:"msg"` // 响应信息,对响应码的文字描述
Code string `json:"code"` // 响应码BBS00000表示成功
Msg string `json:"msg"` // 响应信息,对响应码的文字描述
ReqData MergePreorderRespData `json:"resp_data"` // 响应业务数据
RespTime string `json:"resp_time"` // 响应时间
RespTime string `json:"resp_time"` // 响应时间
}
// MergePreorderRespData 主扫合单交易响应业务数据
type MergePreorderRespData struct {
MerchantNo string `json:"merchant_no"` // 商户号(待上线),拉卡拉分配的商户号(请求接口中商户号)
OutTradeNo string `json:"out_trade_no"` // 商户请求流水号,请求报文中的商户请求流水号
TradeNo string `json:"trade_no"` // 拉卡拉交易流水号
LogNo string `json:"log_no"` // 拉卡拉对账单流水号
SplitInfo []*SplitInfo `json:"split_info"` // 拆单信息
AccRespFields interface{} `json:"acc_resp_fields"` // 账户端返回信息域
MerchantNo string `json:"merchant_no"` // 商户号(待上线),拉卡拉分配的商户号(请求接口中商户号)
OutTradeNo string `json:"out_trade_no"` // 商户请求流水号,请求报文中的商户请求流水号
TradeNo string `json:"trade_no"` // 拉卡拉交易流水号
LogNo string `json:"log_no"` // 拉卡拉对账单流水号
SplitInfo []*SplitInfo `json:"split_info"` // 拆单信息
AccRespFields interface{} `json:"acc_resp_fields"` // 账户端返回信息域
}
// SplitInfo 拆单信息
type SplitInfo struct {
SubTradeNo string `json:"sub_trade_no"` // 子单交易流水号
SubLogNo string `json:"sub_log_no"` // 子单对账单流水号
SubTradeNo string `json:"sub_trade_no"` // 子单交易流水号
SubLogNo string `json:"sub_log_no"` // 子单对账单流水号
OutSubTradeNo string `json:"out_sub_trade_no"` // 外部子交易流水号,商户子交易流水号,商户号下唯一
MerchantNo string `json:"merchant_no"` // 商户号,拉卡拉分配的商户号
MerchantName string `json:"merchant_name"` // 商户名称
TermNo string `json:"term_no"` // 终端号,拉卡拉分配的业务终端号
Amount string `json:"amount"` // 金额,单位为:分。整数型字符
MerchantNo string `json:"merchant_no"` // 商户号,拉卡拉分配的商户号
MerchantName string `json:"merchant_name"` // 商户名称
TermNo string `json:"term_no"` // 终端号,拉卡拉分配的业务终端号
Amount string `json:"amount"` // 金额,单位为:分。整数型字符
}
// WxAccRespFields 微信(71-小程序/微信(51-JSAPI)场景下账户端返回信息域
type WxAccRespFields struct {
PrepayId string `json:"prepay_id"` // 预下单ID预支付交易会话ID
PaySign string `json:"pay_sign"` // 支付签名信息
AppId string `json:"app_id"` // 小程序ID商户注册具有支付权限的小程序成功后即可获得小程序ID
TimeStamp string `json:"time_stamp"` // 时间戳,当前的时间
NonceStr string `json:"nonce_str"` // 随机字符串
Package string `json:"package"` // 订单详情扩展字符串
SignType string `json:"sign_type"` // 签名方式签名类型支持RSA
SubMchId string `json:"sub_mch_id"` // 子商户号,账户端子商户号
PrepayId string `json:"prepay_id"` // 预下单ID预支付交易会话ID
PaySign string `json:"pay_sign"` // 支付签名信息
AppId string `json:"app_id"` // 小程序ID商户注册具有支付权限的小程序成功后即可获得小程序ID
TimeStamp string `json:"time_stamp"` // 时间戳,当前的时间
NonceStr string `json:"nonce_str"` // 随机字符串
Package string `json:"package"` // 订单详情扩展字符串
SignType string `json:"sign_type"` // 签名方式签名类型支持RSA
SubMchId string `json:"sub_mch_id"` // 子商户号,账户端子商户号
}
// SuccessOrFail 判断主扫合单交易是否成功
func (m *MergePreorderResponse) SuccessOrFail() bool {
return m.Code == "BBS00000"
}
}

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
// OrderSplitLedgerRequest 订单分账请求结构体
// 用于发起订单分账操作,支持向多个接收方进行分账
// 拉卡拉SDK接口文档订单分账接口
@ -20,7 +22,7 @@ type OrderSplitLedgerReqData struct {
OutSeparateNo string `json:"out_separate_no"` // 商户分账指令流水号必传长度32每个商户号下唯一否则会校验失败
TotalAmt string `json:"total_amt"` // 分账总金额必传长度15单位为分
LklOrgNo string `json:"lkl_org_no"` // 拉卡拉机构编号条件必传长度16
CalType string `json:"cal_type"` // 分账计算类型条件必传长度2取值说明0-按照指定金额1-按照指定比例默认0
CalType consts.CalType `json:"cal_type"` // 分账计算类型条件必传长度2取值说明0-按照指定金额1-按照指定比例默认0
NotifyUrl string `json:"notify_url"` // 回调地址条件必传长度128分账、分账撤销或分账回退时通过该地址通知商户最终处理结果不传时不回调
RecvDatas []*OrderSplitLedgerRecvDatas `json:"recv_datas,omitempty"` // 分账接收数据对象,条件必传,列表类型,分账接收方编号必须已创建
}

View File

@ -1,6 +1,9 @@
package model
import "github.com/gogf/gf/v2/os/gtime"
import (
"github.com/black1552/lkl_sdk/consts"
"github.com/gogf/gf/v2/os/gtime"
)
// Preorder 预下单请求结构体
type Preorder struct {
@ -11,13 +14,14 @@ type Preorder struct {
// PreorderReqData 预下单请求业务数据
type PreorderReqData struct {
MerchantNo string `json:"merchant_no"` // 商户号拉卡拉分配的商户号String(32)
TermNo string `json:"term_no"` // 终端号拉卡拉分配的业务终端号String(32)
OutTradeNo string `json:"out_trade_no"` // 商户交易流水号商户系统唯一对应数据库表中外请求流水号String(32)
AccountType string `json:"account_type"` // 钱包类型微信WECHAT 支付宝ALIPAY 银联UQRCODEPAY 翼支付BESTPAY 苏宁易付宝SUNING 拉卡拉支付账户LKLACC 网联小钱包NUCSPAY 京东钱包JDString(32)
TransType string `json:"trans_type"` // 接入方式41:NATIVEALIPAY, 云闪付支持, 京东白条分期51:JSAPI微信公众号支付, 支付宝服务窗、JS支付, 翼支付JS支付, 拉卡拉钱包支付, 京东白条分期71:微信小程序支付61:APP支付微信APP支付String(2)
TotalAmount string `json:"total_amount"` // 金额单位分整数型字符String(12)
NotifyUrl string `json:"notify_url"` // 商户通知地址,商户通知地址,如果上传,且 pay_order_no 不存在情况下则按此地址通知商户String(128)
MerchantNo string `json:"merchant_no"` // 商户号拉卡拉分配的商户号String(32)
TermNo string `json:"term_no"` // 终端号拉卡拉分配的业务终端号String(32)
OutTradeNo string `json:"out_trade_no"` // 商户交易流水号商户系统唯一对应数据库表中外请求流水号String(32)
AccountType consts.AccountType `json:"account_type"` // 钱包类型微信WECHAT 支付宝ALIPAY 银联UQRCODEPAY 翼支付BESTPAY 苏宁易付宝SUNING 拉卡拉支付账户LKLACC 网联小钱包NUCSPAY 京东钱包JDString(32)
TransType consts.TransType `json:"trans_type"` // 接入方式41:NATIVEALIPAY, 云闪付支持, 京东白条分期51:JSAPI微信公众号支付, 支付宝服务窗、JS支付, 翼支付JS支付, 拉卡拉钱包支付, 京东白条分期71:微信小程序支付61:APP支付微信APP支付String(2)
TotalAmount string `json:"total_amount"` // 金额单位分整数型字符String(12)
NotifyUrl string `json:"notify_url"` // 商户通知地址,商户通知地址,如果上传,且 pay_order_no 不存在情况下则按此地址通知商户String(128)
SettleType consts.SettleType `json:"settle_type"` // “0”或者空常规结算方式如需接拉卡拉分账通需传“1”商户未开通分账之前切记不用上送此参数。
LocationInfo struct {
RequestIp string `json:"request_ip"` // 请求方IP地址存在必填格式如36.45.36.95String(64)
Location string `json:"location"` // 纬度,经度,商户终端的地理位置,银联二维码交易必填,整体格式:纬度,经度,+表示北纬、东经,-表示南纬、西经。经度格式1位正负号+3位整数+1位小数点+5位小数纬度格式1位正负号+2位整数+1位小数点+6位小数举例+31.221345,+121.12345String(32)

View File

@ -1,29 +1,33 @@
package model
import "github.com/gogf/gf/v2/os/gtime"
import (
"github.com/black1552/lkl_sdk/consts"
"github.com/gogf/gf/v2/os/gtime"
)
// Refund 退款请求结构体
type Refund struct {
ReqTime string `json:"req_time"` // 请求时间格式YYYYMMDDHHMMSS
Version string `json:"version"` // 接口版本号,固定值"3.0"
ReqTime string `json:"req_time"` // 请求时间格式YYYYMMDDHHMMSS
Version string `json:"version"` // 接口版本号,固定值"3.0"
ReqData *RefundReqData `json:"req_data"` // 请求业务数据
}
// RefundReqData 退款请求业务数据
type RefundReqData 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),必填
RefundAccMode string `json:"refund_acc_mode"` // 退款账户模式String(2)必填00-调用户余额 65-调商户余额 66-调终端余额 30-调账户
LocationInfo 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),必填
RefundAccMode consts.RefundAccMode `json:"refund_acc_mode"` // 退款账户模式String(2)必填00-调用户余额 65-调商户余额 66-调终端余额 30-调账户
LocationInfo struct {
RequestIp string `json:"request_ip"` // 请求方IP地址请求方的IP地址存在必填格式如36.45.36.95String(64),必填
} `json:"location_info"` // 地址位置信息Object必填
NotifyUrl string `json:"notify_url"` // 后台通知地址交易结果通知地址String(128),选填
OriginLogNo string `json:"origin_log_no"` // 拉卡拉对账单流水号正常退款的拉卡拉对账单流水号String(14),选填
OriginOutTradeNo string `json:"origin_out_trade_no"` // 原始交易商户流水号String(32),选填
OriginTradeNo string `json:"origin_trade_no"` // 原交易拉卡拉交易订单号String(32),选填
RefundSplitMsg string `json:"refund_split_msg"` // 退款分账状态String(2)选填00-为默认01-为分账;分账交易退款必须填写。需要退款上送该笔的分账状态,为分账时,是退分账前处理,还是退分账后处理
NotifyUrl string `json:"notify_url"` // 后台通知地址交易结果通知地址String(128),选填
RefundAmtSts consts.RefundAmtSts `json:"refund_amt_sts"` // 退货资金状态 String(2) 00-为默认01-为分账;分账交易退款必须填写
OriginLogNo string `json:"origin_log_no"` // 拉卡拉对账单流水号正常退款的拉卡拉对账单流水号String(14),选填
OriginOutTradeNo string `json:"origin_out_trade_no"` // 原始交易商户流水号String(32),选填
OriginTradeNo string `json:"origin_trade_no"` // 原交易拉卡拉交易订单号String(32),选填
RefundSplitMsg string `json:"refund_split_msg"` // 退款分账状态String(2)选填00-为默认01-为分账;分账交易退款必须填写。需要退款上送该笔的分账状态,为分账时,是退分账前处理,还是退分账后处理
}
// NewRefund 创建退款请求
@ -37,34 +41,34 @@ func NewRefund(param *RefundReqData) *Refund {
// RefundResponse 退款响应结构体
type RefundResponse struct {
Code string `json:"code"` // 响应码,"000000"表示成功
Msg string `json:"msg"` // 响应信息,对响应码的文字描述
Code string `json:"code"` // 响应码,"000000"表示成功
Msg string `json:"msg"` // 响应信息,对响应码的文字描述
RespData RefundRespData `json:"resp_data"` // 响应业务数据
RespTime string `json:"resp_time"` // 响应时间
RespTime string `json:"resp_time"` // 响应时间
}
// RefundRespData 退款响应业务数据
type RefundRespData struct {
TradeState string `json:"trade_state"` // 交易状态String(15)必填INIT-初始化需商户确认结果SUCCESS-交易成功FAIL-交易失败REFUND-交易退款中需商户确认结果PROCESSING-交易处理中需商户确认结果TIMEOUT-请求超时需商户确认结果EXCEPTION-异常(失败)
RefundType string `json:"refund_type"` // 退款模式String(20),必填
MerchantNo string `json:"merchant_no"` // 商户号拉卡拉分配的商户号String(32),必填
OutTradeNo string `json:"out_trade_no"` // 商户请求流水号请求报文中的商户请求流水号String(32),必填
TradeNo string `json:"trade_no"` // 拉卡拉交易流水号String(32),必填
LogNo string `json:"log_no"` // 拉卡拉对账单流水号String(14),必填
AccType string `json:"acc_type"` // 账户类型String(32),必填
TotalAmount string `json:"total_amount"` // 交易金额单位分整数型字符String(12),必填
RefundAmount string `json:"refund_amount"` // 申请退款金额单位分整数型字符String(12),必填
PayedAmount string `json:"payed_amount"` // 实际退款金额单位分整数型字符String(12),必填
TradeTime string `json:"trade_time"` // 退款时间实际退款时间格式yyyyMMddHHmmssString(14),选填
OriginLogNo string `json:"origin_log_no"` // 原拉卡拉对账单流水号原交易的拉卡拉对账单流水号String(14),选填
TradeState string `json:"trade_state"` // 交易状态String(15)必填INIT-初始化需商户确认结果SUCCESS-交易成功FAIL-交易失败REFUND-交易退款中需商户确认结果PROCESSING-交易处理中需商户确认结果TIMEOUT-请求超时需商户确认结果EXCEPTION-异常(失败)
RefundType string `json:"refund_type"` // 退款模式String(20),必填
MerchantNo string `json:"merchant_no"` // 商户号拉卡拉分配的商户号String(32),必填
OutTradeNo string `json:"out_trade_no"` // 商户请求流水号请求报文中的商户请求流水号String(32),必填
TradeNo string `json:"trade_no"` // 拉卡拉交易流水号String(32),必填
LogNo string `json:"log_no"` // 拉卡拉对账单流水号String(14),必填
AccType string `json:"acc_type"` // 账户类型String(32),必填
TotalAmount string `json:"total_amount"` // 交易金额单位分整数型字符String(12),必填
RefundAmount string `json:"refund_amount"` // 申请退款金额单位分整数型字符String(12),必填
PayedAmount string `json:"payed_amount"` // 实际退款金额单位分整数型字符String(12),必填
TradeTime string `json:"trade_time"` // 退款时间实际退款时间格式yyyyMMddHHmmssString(14),选填
OriginLogNo string `json:"origin_log_no"` // 原拉卡拉对账单流水号原交易的拉卡拉对账单流水号String(14),选填
OriginOutTradeNo string `json:"origin_out_trade_no"` // 原商户请求流水号原交易中的商户请求流水号String(32),选填
OriginTradeNo string `json:"origin_trade_no"` // 原交易拉卡拉交易订单号String(32),选填
UpCouponInfo string `json:"up_coupon_info"` // 银联优惠券信息,目标字段,单位是银联侧返回的四部分内容:{"fundChannel": "BOC", "amount": "10"}String(500),选填
TanteInfo string `json:"tante_info"` // 淘方信息,目标字段,数据是淘方侧返回的四部分内容:{"fundChannel": "BOC", "amount": "10"}String(32),选填
ChannelRetDesc string `json:"channel_ret_desc"` // 渠道返回描述String必填codeMsg: "R000000-成功", "R011122-渠道处理超时"
OriginTradeNo string `json:"origin_trade_no"` // 原交易拉卡拉交易订单号String(32),选填
UpCouponInfo string `json:"up_coupon_info"` // 银联优惠券信息,目标字段,单位是银联侧返回的四部分内容:{"fundChannel": "BOC", "amount": "10"}String(500),选填
TanteInfo string `json:"tante_info"` // 淘方信息,目标字段,数据是淘方侧返回的四部分内容:{"fundChannel": "BOC", "amount": "10"}String(32),选填
ChannelRetDesc string `json:"channel_ret_desc"` // 渠道返回描述String必填codeMsg: "R000000-成功", "R011122-渠道处理超时"
}
// SuccessOrFail 判断退款交易是否成功
func (r *RefundResponse) SuccessOrFail() bool {
return r.Code == "000000"
}
}

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
type SeparateRequest struct {
ReqData *SeparateReqData `json:"req_data"` // 请求数据
Version string `json:"version"` // 版本号
@ -13,7 +15,7 @@ type SeparateReqData struct {
OutSeparateNo string `json:"out_separate_no"` // 商户分账指令流水号
TotalAmt string `json:"total_amt"` // 分账总金额 [单位:分]
LklOrgNo string `json:"lkl_org_no"` // 拉卡拉机构编号 非必填
CalType string `json:"cal_type"` // 分账计算类型 0- 按照指定金额1- 按照指定比例。默认 0 非必填
CalType consts.CalType `json:"cal_type"` // 分账计算类型 0- 按照指定金额1- 按照指定比例。默认 0 非必填
SeparateType string `json:"separate_type"`
NotifyUrl string `json:"notify_url"` // 回调地址 分账,分账撤销或分账回退时,是异步接口。通过该地址通知商户最终处理结果。不传时,不回调
RecvDatas []*SeparateRecvDatas `json:"recv_datas"` // 分账接收数据对象 分账接收方编号必须已创建

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
type UploadFileRequest struct {
ReqData *UploadFileReqData `json:"reqData"`
Ver string `json:"ver"`
@ -8,12 +10,12 @@ type UploadFileRequest struct {
}
type UploadFileReqData struct {
Version string `json:"version"`
OrderNo string `json:"orderNo"`
AttType string `json:"attType"`
AttExtName string `json:"attExtName"`
AttContext string `json:"attContext"`
OrgCode string `json:"orgCode"`
Version string `json:"version"`
OrderNo string `json:"orderNo"`
AttType consts.AttType `json:"attType"`
AttExtName string `json:"attExtName"`
AttContext string `json:"attContext"`
OrgCode string `json:"orgCode"`
}
type UploadFileResponse struct {

View File

@ -1,5 +1,7 @@
package model
import "github.com/black1552/lkl_sdk/consts"
// WithdrawRequest 提现请求结构体
// 用于向拉卡拉接口发送提现请求
// 包含请求头信息和业务数据
@ -29,7 +31,7 @@ type WithdrawReqData struct {
// 账号若该参数上送则payType将无效非必传最大长度32
PayNo string `json:"pay_no"`
// 账号类型01收款账户04分账接收方账户未上送则默认01必传最大长度32分账接收方提现时需填04
PayType string `json:"pay_type"`
PayType consts.PayType `json:"pay_type"`
// 备注信息非必传最大长度64
Remark string `json:"remark"`
// 摘要非必传最大长度64
@ -64,4 +66,4 @@ type WithdrawRespData struct {
// 返回值true表示成功false表示失败
func (resp *WithdrawResponse) SuccessOrFail() bool {
return resp.Code == "000000"
}
}