220 lines
7.8 KiB
Go
220 lines
7.8 KiB
Go
package service
|
||
|
||
import (
|
||
"encoding/json"
|
||
"net/http"
|
||
)
|
||
|
||
type OrderDeliveryRequestData struct {
|
||
UserId string `json:"user_id"` // 必填 用户ID
|
||
WithPackage *int `json:"with_package,omitempty"` // 可选 是否发放商品打包售卖权益,默认0, 0-不发放 1-发放
|
||
PayWay *string `json:"pay_way,omitempty"` // 可选 支付渠道,默认是0 0-线上微信,1-线上支付宝
|
||
OutOrderId *string `json:"out_order_id,omitempty"` // 可选 商家侧关联外部订单号
|
||
TransactionId *string `json:"transaction_id,omitempty"` // 可选 商家侧交易单号
|
||
ProductInfos []ProductInfo `json:"product_infos"` // 必填 商品列表 最多20个
|
||
Express *ExpressInfo `json:"express,omitempty"` // 可选快递配送信息(实物必填)
|
||
}
|
||
|
||
// ProductInfo 商品信息
|
||
type ProductInfo struct {
|
||
SpuId string `json:"spu_id"` // 必填 统一商品ID
|
||
SkuId *string `json:"sku_id,omitempty"` // 必填 统一商品规格ID
|
||
BuyNum *int `json:"buy_num,omitempty"` // 可选 购买份数 默认1
|
||
DiscountPrice *int `json:"discount_price,omitempty"` // 可选 api优惠金额 单位分
|
||
Period *int `json:"period,omitempty"` // 可选 有效期 单位秒
|
||
PeriodTime *string `json:"period_time,omitempty"` // 可选 权益开始生效时间
|
||
}
|
||
|
||
// ExpressInfo 快递配送信息(当 express 存在时,内部字段均必填)
|
||
type ExpressInfo struct {
|
||
Receiver string `json:"receiver"` // 必填 收货人
|
||
Phone string `json:"phone"` // 必填 收货人联系方式
|
||
Province string `json:"province"` // 必填 收货人地址省份
|
||
City string `json:"city"` // 必填 收货人地址城市
|
||
County string `json:"county"` // 必填 收货人地址所在区
|
||
Detail string `json:"detail"` // 必填 收货人地址详细地址
|
||
}
|
||
|
||
type OrderDeliveryRequest struct {
|
||
Data OrderDeliveryRequestData `json:"data"`
|
||
}
|
||
|
||
type OrderDeliveryOrder struct {
|
||
Price int `json:"price"`
|
||
OrderId string `json:"order_id"`
|
||
PurchaseName string `json:"PurchaseName"`
|
||
CreatedAt string `json:"created_at"`
|
||
}
|
||
|
||
type OrderDeliveryResponseData struct {
|
||
Orders []OrderDeliveryOrder `json:"orders"`
|
||
}
|
||
|
||
type OrderDeliveryResponse struct {
|
||
BaseResponse
|
||
Data OrderDeliveryResponseData `json:"data"`
|
||
}
|
||
|
||
type ResourcePurchaseCheckRequest struct {
|
||
UserId string `json:"user_id"` // 用户id
|
||
ResourceId string `json:"resource_id"` // 资源id
|
||
}
|
||
|
||
type ResourcePurchaseCheckResponseData struct {
|
||
AuthState int `json:"auth_state"` // 是否拥有权益 0-否 1-是
|
||
}
|
||
|
||
type ResourcePurchaseCheckResponse struct {
|
||
BaseResponse
|
||
|
||
Data ResourcePurchaseCheckResponseData `json:"data"`
|
||
}
|
||
|
||
type PurchaseDeleteRequestData struct {
|
||
PaymentType string `json:"payment_type"` // 必填,购买方式:2-单笔、3-付费产品包、15-超级会员
|
||
ResourceType *string `json:"resource_type,omitempty"` // 可选(单笔购买时必填),资源类型
|
||
ResourceId *string `json:"resource_id,omitempty"` // 可选(单笔购买时必填),资源id
|
||
ProductId *string `json:"product_id,omitempty"` // 可选(产品包/超级会员时必填),产品包id
|
||
UserId string `json:"user_id"` // 必填,用户id
|
||
}
|
||
|
||
type PurchaseDeleteRequest struct {
|
||
UserId string `json:"user_id"` // 用户id
|
||
Data PurchaseDeleteRequestData `json:"data"`
|
||
}
|
||
|
||
type PurchaseDeleteResponseData struct {
|
||
Delete int `json:"delete"` // 1-订阅取消成功
|
||
}
|
||
|
||
type PurchaseDeleteResponse struct {
|
||
BaseResponse
|
||
|
||
Data PurchaseDeleteResponseData `json:"data"`
|
||
}
|
||
|
||
type OrderDeliveryRequestV1 struct {
|
||
UserId string `json:"user_id"` // 用户ID(顶层)
|
||
Data OrderDeliveryDataV1 `json:"data"` // 订单数据
|
||
}
|
||
|
||
// OrderDeliveryDataV1 订单数据
|
||
type OrderDeliveryDataV1 struct {
|
||
PaymentType int `json:"payment_type"` // 必填,付费类型:2-单品,3-产品包,15-超级会员
|
||
ResourceType int `json:"resource_type"` // 必填,资源类型
|
||
ResourceId *string `json:"resource_id,omitempty"` // 单品ID(payment_type=2时必填)
|
||
ProductId *string `json:"product_id,omitempty"` // 产品包ID(payment_type=3时必填)
|
||
UserId string `json:"user_id"` // 必填,用户ID
|
||
OutOrderId *string `json:"out_order_id,omitempty"` // 可选,外部订单号
|
||
PayWay *int `json:"pay_way,omitempty"` // 可选,支付渠道:0-线上微信,2-线上支付宝,1-未指定
|
||
ChannelId *string `json:"channel_id,omitempty"` // 可选,渠道ID
|
||
ChannelInfo *string `json:"channel_info,omitempty"` // 可选,渠道来源
|
||
Period *string `json:"period,omitempty"` // 可选,有效期(秒),超级会员必传
|
||
PeriodTime *string `json:"period_time,omitempty"` // 可选,会员开始时间,超级会员必传
|
||
Agent *string `json:"agent,omitempty"` // 可选,用户设备信息
|
||
DiscountPrice *int `json:"discount_price,omitempty"` // 可选,API优惠金额(单位:分)
|
||
Source *int `json:"source,omitempty"` // 可选,开通知识带货商品必传10
|
||
}
|
||
|
||
// OrderDeliveryResponseV1 订单发货响应(V1版本)
|
||
type OrderDeliveryResponseV1 struct {
|
||
Code int `json:"code"` // 请求结果码,0表示成功
|
||
Msg string `json:"msg"` // 描述信息
|
||
Data OrderDeliveryResponseDataV1 `json:"data"` // 数据
|
||
}
|
||
|
||
// OrderDeliveryResponseDataV1 响应数据
|
||
type OrderDeliveryResponseDataV1 struct {
|
||
Price int `json:"price"` // 商品价格(单位:分)
|
||
OrderId string `json:"order_id"` // 订单编号
|
||
PurchaseName string `json:"purchase_name"` // 商品名称
|
||
CreatedAt CreatedAt `json:"created_at"` // 创建时间
|
||
}
|
||
|
||
type CreatedAt struct {
|
||
Date string `json:"date"`
|
||
Timezone string `json:"timezone"`
|
||
TimezoneType int `json:"timezone_type"`
|
||
}
|
||
|
||
// MARK 用户开通产品包权益2.0
|
||
func (client *Client) OrderDelivery(req *OrderDeliveryRequest) (*OrderDeliveryResponse, error) {
|
||
paramsMap, err := ToMap(req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
respByte, err := client.CurlDo(http.MethodPost, OrderDeliveryUrl, paramsMap)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
resp := OrderDeliveryResponse{}
|
||
err = json.Unmarshal(respByte, &resp)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &resp, nil
|
||
}
|
||
|
||
// MARK 用户开通产品包权益1.0
|
||
func (client *Client) OrderDeliveryV1(req *OrderDeliveryRequestV1) (*OrderDeliveryResponseV1, error) {
|
||
paramsMap, err := ToMap(req)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
respByte, err := client.CurlDo(http.MethodPost, OrderDeliveryUrlV1, paramsMap)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
resp := OrderDeliveryResponseV1{}
|
||
err = json.Unmarshal(respByte, &resp)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &resp, nil
|
||
}
|
||
|
||
// MARK 查询用户资源权益
|
||
func (client *Client) ResourcePurchaseCheck(req *ResourcePurchaseCheckRequest) (resp *ResourcePurchaseCheckResponse, err error) {
|
||
paramsMap, err := ToMap(req)
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
respByte, err := client.CurlDo(http.MethodPost, PermissionCheckUrl, paramsMap)
|
||
if err != nil {
|
||
return
|
||
}
|
||
resp2 := ResourcePurchaseCheckResponse{}
|
||
err = json.Unmarshal(respByte, &resp2)
|
||
if err != nil {
|
||
return
|
||
}
|
||
resp = &resp2
|
||
return
|
||
}
|
||
|
||
// MARK 取消订购
|
||
func (client *Client) PurchaseDelete(req *PurchaseDeleteRequest) (resp *PurchaseDeleteResponse, err error) {
|
||
paramsMap, err := ToMap(req)
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
respByte, err := client.CurlDo(http.MethodPost, PurchaseDeleteUrl, paramsMap)
|
||
if err != nil {
|
||
return
|
||
}
|
||
resp2 := PurchaseDeleteResponse{}
|
||
|
||
err = json.Unmarshal(respByte, &resp2)
|
||
if err != nil {
|
||
return
|
||
}
|
||
resp = &resp2
|
||
return
|
||
}
|