108 lines
4.2 KiB
Go
108 lines
4.2 KiB
Go
package v1
|
||
|
||
import "github.com/gogf/gf/v2/frame/g"
|
||
|
||
// ============================================================================
|
||
// 会员购买(微信小程序虚拟支付 · 道具直购)
|
||
// ============================================================================
|
||
|
||
// MemberPlanOut 可购买的会员套餐
|
||
type MemberPlanOut struct {
|
||
PlanKey string `json:"plan_key"`
|
||
Name string `json:"name"`
|
||
Subtitle string `json:"subtitle"`
|
||
LevelKey string `json:"level_key"`
|
||
DurationDays int `json:"duration_days"`
|
||
PriceCents int64 `json:"price_cents"` // 单位:分
|
||
ProductId string `json:"product_id"`
|
||
Badge string `json:"badge"`
|
||
}
|
||
|
||
// MemberLevelOut 等级权益(用于前端渲染权益对比)
|
||
type MemberLevelOut struct {
|
||
LevelKey string `json:"level_key"`
|
||
Name string `json:"name"`
|
||
Modules []string `json:"modules"`
|
||
ModuleNames []string `json:"module_names"`
|
||
IsCurrent bool `json:"is_current"`
|
||
}
|
||
|
||
// MemberStateOut 我的会员状态
|
||
type MemberStateOut struct {
|
||
IsMember bool `json:"is_member"`
|
||
LevelKey string `json:"level_key"`
|
||
LevelName string `json:"level_name"`
|
||
ExpireAt string `json:"expire_at"` // 空串表示永久或未开通
|
||
DaysLeft int `json:"days_left"`
|
||
Modules []string `json:"modules"`
|
||
}
|
||
|
||
// MemberCenterReq 会员中心
|
||
type MemberCenterReq struct {
|
||
g.Meta `path:"/member/center" method:"get" tags:"member" summary:"会员中心(套餐 + 会员状态 + 权益)"`
|
||
}
|
||
type MemberCenterRes struct {
|
||
Plans []MemberPlanOut `json:"plans"`
|
||
Levels []MemberLevelOut `json:"levels"`
|
||
State MemberStateOut `json:"state"`
|
||
Notices []string `json:"notices"`
|
||
XpayReady bool `json:"xpay_ready"` // 服务端虚拟支付参数是否已配置
|
||
Quotas []QuotaToolOut `json:"quotas"` // 各工具额度(会员权益页据此展示提升幅度)
|
||
Packs []QuotaPackOut `json:"packs"` // 次数包通用档位
|
||
PeriodDays int `json:"period_days"` // 当前生效的额度重置周期
|
||
}
|
||
|
||
// MemberOrderCreateReq 创建会员订单
|
||
//
|
||
// Code 为 wx.login 获取的临时登录凭证 —— 服务端用它换 session_key,
|
||
// session_key 是「用户态签名 signature」的密钥;同时校验支付人与登录人一致。
|
||
type MemberOrderCreateReq struct {
|
||
g.Meta `path:"/member/order" method:"post" tags:"member" summary:"创建会员订单(返回支付参数)"`
|
||
PlanKey string `v:"required#请选择会员套餐" json:"plan_key"`
|
||
Code string `json:"code"`
|
||
}
|
||
type MemberOrderCreateRes struct {
|
||
OutTradeNo string `json:"out_trade_no"`
|
||
Mode string `json:"mode"` // 固定 short_series_goods
|
||
SignData string `json:"signData"` // JSON 字符串,必须原样传给 wx.requestVirtualPayment
|
||
PaySig string `json:"paySig"`
|
||
Signature string `json:"signature"`
|
||
Env int `json:"env"`
|
||
}
|
||
|
||
// MemberOrderCheckReq 查询订单状态(前端支付成功回调后轮询;同时承担兜底发货)
|
||
type MemberOrderCheckReq struct {
|
||
g.Meta `path:"/member/order/check" method:"post" tags:"member" summary:"查询会员订单状态"`
|
||
OutTradeNo string `v:"required#订单号不能为空" json:"out_trade_no"`
|
||
}
|
||
type MemberOrderCheckRes struct {
|
||
Status int `json:"status"`
|
||
Delivered bool `json:"delivered"`
|
||
State MemberStateOut `json:"state"`
|
||
}
|
||
|
||
// MemberOrdersReq 我的会员订单
|
||
type MemberOrdersReq struct {
|
||
g.Meta `path:"/member/orders" method:"get" tags:"member" summary:"我的会员订单"`
|
||
Limit int `json:"limit"`
|
||
}
|
||
type MemberOrderOut struct {
|
||
OutTradeNo string `json:"out_trade_no"`
|
||
OrderType int `json:"order_type"` // 1=会员套餐 2=次数包
|
||
PlanKey string `json:"plan_key"`
|
||
PlanName string `json:"plan_name"`
|
||
Title string `json:"title"` // 统一展示标题(套餐名 / 次数包名)
|
||
ToolKey string `json:"tool_key"`
|
||
ToolName string `json:"tool_name"`
|
||
Times int `json:"times"`
|
||
PriceCents int64 `json:"price_cents"`
|
||
Status int `json:"status"`
|
||
StatusText string `json:"status_text"`
|
||
PayChannel string `json:"pay_channel"`
|
||
CreatedAt string `json:"created_at"`
|
||
DeliveredAt string `json:"delivered_at"`
|
||
}
|
||
type MemberOrdersRes struct {
|
||
List []MemberOrderOut `json:"list"`
|
||
}
|