first commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package model
|
||||
|
||||
// ApplyBindRequest 分账关系绑定请求结构体
|
||||
// 用于发起分账接收方与商户的关系绑定申请
|
||||
// 拉卡拉SDK接口文档:分账关系绑定接口
|
||||
|
||||
type ApplyBindRequest struct {
|
||||
ReqData *ApplyBindReqData `json:"reqData"` // 请求业务数据
|
||||
ReqId string `json:"reqId"` // 请求ID,唯一标识一笔请求
|
||||
Version string `json:"version"` // 接口版本号
|
||||
ReqTime string `json:"reqTime"` // 请求时间,格式为yyyyMMddHHmmss
|
||||
}
|
||||
|
||||
// ApplyBindReqData 分账关系绑定请求业务数据结构体
|
||||
// 包含分账关系绑定所需的详细业务参数
|
||||
|
||||
type ApplyBindReqData struct {
|
||||
Version string `json:"version"` // 接口版本号,必传,长度8,取值说明:1.0
|
||||
OrderNo string `json:"orderNo"` // 订单编号,必传,长度32,用于后续跟踪排查问题及核对报文,格式为14位年月日(24小时制)分秒+8位随机数(不重复)
|
||||
OrgCode string `json:"orgCode"` // 分账接收方所属机构代码,必传,长度32
|
||||
MerInnerNo string `json:"merInnerNo"` // 分账商户内部商户号,必传,长度32,与MerCupNo选传其一,不能都为空
|
||||
MerCupNo string `json:"merCupNo"` // 分账商户银联商户号,必传,长度32,与MerInnerNo选传其一,不能都为空
|
||||
ReceiverNo string `json:"receiverNo"` // 分账接收方编号,必传,长度32
|
||||
EntrustFileName string `json:"entrustFileName"` // 合作协议附件名称,必传,长度32
|
||||
EntrustFilePath string `json:"entrustFilePath"` // 合作协议附件路径,必传,长度32,通过调用附件上传接口获取
|
||||
RetUrl string `json:"retUrl"` // 回调通知地址,必传,长度128,审核通过后通知地址
|
||||
Attachments []struct {
|
||||
AttachType string `json:"attachType"` // 附件类型编码,必传,长度32
|
||||
AttachName string `json:"attachName"` // 附件名称,必传,长度32
|
||||
AttachStorePath string `json:"attachStorePath"` // 附件路径,必传,长度128,通过调用附件上传接口获取
|
||||
} `json:"attachments,omitempty"` // 附加资料,可选,集合类型,其他附加资料文件信息
|
||||
}
|
||||
|
||||
// ApplyBindResponse 分账关系绑定响应结构体
|
||||
// 包含分账关系绑定申请的处理结果信息
|
||||
|
||||
type ApplyBindResponse struct {
|
||||
RetCode string `json:"retCode"` // 响应码,000000表示成功
|
||||
RetMsg string `json:"retMsg"` // 响应消息,描述响应结果
|
||||
RespData struct {
|
||||
Version string `json:"version"` // 接口版本号,例如:547110502170558464
|
||||
OrderNo string `json:"orderNo"` // 订单编号,例如:2021020112000012345678
|
||||
OrgCode string `json:"orgCode"` // 机构代码,例如:200669
|
||||
ApplyId int64 `json:"applyId"` // 受理编号,例如:548099616395186176
|
||||
} `json:"respData"` // 响应业务数据,当retCode为000000时返回
|
||||
}
|
||||
|
||||
func (a *ApplyBindResponse) SuccessOrFail() bool {
|
||||
return a.RetCode == "000000"
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package model
|
||||
|
||||
// ApplyLedgerMerRequest 商户分账业务开通申请请求结构体
|
||||
type ApplyLedgerMerRequest struct {
|
||||
ReqData *ApplyLedgerMerReqData `json:"reqData"` // 请求业务数据
|
||||
ReqId string `json:"reqId"` // 请求ID
|
||||
Version string `json:"version"` // 接口版本号
|
||||
ReqTime string `json:"reqTime"` // 请求时间
|
||||
}
|
||||
|
||||
// ApplyLedgerMerReqData 商户分账业务开通申请请求业务数据结构体
|
||||
type ApplyLedgerMerReqData struct {
|
||||
Version string `json:"version"` // 版本号,必传,长度8,取值说明:1.0
|
||||
OrderNo string `json:"orderNo"` // 订单编号,必传,长度32,用于后续处理查询及回调通知消息标识,2014年月日时分秒毫秒组成
|
||||
OrgCode string `json:"orgCode"` // 机构代码,必传,长度12
|
||||
MerInnerNo string `json:"merInnerNo"` // 拉卡拉内部商户号,可选,长度32,拉卡拉内部商户号和银联商户号必须传一个,默认以内部商户号为准
|
||||
MerCupNo string `json:"merCupNo"` // 银联商户号,可选,长度32,拉卡拉内部商户号和银联商户号必须传一个,默认以内部商户号为准
|
||||
ContactMobile string `json:"contactMobile"` // 联系手机号,必传,长度32
|
||||
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-金额分账
|
||||
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-平台分润规则(分润规则必传)
|
||||
RetUrl string `json:"retUrl"` // 回调通知地址,必传,长度128,分账申请结果以异步消息或同步返回的方式通知,如需无线路由处理,也可以通过第三方商户信息查询接口确定结算结果
|
||||
Attachments []struct {
|
||||
AttachType string `json:"attachType"` // 附件类型编码,必传,长度32
|
||||
AttachName string `json:"attachName"` // 附件名称,必传,长度32
|
||||
AttachStorePath string `json:"attachStorePath"` // 附件路径,必传,长度128,调用附件上传接口获取
|
||||
} `json:"attachments,omitempty"` // 附加资料,可选,集合,其他需附加的文件信息
|
||||
}
|
||||
|
||||
// ApplyLedgerMerResponse 商户分账业务开通申请响应结构体
|
||||
type ApplyLedgerMerResponse struct {
|
||||
RetCode string `json:"retCode"` // 返回码,000000表示成功
|
||||
RetMsg string `json:"retMsg"` // 返回消息
|
||||
RespData struct {
|
||||
Version string `json:"version"` // 接口版本号,例如:547110502170558464
|
||||
OrderNo string `json:"orderNo"` // 订单编号,例如:2021020112000012345678
|
||||
OrgCode string `json:"orgCode"` // 机构代码,例如:200669
|
||||
ApplyId int64 `json:"applyId"` // 受理编号,例如:548099616395186176
|
||||
} `json:"respData"` // 响应数据
|
||||
}
|
||||
|
||||
func (a *ApplyLedgerMerResponse) SuccessOrFail() bool {
|
||||
return a.RetCode == "000000"
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package model
|
||||
|
||||
// ApplyLedgerReceiverRequest 分账接收方创建请求结构体
|
||||
// 用于向拉卡拉接口发送分账接收方创建请求
|
||||
// 包含请求头信息和业务数据
|
||||
type ApplyLedgerReceiverRequest struct {
|
||||
// 请求业务数据
|
||||
ReqData *ApplyLedgerReceiverReqData `json:"reqData"`
|
||||
// 请求ID,用于幂等性校验
|
||||
ReqId string `json:"reqId"`
|
||||
// 接口版本号
|
||||
Version string `json:"version"`
|
||||
// 请求时间,格式为yyyyMMddHHmmss
|
||||
ReqTime string `json:"reqTime"`
|
||||
}
|
||||
|
||||
// ApplyLedgerReceiverReqData 分账接收方创建请求业务数据结构体
|
||||
// 包含分账接收方创建所需的具体业务参数
|
||||
// 用于创建分账接收方信息
|
||||
type ApplyLedgerReceiverReqData struct {
|
||||
// 接口版本号,必传,长度8,取值说明:1.0
|
||||
Version string `json:"version"`
|
||||
// 订单编号(便于后续跟踪排查问题及核对报文),必传,长度32,取值说明:14位年月日(24小时制)分秒+8位的随机数(不重复)
|
||||
OrderNo string `json:"orderNo"`
|
||||
// 机构代码,必传,长度32
|
||||
OrgCode string `json:"orgCode"`
|
||||
// 分账接收方名称,必传,长度64
|
||||
ReceiverName string `json:"receiverName"`
|
||||
// 联系手机号,必传,长度16
|
||||
ContactMobile string `json:"contactMobile"`
|
||||
// 营业执照号码,可选,长度32,取值说明:收款账户类型为对公,必须上送
|
||||
LicenseNo string `json:"licenseNo"`
|
||||
// 营业执照名称,可选,长度128,取值说明:收款账户类型为对公,必须上送
|
||||
LicenseName string `json:"licenseName"`
|
||||
// 法人姓名,可选,长度32,取值说明:收款账户类型为对公,必须上送
|
||||
LegalPersonName string `json:"legalPersonName"`
|
||||
// 法人证件类型,可选,长度32,取值说明:17身份证,18护照,19港澳居民来往内地通行证,20台湾居民来往内地通行证,收款账户类型为对公,必须上送,身份证外类型先咨询后再使用
|
||||
LegalPersonCertificateType string `json:"legalPersonCertificateType"`
|
||||
// 法人证件号,可选,长度32,取值说明:收款账户类型为对公,必须上送
|
||||
LegalPersonCertificateNo string `json:"legalPersonCertificateNo"`
|
||||
// 收款账户卡号,必传,长度32
|
||||
AcctNo string `json:"acctNo"`
|
||||
// 收款账户名称,必传,长度32
|
||||
AcctName string `json:"acctName"`
|
||||
// 收款账户类型代码,必传,长度32,取值说明:57:对公,58:对私
|
||||
AcctTypeCode string `json:"acctTypeCode"`
|
||||
// 收款账户证件类型,必传,长度32,取值说明:17身份证,18护照,19港澳居民来往内地通行证,20台湾居民来往内地通行证,身份证外类型先咨询后再使用
|
||||
AcctCertificateType string `json:"acctCertificateType"`
|
||||
// 收款账户证件号,必传,长度32
|
||||
AcctCertificateNo string `json:"acctCertificateNo"`
|
||||
// 收款账户开户行号,必传,长度32,取值说明:参照FBI.N信息查询,仅支持对私结算账户
|
||||
AcctOpenBankCode string `json:"acctOpenBankCode"`
|
||||
// 收款账户开户行名称,必传,长度64,取值说明:参照FBI.N信息查询,仅支持对私结算账户
|
||||
AcctOpenBankName string `json:"acctOpenBankName"`
|
||||
// 收款账户清算行行号,必传,长度32,取值说明:参照FBI.N信息查询,仅支持对私结算账户
|
||||
AcctClearBankCode string `json:"acctClearBankCode"`
|
||||
// 接收方附件资料,可选,集合
|
||||
AttachList []struct {
|
||||
// 附件名称,可选,长度32
|
||||
AttachName string `json:"attachName"`
|
||||
// 附件路径,可选,长度32,取值说明:(调用进件附件上传接口获取到附件路径)
|
||||
AttachStorePath string `json:"attachStorePath"`
|
||||
// 附件类型编码,可选,长度32
|
||||
AttachType string `json:"attachType"`
|
||||
} `json:"attachList"`
|
||||
// 提款类型,可选,长度32,取值说明:01:主动提款,03:交易自动结算,不填默认01
|
||||
SettleType string `json:"settleType"`
|
||||
}
|
||||
|
||||
// ApplyLedgerReceiverResponse 分账接收方创建响应结构体
|
||||
// 拉卡拉接口返回的分账接收方创建响应数据
|
||||
// 包含响应状态码、消息和业务数据
|
||||
type ApplyLedgerReceiverResponse struct {
|
||||
// 响应状态码,000000表示成功
|
||||
RetCode string `json:"retCode"`
|
||||
// 响应消息
|
||||
RetMsg string `json:"retMsg"`
|
||||
// 响应业务数据,当retCode为000000时返回
|
||||
RespData *ApplyLedgerReceiverRespData `json:"respData"`
|
||||
}
|
||||
|
||||
// ApplyLedgerReceiverRespData 分账接收方创建响应业务数据结构体
|
||||
// 包含分账接收方创建返回的具体业务信息
|
||||
type ApplyLedgerReceiverRespData struct {
|
||||
// 接口版本号(回传)
|
||||
Version string `json:"version"`
|
||||
// 订单编号(回传)
|
||||
OrderNo string `json:"orderNo"`
|
||||
// 申请机构代码(回传)
|
||||
OrgCode string `json:"orgCode"`
|
||||
// 接收方所属机构
|
||||
OrgId string `json:"orgId"`
|
||||
// 接收方所属机构名称
|
||||
OrgName string `json:"orgName"`
|
||||
// 接收方编号
|
||||
ReceiverNo string `json:"receiverNo"`
|
||||
}
|
||||
|
||||
// SuccessOrFail 判断分账接收方创建请求是否成功
|
||||
// 成功条件:响应码为000000
|
||||
// 返回值:true表示成功,false表示失败
|
||||
func (resp *ApplyLedgerReceiverResponse) SuccessOrFail() bool {
|
||||
return resp.RetCode == "000000"
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package model
|
||||
|
||||
// BalanceQueryRequest 余额查询请求结构体
|
||||
// 用于向拉卡拉接口发送余额查询请求
|
||||
// 包含请求头信息和业务数据
|
||||
type BalanceQueryRequest struct {
|
||||
// 请求业务数据
|
||||
ReqData *BalanceQueryReqData `json:"req_data"`
|
||||
// 接口版本号
|
||||
Version string `json:"version"`
|
||||
// 请求时间,格式为yyyyMMddHHmmss
|
||||
ReqTime string `json:"req_time"`
|
||||
}
|
||||
|
||||
// BalanceQueryReqData 余额查询请求业务数据结构体
|
||||
// 包含余额查询所需的具体业务参数
|
||||
// 用于查询账户的实时余额信息
|
||||
type BalanceQueryReqData struct {
|
||||
// 机构号,必传,最大长度32
|
||||
OrgNo string `json:"org_no"`
|
||||
// 商户号或receiveNo或商户用户编号,必传,最大长度32
|
||||
MerchantNo string `json:"merchant_no"`
|
||||
// 账号,若该参数上送,则payType将无效,非必传,最大长度32
|
||||
PayNo string `json:"pay_no"`
|
||||
// 账号类型(01:收款账户,02:付款账户,03:分账商户账户,04:分账接收方账户,05:充值代付账户,06:结算代付账户)-未上送则默认01,非必传,最大长度32
|
||||
PayType string `json:"pay_type"`
|
||||
// 账户标志(01:一般账户;03:虚户)-未上送则默认01,非必传,最大长度32
|
||||
MgtFlag string `json:"mgt_flag"`
|
||||
}
|
||||
|
||||
// BalanceQueryResponse 余额查询响应结构体
|
||||
// 拉卡拉接口返回的余额查询响应数据
|
||||
// 包含响应状态码、消息和业务数据
|
||||
type BalanceQueryResponse struct {
|
||||
// 响应状态码,000000
|
||||
Code string `json:"code"`
|
||||
// 响应消息
|
||||
Msg string `json:"msg"`
|
||||
// 响应业务数据,当code为SACS0000时返回
|
||||
RespData *BalanceQueryRespData `json:"resp_data"`
|
||||
}
|
||||
|
||||
// BalanceQueryRespData 余额查询响应业务数据结构体
|
||||
// 包含余额查询返回的具体账户信息
|
||||
type BalanceQueryRespData struct {
|
||||
// 账号,必传
|
||||
PayNo string `json:"pay_no"`
|
||||
// 账户类型,必传
|
||||
PayType string `json:"pay_type"`
|
||||
// 账户状态,必传,取值说明:CLOSE销户,NORMAL正常,FREEZE冻结,STOPAY止付
|
||||
AcctSt string `json:"acct_st"`
|
||||
// 预付余额(单位元),必传
|
||||
ForceBalance string `json:"force_balance"`
|
||||
// 上日余额(单位元)-该字段已废弃使用,必传
|
||||
HisBalance string `json:"his_balance"`
|
||||
// 实时余额(单位元),必传
|
||||
ReBalance string `json:"re_balance"`
|
||||
// 当前可用余额(单位元),必传
|
||||
CuBalance string `json:"cu_balance"`
|
||||
}
|
||||
|
||||
// SuccessOrFail 判断余额查询请求是否成功
|
||||
// 成功条件:响应码为SACS0000
|
||||
// 返回值:true表示成功,false表示失败
|
||||
func (resp *BalanceQueryResponse) SuccessOrFail() bool {
|
||||
return resp.Code == "000000"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package model
|
||||
|
||||
type BaseModel[T any] struct {
|
||||
ReqTime string `json:"req_time"`
|
||||
Version string `json:"version"`
|
||||
ReqData T `json:"req_data"`
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package model
|
||||
|
||||
import "github.com/gogf/gf/v2/os/gtime"
|
||||
|
||||
// MergePreorder 主扫合单交易请求结构体
|
||||
type MergePreorder struct {
|
||||
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 京东钱包:JD,String(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),选填
|
||||
}
|
||||
|
||||
// OutSplitInfo 拆单信息
|
||||
type OutSplitInfo struct {
|
||||
OutSubTradeNo string `json:"out_sub_trade_no"` // 外部子交易流水号,商户子交易流水号,商户号下唯一,String(32),必填
|
||||
MerchantNo string `json:"merchant_no"` // 商户号,拉卡拉分配的商户号,String(32),必填
|
||||
TermNo string `json:"term_no"` // 终端号,拉卡拉分配的业务终端号,String(32),必填
|
||||
Amount string `json:"amount"` // 金额,单位分,整数型字符,String(12),必填
|
||||
SettleType string `json:"settle_type"` // 结算类型(单台),"0"或者空,常规结算方式,String(4),选填
|
||||
SubRemark string `json:"sub_remark"` // 子备注,子单备注信息,String(64),选填
|
||||
}
|
||||
|
||||
// LocationInfo 地址位置信息
|
||||
type LocationInfo struct {
|
||||
RequestIp string `json:"request_ip"` // 请求方IP地址,请求方的IP地址,存在必填,格式如36.45.36.95,String(64),必填
|
||||
BaseStation string `json:"base_station"` // 基站信息,客户端设备的基站信息(主扫时基站信息使用该字段),String(128),选填
|
||||
Location string `json:"location"` // 维度,经度,商户终端的地理位置,存在必填格式:纬度,经度,+表示北纬、东经,-表示南纬、西经,精度最长支持小数点后9位。举例:+37.123456789,121.123456789,String(32),选填
|
||||
}
|
||||
|
||||
// AccBusiFields 账户端业务信息域,微信主扫场景
|
||||
type AccBusiFields struct {
|
||||
TimeoutExpress string `json:"timeout_express"` // 预下单的订单的有效时间,以分钟为单位。如果在有效时间内没有完成付款,则在账户端该订单失效。如用户超时,则账户端完成失效处理,建议不超过15分钟。不传值则默认5分钟,String(2),选填
|
||||
SubAppId string `json:"sub_appid"` // 子商户公众账号ID,sub_appid(即微信小程序支付-71、公众号支付-51、微信支付-61),此参数必传,只对微信支付生效;拉卡拉钱包情况下,该字段上送LAKALA的openid,String(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,由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。如"商品编码",必填
|
||||
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),必填
|
||||
}
|
||||
|
||||
// NewMergePreorder 创建主扫合单交易请求
|
||||
func NewMergePreorder(param *MergePreorderReqData) *MergePreorder {
|
||||
return &MergePreorder{
|
||||
ReqTime: gtime.Now().Format("YmdHis"),
|
||||
Version: "3.0",
|
||||
ReqData: param,
|
||||
}
|
||||
}
|
||||
|
||||
// MergePreorderResponse 主扫合单交易响应结构体
|
||||
type MergePreorderResponse struct {
|
||||
Code string `json:"code"` // 响应码,BBS00000表示成功
|
||||
Msg string `json:"msg"` // 响应信息,对响应码的文字描述
|
||||
ReqData MergePreorderRespData `json:"resp_data"` // 响应业务数据
|
||||
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"` // 账户端返回信息域
|
||||
}
|
||||
|
||||
// SplitInfo 拆单信息
|
||||
type SplitInfo struct {
|
||||
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"` // 金额,单位为:分。整数型字符
|
||||
}
|
||||
|
||||
// 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"` // 子商户号,账户端子商户号
|
||||
}
|
||||
|
||||
// SuccessOrFail 判断主扫合单交易是否成功
|
||||
func (m *MergePreorderResponse) SuccessOrFail() bool {
|
||||
return m.Code == "BBS00000"
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package model
|
||||
|
||||
// OrderSplitLedgerRequest 订单分账请求结构体
|
||||
// 用于发起订单分账操作,支持向多个接收方进行分账
|
||||
// 拉卡拉SDK接口文档:订单分账接口
|
||||
|
||||
type OrderSplitLedgerRequest struct {
|
||||
ReqData *OrderSplitLedgerReqData `json:"req_data"` // 请求业务数据
|
||||
Version string `json:"version"` // 接口版本号
|
||||
ReqTime string `json:"req_time"` // 请求时间,格式为yyyyMMddHHmmss
|
||||
}
|
||||
|
||||
// OrderSplitLedgerReqData 订单分账请求业务数据结构体
|
||||
// 包含订单分账所需的详细业务参数
|
||||
|
||||
type OrderSplitLedgerReqData struct {
|
||||
MerchantNo string `json:"merchant_no"` // 商户号,必传,长度32
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账单流水号,必传,长度14,posp流水号,用于查询结算
|
||||
LogDate string `json:"log_date"` // 交易日期,必传,长度8,posp日期,格式为yyyyMMdd,用于查询结算
|
||||
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
|
||||
NotifyUrl string `json:"notify_url"` // 回调地址,条件必传,长度128,分账、分账撤销或分账回退时,通过该地址通知商户最终处理结果,不传时不回调
|
||||
RecvDatas []*OrderSplitLedgerRecvDatas `json:"recv_datas,omitempty"` // 分账接收数据对象,条件必传,列表类型,分账接收方编号必须已创建
|
||||
}
|
||||
|
||||
type OrderSplitLedgerRecvDatas struct {
|
||||
RecvMerchantNo string `json:"recv_merchant_no"` // 接收方商户号,条件必传,长度32,分账接收方商户号,分给自己时使用,需和merchantNo一样,否则检查报错;分账接收方商户号和分账接收方只能填写一个
|
||||
RecvNo string `json:"recv_no"` // 分账接收方编号,条件必传,长度32,分账接收方编号,分给他人时使用;分账接收方商户号和分账接收方只能填写一个
|
||||
SeparateValue string `json:"separate_value"` // 分账数值,必传,长度32,calType为0时按照固定金额分账(单位:分),calType为1时按照比例分账(单位:百分比的小数值,如0.55表示55%)
|
||||
}
|
||||
|
||||
// OrderSplitLedgerResponse 订单分账响应结构体
|
||||
// 包含订单分账操作的处理结果信息
|
||||
|
||||
type OrderSplitLedgerResponse struct {
|
||||
Msg string `json:"msg"` // 响应消息,描述响应结果
|
||||
RespTime string `json:"resp_time"` // 响应时间,格式为yyyyMMddHHmmss
|
||||
Code string `json:"code"` // 响应码,SACS0000表示成功
|
||||
RespData struct {
|
||||
SeparateNo string `json:"separate_no"` // 分账指令流水号,必传,长度32,分账系统生成唯一流水
|
||||
OutSeparateNo string `json:"out_separate_no"` // 商户订单号,必传,长度32,请求报文中的商户外部订单号
|
||||
Status string `json:"status"` // 分账状态,条件必传,长度16,取值说明:处理中-PROCESSING,已受理-ACCEPTED,成功-SUCCESS,失败-FAIL
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账单流水号,条件必传,长度14,请求透返
|
||||
LogDate string `json:"log_date"` // 拉卡拉订单日期,条件必传,长度8,posp日期,格式为yyyyMMdd,用于查询结算
|
||||
TotalAmt string `json:"total_amt"` // 分账总金额,条件必传,长度15,单位为分
|
||||
} `json:"resp_data"` // 响应业务数据,当code为SACS0000时返回
|
||||
}
|
||||
|
||||
// SuccessOrFail 判断分账请求是否成功
|
||||
// 返回true表示成功,false表示失败
|
||||
func (s *OrderSplitLedgerResponse) SuccessOrFail() bool {
|
||||
return s.Code == "SACS0000"
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package model
|
||||
|
||||
import "github.com/gogf/gf/v2/os/gtime"
|
||||
|
||||
// Preorder 预下单请求结构体
|
||||
type Preorder struct {
|
||||
ReqTime string `json:"req_time"` // 请求时间,格式:YYYYMMDDHHMMSS
|
||||
Version string `json:"version"` // 接口版本号,固定值"3.0"
|
||||
ReqData *PreorderReqData `json:"req_data"` // 请求业务数据
|
||||
}
|
||||
|
||||
// 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 京东钱包:JD,String(32)
|
||||
TransType string `json:"trans_type"` // 接入方式,41:NATIVE(ALIPAY, 云闪付支持, 京东白条分期)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)
|
||||
LocationInfo struct {
|
||||
RequestIp string `json:"request_ip"` // 请求方IP地址,存在必填,格式如36.45.36.95,String(64)
|
||||
Location string `json:"location"` // 纬度,经度,商户终端的地理位置,银联二维码交易必填,整体格式:纬度,经度,+表示北纬、东经,-表示南纬、西经。经度格式:1位正负号+3位整数+1位小数点+5位小数;纬度格式:1位正负号+2位整数+1位小数点+6位小数;举例:+31.221345,+121.12345,String(32)
|
||||
} `json:"location_info"` // 地址位置信息,Object
|
||||
Subject string `json:"subject"` // 订单标题,用于简单描述订单或商品主题,传输给账户端(账户端控制,实际最多42个字节),微信支付必送,String(42)
|
||||
}
|
||||
|
||||
func NewPreorder(param *PreorderReqData) *Preorder {
|
||||
return &Preorder{
|
||||
ReqTime: gtime.Now().Format("YmdHis"),
|
||||
Version: "3.0",
|
||||
ReqData: param,
|
||||
}
|
||||
}
|
||||
|
||||
// PreorderResponse 预下单响应结构体
|
||||
type PreorderResponse struct {
|
||||
Code string `json:"code"` // 响应码,BBS00000表示成功
|
||||
Msg string `json:"msg"` // 响应信息,对响应码的文字描述
|
||||
ReqData ReqData `json:"resp_data"` // 响应业务数据
|
||||
RespTime string `json:"resp_time"` // 响应时间
|
||||
}
|
||||
|
||||
// ReqData 响应业务数据
|
||||
type ReqData struct {
|
||||
MerchantNo string `json:"merchant_no"` // 商户号
|
||||
OutTradeNo string `json:"out_trade_no"` // 外部订单号(商户订单号)
|
||||
TradeNo string `json:"trade_no"` // 交易号,拉卡拉生成的订单号
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账单流水号
|
||||
SettleMerchantNo string `json:"settle_merchant_no"` // 结算商户号
|
||||
SettleTermNo string `json:"settle_term_no"` // 结算终端号
|
||||
AccRespFields WxPreorderResponse `json:"acc_resp_fields"` // 支付通道返回的具体信息
|
||||
|
||||
}
|
||||
|
||||
// WxPreorderResponse 支付通道返回的具体信息
|
||||
type WxPreorderResponse struct {
|
||||
Code string `json:"code"` // 返回码
|
||||
CodeImage string `json:"code_image"` // 二维码图片Base64编码
|
||||
PrepayId string `json:"prepay_id"` // 预支付ID
|
||||
AppId string `json:"app_id"` // 应用ID
|
||||
PaySign string `json:"pay_sign"` // 签名
|
||||
TimeStamp string `json:"time_stamp"` // 时间戳
|
||||
NonceStr string `json:"nonce_str"` // 随机字符串
|
||||
Package string `json:"package"` // 订单详情扩展字符串
|
||||
SignType string `json:"sign_type"` // 签名方式
|
||||
FormData string `json:"form_data"` // 表单数据
|
||||
RedirectUrl string `json:"redirect_url"` // 重定向URL
|
||||
BestPayInfo string `json:"best_pay_info"` // 翼支付信息
|
||||
PartnerId string `json:"partner_id"` // 合作伙伴ID
|
||||
SubMchId string `json:"sub_mch_id"` // 子商户ID
|
||||
}
|
||||
|
||||
func (p *PreorderResponse) SuccessOrFail() bool {
|
||||
return p.Code == "BBS00000"
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package model
|
||||
|
||||
// QueryLedgerMerRequest 分账商户查询请求结构体
|
||||
// 用于向拉卡拉接口发送分账商户查询请求
|
||||
// 包含请求头信息和业务数据
|
||||
type QueryLedgerMerRequest struct {
|
||||
// 请求业务数据
|
||||
ReqData *QueryLedgerMerReqData `json:"req_data"`
|
||||
// 接口版本号
|
||||
Version string `json:"version"`
|
||||
// 请求时间,格式为yyyyMMddHHmmss
|
||||
ReqTime string `json:"req_time"`
|
||||
}
|
||||
|
||||
// QueryLedgerMerReqData 分账商户查询请求业务数据结构体
|
||||
// 包含分账商户查询所需的具体业务参数
|
||||
// 用于查询商户的分账设置信息
|
||||
type QueryLedgerMerReqData struct {
|
||||
// 接口版本号,必传,长度8,取值说明:1.0
|
||||
Version string `json:"version"`
|
||||
// 订单编号(便于后续跟踪排查问题及核对报文),必传,长度32,取值说明:14位年月日(24小时制)分秒+8位的随机数(不重复)
|
||||
OrderNo string `json:"order_no"`
|
||||
// 机构代码,必传,长度32
|
||||
OrgCode string `json:"org_code"`
|
||||
// 拉卡拉内部商户号,可选,长度32,取值说明:拉卡拉内部商户号和银联商户号必须传一个,都送以内部商户号为准
|
||||
MerInnerNo string `json:"mer_inner_no"`
|
||||
// 银联商户号,可选,长度32,取值说明:拉卡拉内部商户号和银联商户号必须传一个,都送以内部商户号为准
|
||||
MerCupNo string `json:"mer_cup_no"`
|
||||
}
|
||||
|
||||
// QueryLedgerMerResponse 分账商户查询响应结构体
|
||||
// 拉卡拉接口返回的分账商户查询响应数据
|
||||
// 包含响应状态码、消息和业务数据
|
||||
type QueryLedgerMerResponse struct {
|
||||
// 响应状态码,000000表示成功
|
||||
Code string `json:"code"`
|
||||
// 响应消息
|
||||
Msg string `json:"msg"`
|
||||
// 响应业务数据,当code为000000时返回
|
||||
RespData *QueryLedgerMerRespData `json:"resp_data"`
|
||||
}
|
||||
|
||||
// QueryLedgerMerRespData 分账商户查询响应业务数据结构体
|
||||
// 包含分账商户查询返回的具体业务信息
|
||||
type QueryLedgerMerRespData struct {
|
||||
// 分账商户机构号
|
||||
OrgId string `json:"org_id"`
|
||||
// 分账商户机构名称
|
||||
OrgName string `json:"org_name"`
|
||||
// 拉卡拉内部商户号
|
||||
MerInnerNo string `json:"mer_inner_no"`
|
||||
// 银联商户号
|
||||
MerCupNo string `json:"mer_cup_no"`
|
||||
// 最低分账比例(百分比,支持2位精度),取值说明:70或70.50
|
||||
SplitLowestRatio string `json:"split_lowest_ratio"`
|
||||
// 商户分账状态,取值说明:VALID启用,INVALID禁用
|
||||
SplitStatus string `json:"split_status"`
|
||||
// 分账范围,取值说明:ALL:全部交易分账(商户所有交易默认待分账),MARK:标记交易分账(只有带分账标识交易待分账,其余交易正常结算),默认:MARK
|
||||
SplitRange string `json:"split_range"`
|
||||
// 分账依据,取值说明:TR或空:交易分账,BA:余额分账,默认:TR交易分账
|
||||
SepFundSource string `json:"sep_fund_source"`
|
||||
// 平台ID,取值说明:如果商户和绑定平台分账,返回平台ID
|
||||
PlatformId string `json:"platform_id"`
|
||||
// 分账发起方式,取值说明:AUTO:自动规则分账,POINTRULE:指定规则分账,MANUAL:手动规则分账
|
||||
SplitLaunchMode string `json:"split_launch_mode"`
|
||||
// 分账规则来源,取值说明:MER:商户分账规则,PLATFORM:平台分账规则
|
||||
SplitRuleSource string `json:"split_rule_source"`
|
||||
// 已绑定接收方列表
|
||||
BindRelations []BindRelation `json:"bind_relations"`
|
||||
}
|
||||
|
||||
// BindRelation 已绑定接收方信息结构体
|
||||
// 用于表示分账商户已绑定的接收方信息
|
||||
type BindRelation struct {
|
||||
// 拉卡拉内部商户号
|
||||
MerInnerNo string `json:"mer_inner_no"`
|
||||
// 银联商户号
|
||||
MerCupNo string `json:"mer_cup_no"`
|
||||
// 接收方编号
|
||||
ReceiverNo string `json:"receiver_no"`
|
||||
// 接收方编号名称
|
||||
ReceiverName string `json:"receiver_name"`
|
||||
}
|
||||
|
||||
// SuccessOrFail 判断分账商户查询请求是否成功
|
||||
// 成功条件:响应码为000000
|
||||
// 返回值:true表示成功,false表示失败
|
||||
func (resp *QueryLedgerMerResponse) SuccessOrFail() bool {
|
||||
return resp.Code == "000000"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package model
|
||||
|
||||
import "github.com/gogf/gf/v2/os/gtime"
|
||||
|
||||
// Refund 退款请求结构体
|
||||
type Refund struct {
|
||||
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 {
|
||||
RequestIp string `json:"request_ip"` // 请求方IP地址,请求方的IP地址,存在必填,格式如36.45.36.95,String(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-为分账;分账交易退款必须填写。需要退款上送该笔的分账状态,为分账时,是退分账前处理,还是退分账后处理
|
||||
}
|
||||
|
||||
// NewRefund 创建退款请求
|
||||
func NewRefund(param *RefundReqData) *Refund {
|
||||
return &Refund{
|
||||
ReqTime: gtime.Now().Format("YmdHis"),
|
||||
Version: "3.0",
|
||||
ReqData: param,
|
||||
}
|
||||
}
|
||||
|
||||
// RefundResponse 退款响应结构体
|
||||
type RefundResponse struct {
|
||||
Code string `json:"code"` // 响应码,"000000"表示成功
|
||||
Msg string `json:"msg"` // 响应信息,对响应码的文字描述
|
||||
RespData RefundRespData `json:"resp_data"` // 响应业务数据
|
||||
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"` // 退款时间,实际退款时间,格式:yyyyMMddHHmmss,String(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-渠道处理超时"
|
||||
}
|
||||
|
||||
// SuccessOrFail 判断退款交易是否成功
|
||||
func (r *RefundResponse) SuccessOrFail() bool {
|
||||
return r.Code == "000000"
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package model
|
||||
|
||||
type SeparateRequest struct {
|
||||
ReqData *SeparateReqData `json:"req_data"` // 请求数据
|
||||
Version string `json:"version"` // 版本号
|
||||
ReqTime string `json:"req_time"` // 请求时间
|
||||
}
|
||||
|
||||
type SeparateReqData struct {
|
||||
MerchantNo string `json:"merchant_no"` // 商户号
|
||||
LogDate string `json:"log_date"` // 交易日期 yyyyMMdd,查清结算用
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账单流水号
|
||||
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 非必填
|
||||
SeparateType string `json:"separate_type"`
|
||||
NotifyUrl string `json:"notify_url"` // 回调地址 分账,分账撤销或分账回退时,是异步接口。通过该地址通知商户最终处理结果。不传时,不回调
|
||||
RecvDatas []*SeparateRecvDatas `json:"recv_datas"` // 分账接收数据对象 分账接收方编号必须已创建
|
||||
}
|
||||
type SeparateRecvDatas struct {
|
||||
RecvMerchantNo string `json:"recv_merchant_no,omitempty"` // 接收方商户号 分账接收方商户号,分给自己时使用,需和merchantNo一样,否则检查报错;分账接收方商户号 和 分账接收方 只能填写一个。
|
||||
SeparateValue string `json:"separate_value"` // 分账数值 calType为0时,按照固定金额分账,单位:分 calType为1时,按照比例分账,单位:百分比的小数值,比如0.55 (55%)
|
||||
RecvNo string `json:"recv_no,omitempty"` // 分账接收方编号 分账接收方编号, 分给他人时使用;分账接收方商户号 和 分账接收方 只能填写一个。
|
||||
}
|
||||
|
||||
type SeparateResponse struct {
|
||||
Msg string `json:"msg"`
|
||||
RespTime string `json:"resp_time"`
|
||||
Code string `json:"code"`
|
||||
RespData struct {
|
||||
TotalAmt string `json:"total_amt"` // 分账总金额 单位:分
|
||||
LogDate string `json:"log_date"` // 拉卡拉订单日期 posp日期,yyyyMMdd,查清结算用
|
||||
SeparateNo string `json:"separate_no"` // 分账指令流水号 分账系统生成唯一流水
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账单流水号 请求透返
|
||||
OutSeparateNo string `json:"out_separate_no"` // 商户订单号 请求报文中的商户外部订单号
|
||||
Status string `json:"status"` // 分账状态 处理中:PROCESSING, 已受理:ACCEPTED, 成功:SUCCESS, 失败:FAIL
|
||||
} `json:"resp_data"`
|
||||
}
|
||||
|
||||
func (s *SeparateResponse) SuccessOrFail() bool {
|
||||
return s.Code == "SACS0000"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package model
|
||||
|
||||
// SplitBalanceRequest 可分账金额查询请求结构体
|
||||
// 用于查询指定交易的可分账金额信息
|
||||
// 拉卡拉SDK接口文档:可分账金额查询接口
|
||||
|
||||
type SplitBalanceRequest struct {
|
||||
ReqData *SplitBalanceReqData `json:"req_data"` // 请求业务数据
|
||||
Version string `json:"version"` // 接口版本号
|
||||
ReqTime string `json:"req_time"` // 请求时间,格式为yyyyMMddHHmmss
|
||||
}
|
||||
|
||||
// SplitBalanceReqData 可分账金额查询请求业务数据结构体
|
||||
// 包含可分账金额查询所需的查询参数
|
||||
|
||||
type SplitBalanceReqData struct {
|
||||
MerchantNo string `json:"merchant_no"` // 商户号,必传,长度32
|
||||
LogDate string `json:"log_date"` // 拉卡拉对账单交易日期,必传,长度8,格式为yyyyMMdd,用于查询结算
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账单流水号,必传,长度14,对应pos流水号,用于查询结算
|
||||
}
|
||||
// SplitBalanceResponse 可分账金额查询响应结构体
|
||||
// 包含可分账金额查询的结果信息
|
||||
|
||||
type SplitBalanceResponse struct {
|
||||
Msg string `json:"msg"` // 响应消息,描述响应结果
|
||||
RespTime string `json:"resp_time"` // 响应时间,格式为yyyyMMddHHmmss
|
||||
Code string `json:"code"` // 响应码,SACS0000表示成功
|
||||
RespData struct {
|
||||
MerchantNo string `json:"merchant_no"` // 商户号,请求返回
|
||||
TotalSeparateAmt string `json:"total_separate_amt"` // 总分账金额,必传,长度15,单位为分
|
||||
CanSeparateAmt string `json:"can_separate_amt"` // 可分账金额,必传,长度15,单位为分
|
||||
LogDate string `json:"log_date"` // 拉卡拉对账单交易日期,必传,长度8,格式为yyyyMMdd
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账单流水号,必传,长度14,请求返回
|
||||
} `json:"resp_data"` // 响应业务数据,当code为SACS0000时返回
|
||||
}
|
||||
|
||||
func (s *SplitBalanceResponse) SuccessOrFail() bool {
|
||||
return s.Code == "SACS0000"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package model
|
||||
|
||||
// TradeQuery 交易查询请求结构体
|
||||
type TradeQuery struct {
|
||||
ReqTime string `json:"req_time"` // 请求时间
|
||||
Version string `json:"version"` // API版本号
|
||||
OutOrgCode string `json:"out_org_code"` // 外部机构码
|
||||
ReqData *TradeQueryReqData `json:"req_data"` // 请求数据
|
||||
}
|
||||
|
||||
// TradeQueryReqData 交易查询请求数据结构体
|
||||
type TradeQueryReqData struct {
|
||||
MerchantNo string `json:"merchant_no"` // 商户号,必传
|
||||
TermNo string `json:"term_no"` // 终端号,必传
|
||||
OutTradeNo string `json:"out_trade_no"` // 商户交易流水号,条件必传,与trade_no必传其一
|
||||
}
|
||||
|
||||
// TradeQueryResponse 交易查询响应结构体
|
||||
type TradeQueryResponse struct {
|
||||
Msg string `json:"msg"` // 响应消息
|
||||
RespTime string `json:"resp_time"` // 响应时间
|
||||
Code string `json:"code"` // 响应码,000000表示成功
|
||||
RespData struct {
|
||||
MerchantNo string `json:"merchant_no"` // 商户号,必传
|
||||
OutTradeNo string `json:"out_trade_no"` // 商户请求流水号,必传
|
||||
TradeNo string `json:"trade_no"` // 拉卡拉商户订单号,必传
|
||||
LogNo string `json:"log_no"` // 拉卡拉对账流水号,必传
|
||||
TradeMainType string `json:"trade_main_type"` // 交易大类,条件必传(PREORDER-主扫,MICROPAY-被扫,REFUND-退款,CANCEL-撤销)
|
||||
SplitAttr string `json:"split_attr"` // 拆单属性,条件必传(M-主单,S-子单)
|
||||
SplitInfo []struct {
|
||||
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"` // 金额,必传(单位分)
|
||||
} `json:"split_info"` // 拆单信息,条件必传(如果查询订单是主单,则返回)
|
||||
RefundSplitInfo []struct {
|
||||
OutSubTradeNo string `json:"out_sub_trade_no"` // 外部子退款交易流水号,必传
|
||||
MerchantNo string `json:"merchant_no"` // 商户号,必传
|
||||
TermNo string `json:"term_no"` // 终端号,必传
|
||||
RefundAmount string `json:"refund_amount"` // 申请退款金额,必传(单位分)
|
||||
SubTradeNo string `json:"sub_trade_no"` // 拉卡分子交易流水号,条件必传
|
||||
SubLogNo string `json:"sub_log_no"` // 对账单子流水号,条件必传
|
||||
TradeState string `json:"trade_state"` // 子交易状态,条件必传(SUCCESS-交易成功 FAIL-交易失败)
|
||||
ResultCode string `json:"result_code"` // 处理结果码,条件必传
|
||||
ResultMsg string `json:"result_msg"` // 处理描述,条件必传
|
||||
} `json:"refund_split_info"` // 合单退款拆单信息,条件必传(如果查询订单是退款主单,则返回)
|
||||
AccTradeNo string `json:"acc_trade_no"` // 账户端交易订单号,必传
|
||||
AccountType string `json:"account_type"` // 钱包类型,必传(微信: WECHAT 支付宝: ALIPAY 银联: UQRCODEPAY 翼支付: BESTPAY 苏宁支付: SUNING)
|
||||
TradeState string `json:"trade_state"` // 交易状态,必传(INIT-初始化 CREATE-下单成功 SUCCESS-交易成功 FAIL-交易失败 DEAL-交易处理中 UNKNOWN-未知状态 CLOSE-订单关闭 PART_REFUND-部分退款 REFUND-全部退款)
|
||||
TradeStateDesc string `json:"trade_state_desc"` // 交易状态描述,条件必传
|
||||
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"` // 账户端优惠金额,条件必传(单位分)
|
||||
AccOtherDiscountAmount string `json:"acc_other_discount_amount"` // 账户端其它优惠金额,条件必传(单位分)
|
||||
TradeTime string `json:"trade_time"` // 交易完成时间,条件必传(yyyyMMddHHmmss)
|
||||
UserId1 string `json:"user_id1"` // 用户标识1,条件必传(微信sub_open_id 支付宝buyer_login_id 买家支付账号)
|
||||
UserId2 string `json:"user_id2"` // 用户标识2,条件必传(微信open_id 支付宝buyer_user_id 银user_id)
|
||||
BankType string `json:"bank_type"` // 付款银行,条件必传
|
||||
CardType string `json:"card_type"` // 银行卡类型,条件必传(00: 借记卡 01: 贷记卡 02: 微信零钱 03: 支付宝花呗 04: 支付宝其他 05: 数字货币 06: 拉卡拉支付账户 99: 未知)
|
||||
AccActivityId string `json:"acc_activity_id"` // 活动ID,条件必传(在账户端商户后台配置的批次ID)
|
||||
TradeReqDate string `json:"trade_req_date"` // 交易请求日期,必传(yyyyMMdd)
|
||||
AccRespFields map[string]interface{} `json:"acc_resp_fields"` // 账户端返回信息域,条件必传
|
||||
} `json:"resp_data"` // 响应数据
|
||||
}
|
||||
|
||||
func (t *TradeQueryResponse) SuccessOrFail() bool {
|
||||
return t.Code == "000000"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package model
|
||||
|
||||
type UploadFileRequest struct {
|
||||
ReqData *UploadFileReqData `json:"reqData"`
|
||||
Ver string `json:"ver"`
|
||||
Timestamp string `json:"timestamp"`
|
||||
ReqId string `json:"reqId"`
|
||||
}
|
||||
|
||||
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"`
|
||||
}
|
||||
|
||||
type UploadFileResponse struct {
|
||||
CmdRetCode string `json:"cmdRetCode"`
|
||||
ReqId string `json:"reqId"`
|
||||
RespData struct {
|
||||
AttType string `json:"attType"`
|
||||
OrderNo string `json:"orderNo"`
|
||||
OrgCode string `json:"orgCode"`
|
||||
AttFileId string `json:"attFileId"`
|
||||
} `json:"respData"`
|
||||
RetCode string `json:"retCode"`
|
||||
RetMsg string `json:"retMsg"`
|
||||
Timestamp int64 `json:"timestamp"`
|
||||
Ver string `json:"ver"`
|
||||
}
|
||||
|
||||
func (u *UploadFileResponse) SuccessOrFail() bool {
|
||||
return u.RetCode == "000000"
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package model
|
||||
|
||||
// WithdrawRequest 提现请求结构体
|
||||
// 用于向拉卡拉接口发送提现请求
|
||||
// 包含请求头信息和业务数据
|
||||
type WithdrawRequest struct {
|
||||
// 请求业务数据
|
||||
ReqData *WithdrawReqData `json:"req_data"`
|
||||
// 接口版本号
|
||||
Version string `json:"version"`
|
||||
// 请求时间,格式为yyyyMMddHHmmss
|
||||
ReqTime string `json:"req_time"`
|
||||
}
|
||||
|
||||
// WithdrawReqData 提现请求业务数据结构体
|
||||
// 包含提现所需的具体业务参数
|
||||
// 用于申请账户资金提现
|
||||
type WithdrawReqData struct {
|
||||
// bmcp机构号,必传,最大长度32
|
||||
OrgNo string `json:"org_no"`
|
||||
// 商户号,必传,最大长度32,822商户号,SR分账接收方编号
|
||||
MerchantNo string `json:"merchant_no"`
|
||||
// 提现金额(单位:元),必传,最大长度32
|
||||
DrawAmt string `json:"draw_amt"`
|
||||
// 通知地址,非必传,最大长度256
|
||||
NotifyUrl string `json:"notify_url"`
|
||||
// 商户订单号(商户系统唯一),非必传,最大长度256
|
||||
MerOrderNo string `json:"mer_order_no"`
|
||||
// 账号(若该参数上送,则payType将无效),非必传,最大长度32
|
||||
PayNo string `json:"pay_no"`
|
||||
// 账号类型(01:收款账户,04:分账接收方账户)未上送则默认01,必传,最大长度32,分账接收方提现时需填04
|
||||
PayType string `json:"pay_type"`
|
||||
// 备注信息,非必传,最大长度64
|
||||
Remark string `json:"remark"`
|
||||
// 摘要,非必传,最大长度64
|
||||
Summary string `json:"summary"`
|
||||
// 结算银行ID,非必传,最大长度32
|
||||
BankId string `json:"bank_id"`
|
||||
}
|
||||
|
||||
// WithdrawResponse 提现响应结构体
|
||||
// 拉卡拉接口返回的提现响应数据
|
||||
// 包含响应状态码、消息和业务数据
|
||||
type WithdrawResponse struct {
|
||||
// 响应状态码,000000表示成功
|
||||
Code string `json:"code"`
|
||||
// 响应消息
|
||||
Msg string `json:"msg"`
|
||||
// 响应业务数据,当code为000000时返回
|
||||
RespData *WithdrawRespData `json:"resp_data"`
|
||||
}
|
||||
|
||||
// WithdrawRespData 提现响应业务数据结构体
|
||||
// 包含提现返回的具体业务信息
|
||||
type WithdrawRespData struct {
|
||||
// 提现流水号,必传
|
||||
DrawJnl string `json:"draw_jnl"`
|
||||
// 商户订单号,必传
|
||||
MerOrderNo string `json:"mer_order_no"`
|
||||
}
|
||||
|
||||
// SuccessOrFail 判断提现请求是否成功
|
||||
// 成功条件:响应码为000000
|
||||
// 返回值:true表示成功,false表示失败
|
||||
func (resp *WithdrawResponse) SuccessOrFail() bool {
|
||||
return resp.Code == "000000"
|
||||
}
|
||||
Reference in New Issue
Block a user