lkl_sdk/model/preorder.go

77 lines
4.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 京东钱包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)
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)
} `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"
}