Compare commits

...

5 Commits

2
.gitignore vendored

@ -4,6 +4,6 @@
.idea
.vscode
*.log
gomod.sh
go_mod.sh
*_test.go
/vendor/

@ -1,5 +1,5 @@
<h1>
<a href="https://www.dtapp.net/">Golang dingdanxia</a>
<a href="https://www.dtapp.net/">Golang</a>
</h1>
📦 Golang dingdanxia
@ -13,5 +13,5 @@
#### 安装
```shell
go get -v -u go.dtapp.net/dingdanxia
go get -v -u go.dtapp.net/dingdanxia@v1.0.16
```

@ -0,0 +1,25 @@
package dingdanxia
import (
"context"
"go.dtapp.net/gorequest"
"net/http"
)
func (c *Client) Get(ctx context.Context, _method string, notMustParams ...gorequest.Params) ([]byte, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+_method, params, http.MethodGet)
// 定义
return request.ResponseBody, err
}
func (c *Client) Post(ctx context.Context, _method string, notMustParams ...gorequest.Params) ([]byte, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+_method, params, http.MethodPost)
// 定义
return request.ResponseBody, err
}

@ -2,7 +2,6 @@ package dingdanxia
import (
"go.dtapp.net/golog"
"go.dtapp.net/gorequest"
)
// ClientConfig 实例配置
@ -12,13 +11,16 @@ type ClientConfig struct {
// Client 实例
type Client struct {
requestClient *gorequest.App // 请求服务
config struct {
config struct {
apiKey string // 密钥
}
log struct {
status bool // 状态
client *golog.ApiClient // 日志服务
gormLog struct {
status bool // 状态
client *golog.ApiGorm // 日志服务
}
mongoLog struct {
status bool // 状态
client *golog.ApiMongo // 日志服务
}
}
@ -29,7 +31,5 @@ func NewClient(config *ClientConfig) (*Client, error) {
c.config.apiKey = config.ApiKey
c.requestClient = gorequest.NewHttp()
return c, nil
}

@ -1,12 +1,23 @@
package dingdanxia
import "go.dtapp.net/golog"
import (
"go.dtapp.net/golog"
)
// ConfigApiClientFun 日志配置
func (c *Client) ConfigApiClientFun(apiClientFun golog.ApiClientFun) {
apiClient := apiClientFun()
if apiClient != nil {
c.log.client = apiClient
c.log.status = true
// ConfigApiGormFun 接口日志配置
func (c *Client) ConfigApiGormFun(apiClientFun golog.ApiGormFun) {
client := apiClientFun()
if client != nil {
c.gormLog.client = client
c.gormLog.status = true
}
}
// ConfigApiMongoFun 接口日志配置
func (c *Client) ConfigApiMongoFun(apiClientFun golog.ApiMongoFun) {
client := apiClientFun()
if client != nil {
c.mongoLog.client = client
c.mongoLog.status = true
}
}

@ -6,5 +6,4 @@ const (
const (
LogTable = "dingdanxia"
Version = "1.0.12"
)

@ -1,11 +1,5 @@
package dingdanxia
import "go.dtapp.net/golog"
func (c *Client) GetApiKey() string {
return c.config.apiKey
}
func (c *Client) GetLog() *golog.ApiClient {
return c.log.client
}

122
go.mod

@ -1,99 +1,65 @@
module go.dtapp.net/dingdanxia
go 1.19
go 1.21.5
require (
go.dtapp.net/golog v1.0.101
go.dtapp.net/gorequest v1.0.32
go.dtapp.net/gotime v1.0.5
go.dtapp.net/gojson v1.0.4
go.dtapp.net/golog v1.0.121
go.dtapp.net/gorequest v1.0.47
go.dtapp.net/gotime v1.0.6
)
require (
github.com/MercuryEngineering/CookieMonster v0.0.0-20180304172713-1584578b3403 // indirect
github.com/basgys/goxml2json v1.1.0 // indirect
github.com/beego/beego/v2 v2.0.5 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/bytedance/sonic v1.10.2 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
github.com/chenzhuoyu/iasm v0.9.1 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/gin-gonic/gin v1.8.1 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-playground/locales v0.14.0 // indirect
github.com/go-playground/universal-translator v0.18.0 // indirect
github.com/go-playground/validator/v10 v10.11.1 // indirect
github.com/go-redis/redis/v9 v9.0.0-beta.3 // indirect
github.com/go-sql-driver/mysql v1.6.0 // indirect
github.com/goccy/go-json v0.9.11 // indirect
github.com/gin-gonic/gin v1.9.1 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.17.0 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
github.com/jackc/pgconn v1.13.0 // indirect
github.com/jackc/pgio v1.0.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgproto3/v2 v2.3.1 // indirect
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect
github.com/jackc/pgtype v1.12.0 // indirect
github.com/jackc/pgx/v4 v4.17.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.15.11 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/lib/pq v1.10.7 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/klauspost/compress v1.17.5 // indirect
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/leodido/go-urn v1.3.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/montanaflynn/stats v0.6.6 // indirect
github.com/montanaflynn/stats v0.7.1 // indirect
github.com/natefinch/lumberjack v2.0.0+incompatible // indirect
github.com/oschwald/geoip2-golang v1.8.0 // indirect
github.com/oschwald/maxminddb-golang v1.10.0 // indirect
github.com/pelletier/go-toml/v2 v2.0.5 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/saracen/go7z v0.0.0-20191010121135-9c09b6bd7fda // indirect
github.com/saracen/solidblock v0.0.0-20190426153529-45df20abab6f // indirect
github.com/segmentio/fasthash v1.0.3 // indirect
github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
github.com/sirupsen/logrus v1.9.0 // indirect
github.com/syndtr/goleveldb v1.0.0 // indirect
github.com/tklauser/go-sysconf v0.3.10 // indirect
github.com/tklauser/numcpus v0.5.0 // indirect
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect
github.com/ugorji/go/codec v1.2.7 // indirect
github.com/ulikunitz/xz v0.5.10 // indirect
github.com/upper/db/v4 v4.6.0 // indirect
github.com/uptrace/bun v1.1.8 // indirect
github.com/uptrace/bun/dialect/mysqldialect v1.1.8 // indirect
github.com/uptrace/bun/dialect/pgdialect v1.1.8 // indirect
github.com/uptrace/bun/driver/pgdriver v1.1.8 // indirect
github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
github.com/tklauser/go-sysconf v0.3.13 // indirect
github.com/tklauser/numcpus v0.7.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/scram v1.1.1 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
github.com/xdg-go/scram v1.1.2 // indirect
github.com/xdg-go/stringprep v1.0.4 // indirect
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
go.dtapp.net/dorm v1.0.51 // indirect
go.dtapp.net/goip v1.0.38 // indirect
go.dtapp.net/gorandom v1.0.1 // indirect
go.dtapp.net/gostring v1.0.10 // indirect
go.dtapp.net/gotrace_id v1.0.6 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.dtapp.net/gorandom v1.0.2 // indirect
go.dtapp.net/gostring v1.0.13 // indirect
go.dtapp.net/gotrace_id v1.0.8 // indirect
go.dtapp.net/gourl v1.0.0 // indirect
go.mongodb.org/mongo-driver v1.10.3 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.23.0 // indirect
golang.org/x/crypto v0.0.0-20221010152910-d6f0a8c073c2 // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.0.0-20221004154528-8021a29435af // indirect
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0 // indirect
golang.org/x/sys v0.0.0-20221010170243-090e33056c14 // indirect
golang.org/x/text v0.3.8 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gorm.io/driver/mysql v1.4.1 // indirect
gorm.io/driver/postgres v1.4.4 // indirect
gorm.io/gorm v1.24.0 // indirect
mellium.im/sasl v0.3.0 // indirect
modernc.org/sqlite v1.18.1 // indirect
xorm.io/builder v0.3.12 // indirect
xorm.io/xorm v1.3.2 // indirect
go.mongodb.org/mongo-driver v1.13.1 // indirect
golang.org/x/arch v0.7.0 // indirect
golang.org/x/crypto v0.18.0 // indirect
golang.org/x/net v0.20.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.16.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/protobuf v1.32.0 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/gorm v1.25.6 // indirect
)

909
go.sum

File diff suppressed because it is too large Load Diff

@ -2,7 +2,7 @@ package dingdanxia
import (
"context"
"encoding/json"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
@ -32,21 +32,23 @@ type JdJyOrderDetailsResult struct {
Result JdJyOrderDetailsResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
}
func newJdJyOrderDetailsResult(result JdJyOrderDetailsResponse, body []byte, http gorequest.Response, err error) *JdJyOrderDetailsResult {
return &JdJyOrderDetailsResult{Result: result, Body: body, Http: http, Err: err}
func newJdJyOrderDetailsResult(result JdJyOrderDetailsResponse, body []byte, http gorequest.Response) *JdJyOrderDetailsResult {
return &JdJyOrderDetailsResult{Result: result, Body: body, Http: http}
}
// JdJyOrderDetails 【官方不维护】 京佣订单
func (c *Client) JdJyOrderDetails(ctx context.Context, notMustParams ...gorequest.Params) *JdJyOrderDetailsResult {
func (c *Client) JdJyOrderDetails(ctx context.Context, notMustParams ...gorequest.Params) (*JdJyOrderDetailsResult, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+"/jd/jy_order_details", params, http.MethodPost)
if err != nil {
return newJdJyOrderDetailsResult(JdJyOrderDetailsResponse{}, request.ResponseBody, request), err
}
// 定义
var response JdJyOrderDetailsResponse
err = json.Unmarshal(request.ResponseBody, &response)
return newJdJyOrderDetailsResult(response, request.ResponseBody, request, err)
err = gojson.Unmarshal(request.ResponseBody, &response)
return newJdJyOrderDetailsResult(response, request.ResponseBody, request), err
}

@ -2,20 +2,23 @@ package dingdanxia
import (
"context"
"encoding/json"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
// JdOrderDetails2 【官方不维护】 京东联盟订单行查询
// https://www.dingdanxia.com/doc/180/94
func (c *Client) JdOrderDetails2(ctx context.Context, notMustParams ...gorequest.Params) *JdJyOrderDetailsResult {
func (c *Client) JdOrderDetails2(ctx context.Context, notMustParams ...gorequest.Params) (*JdJyOrderDetailsResult, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+"/jd/order_details2", params, http.MethodPost)
if err != nil {
return newJdJyOrderDetailsResult(JdJyOrderDetailsResponse{}, request.ResponseBody, request), err
}
// 定义
var response JdJyOrderDetailsResponse
err = json.Unmarshal(request.ResponseBody, &response)
return newJdJyOrderDetailsResult(response, request.ResponseBody, request, err)
err = gojson.Unmarshal(request.ResponseBody, &response)
return newJdJyOrderDetailsResult(response, request.ResponseBody, request), err
}

@ -6,13 +6,13 @@ import (
)
// 请求接口
func (c *Client) request(ctx context.Context, url string, params map[string]interface{}, method string) (gorequest.Response, error) {
func (c *Client) request(ctx context.Context, url string, param gorequest.Params, method string) (gorequest.Response, error) {
// 公共参数
params["apikey"] = c.GetApiKey()
param.Set("apikey", c.GetApiKey())
// 创建请求
client := c.requestClient
client := gorequest.NewHttp()
// 设置请求地址
client.SetUri(url)
@ -24,7 +24,7 @@ func (c *Client) request(ctx context.Context, url string, params map[string]inte
client.SetContentTypeForm()
// 设置参数
client.SetParams(params)
client.SetParams(param)
// 发起请求
request, err := client.Request(ctx)
@ -33,8 +33,11 @@ func (c *Client) request(ctx context.Context, url string, params map[string]inte
}
// 记录日志
if c.log.status {
go c.log.client.Middleware(ctx, request, Version)
if c.gormLog.status {
go c.gormLog.client.Middleware(ctx, request)
}
if c.mongoLog.status {
go c.mongoLog.client.Middleware(ctx, request)
}
return request, err

@ -0,0 +1,52 @@
package dingdanxia
import (
"context"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
type TbkActivityinfoResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
ClickUrl string `json:"click_url"`
WxQrcodeUrl string `json:"wx_qrcode_url"`
ShortClickUrl string `json:"short_click_url"`
TerminalType string `json:"terminal_type"`
MaterialOssUrl string `json:"material_oss_url"`
PageName string `json:"page_name"`
PageStartTime string `json:"page_start_time"`
PageEndTime string `json:"page_end_time"`
WxMiniprogramPath string `json:"wx_miniprogram_path"`
Tpwd string `json:"tpwd"`
LongTpwd string `json:"long_tpwd"`
} `json:"data"`
}
type TbkActivityinfoResult struct {
Result TbkActivityinfoResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
}
func newTbkActivityinfoResult(result TbkActivityinfoResponse, body []byte, http gorequest.Response) *TbkActivityinfoResult {
return &TbkActivityinfoResult{Result: result, Body: body, Http: http}
}
// TbkActivityinfo 官方活动转链,饿了么/口碑活动转链
// https://www.dingdanxia.com/doc/122/173
func (c *Client) TbkActivityinfo(ctx context.Context, notMustParams ...gorequest.Params) (*TbkActivityinfoResult, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+"/tbk/activityinfo", params, http.MethodPost)
if err != nil {
return newTbkActivityinfoResult(TbkActivityinfoResponse{}, request.ResponseBody, request), err
}
// 定义
var response TbkActivityinfoResponse
err = gojson.Unmarshal(request.ResponseBody, &response)
return newTbkActivityinfoResult(response, request.ResponseBody, request), err
}

@ -0,0 +1,5 @@
package dingdanxia
const (
Version = "1.0.17"
)

@ -0,0 +1,41 @@
package dingdanxia
import (
"context"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
type WaiMaiMeituanGenerateLinkResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct{} `json:"data"`
MiniCode string `json:"miniCode"` // 小程序码地址
}
type WaiMaiMeituanGenerateLinkResult struct {
Result WaiMaiMeituanGenerateLinkResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
}
func newWaiMaiMeituanGenerateLinkResult(result WaiMaiMeituanGenerateLinkResponse, body []byte, http gorequest.Response) *WaiMaiMeituanGenerateLinkResult {
return &WaiMaiMeituanGenerateLinkResult{Result: result, Body: body, Http: http}
}
// WaiMaiMeituanGenerateLink 美团外卖/闪购/酒店/优选CPS转链接口【推荐使用】
// https://www.dingdanxia.com/doc/221/173
func (c *Client) WaiMaiMeituanGenerateLink(ctx context.Context, notMustParams ...gorequest.Params) (*WaiMaiMeituanGenerateLinkResult, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+"/waimai/meituan_generateLink", params, http.MethodPost)
if err != nil {
return newWaiMaiMeituanGenerateLinkResult(WaiMaiMeituanGenerateLinkResponse{}, request.ResponseBody, request), err
}
// 定义
var response WaiMaiMeituanGenerateLinkResponse
err = gojson.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanGenerateLinkResult(response, request.ResponseBody, request), err
}

@ -2,7 +2,7 @@ package dingdanxia
import (
"context"
"encoding/json"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
@ -12,27 +12,35 @@ type WaiMaiMeituanOrderIdResponse struct {
Msg string `json:"msg"`
Data struct {
Order struct {
BusinessLine int `json:"businessLine"`
SubBusinessLine int `json:"subBusinessLine"`
ActId int `json:"actId"`
Quantity int `json:"quantity"`
OrderId string `json:"orderId"`
Paytime string `json:"paytime"`
ModTime string `json:"modTime"`
Payprice string `json:"payprice"`
Profit string `json:"profit"`
CpaProfit string `json:"cpaProfit"`
Sid string `json:"sid"`
Appkey string `json:"appkey"`
Smstitle string `json:"smstitle"`
Status int `json:"status"`
TradeTypeList []int `json:"tradeTypeList"`
RiskOrder interface{} `json:"riskOrder"`
Refundprofit interface{} `json:"refundprofit"`
CpaRefundProfit interface{} `json:"cpaRefundProfit"`
RefundInfoList interface{} `json:"refundInfoList"`
RefundProfitList interface{} `json:"refundProfitList"`
Extra interface{} `json:"extra"`
OrderId string `json:"orderId"` // 订单号
Sid string `json:"sid"` // 合作方唯一标识
Payprice string `json:"payprice"` // 订单用户实际支付金额
Profit string `json:"profit"` // 订单预估返佣金额
CpaProfit string `json:"cpaProfit"` // 订单预估cpa总收益优选、话费券
Smstitle string `json:"smstitle"` // 订单标题
Status int `json:"status"` // 订单状态,外卖、话费、闪购、优选、酒店订单会返回该字段 1 已付款 8 已完成 9 已退款或风控
TradeTypeList []int `json:"tradeTypeList"` // 订单的奖励类型 话费订单类型返回该字段 3 首购奖励 5 留存奖励 优选订单类型返回该字段 2 cps 3 首购奖励
RiskOrder interface{} `json:"riskOrder"` // 0表示非风控订单1表示风控订单
Refundprofit interface{} `json:"refundprofit"` // 订单需要扣除的返佣金额,外卖、话费、闪购、优选、酒店订单若发生退款会返回该字段
CpaRefundProfit interface{} `json:"cpaRefundProfit"` // 订单需要扣除的cpa返佣金额优选、话费券
RefundInfoList struct {
RefundPrice interface{} `json:"refundPrice"` // 订单实际退款金额,外卖、话费、闪购、优选、酒店订单若发生退款会返回该字段
RefundTime interface{} `json:"refundTime"` // 订单退款时间10位时间戳
RefundType interface{} `json:"refundType"` // ALL_REFUND(1, "全部退"), PART_REFUND(2, "部分退"), RISK_REFUND(3, "风控退");
} `json:"refundInfoList,omitempty"` // 退款列表
RefundProfitList struct { // 退款佣金明细
RefundProfit interface{} `json:"refundProfit"` // 退款佣金
RefundFinishTime interface{} `json:"refundFinishTime"` // 佣金产生时间,10位时间戳
Type interface{} `json:"type"` // 券订单: 1 流量订单: 2 首单: 3 复购: 4 留存: 5 二单: 6 唤起: 7
} `json:"refundProfitList,omitempty"`
BusinessLine int `json:"businessLine"`
SubBusinessLine int `json:"subBusinessLine"`
ActId int `json:"actId"`
Quantity int `json:"quantity"`
Paytime string `json:"paytime"`
ModTime string `json:"modTime"`
Appkey string `json:"appkey"`
Extra interface{} `json:"extra"`
} `json:"order"`
} `json:"data"`
}
@ -41,24 +49,29 @@ type WaiMaiMeituanOrderIdResult struct {
Result WaiMaiMeituanOrderIdResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
}
func newWaiMaiMeituanOrderIdResult(result WaiMaiMeituanOrderIdResponse, body []byte, http gorequest.Response, err error) *WaiMaiMeituanOrderIdResult {
return &WaiMaiMeituanOrderIdResult{Result: result, Body: body, Http: http, Err: err}
func newWaiMaiMeituanOrderIdResult(result WaiMaiMeituanOrderIdResponse, body []byte, http gorequest.Response) *WaiMaiMeituanOrderIdResult {
return &WaiMaiMeituanOrderIdResult{Result: result, Body: body, Http: http}
}
// WaiMaiMeituanOrderId 美团联盟外卖/闪购/优选/酒店订单查询API订单号版
// https://www.dingdanxia.com/doc/179/173
func (c *Client) WaiMaiMeituanOrderId(ctx context.Context, orderId string) *WaiMaiMeituanOrderIdResult {
func (c *Client) WaiMaiMeituanOrderId(ctx context.Context, orderId string, Type int, notMustParams ...gorequest.Params) (*WaiMaiMeituanOrderIdResult, error) {
// 参数
param := gorequest.NewParams()
param.Set("order_id", orderId)
params := gorequest.NewParamsWith(param)
params := gorequest.NewParamsWith(notMustParams...)
params.Set("orderid", orderId) // 订单号
if Type <= 0 {
Type = 4
}
params.Set("type", Type) // 2-酒店 4-外卖 6-闪购 8-优选 默认4
// 请求
request, err := c.request(ctx, apiUrl+"/waimai/meituan_orderid", params, http.MethodPost)
if err != nil {
return newWaiMaiMeituanOrderIdResult(WaiMaiMeituanOrderIdResponse{}, request.ResponseBody, request), err
}
// 定义
var response WaiMaiMeituanOrderIdResponse
err = json.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanOrderIdResult(response, request.ResponseBody, request, err)
err = gojson.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanOrderIdResult(response, request.ResponseBody, request), err
}

@ -2,7 +2,7 @@ package dingdanxia
import (
"context"
"encoding/json"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
@ -32,22 +32,24 @@ type WaiMaiMeituanOrdersResult struct {
Result WaiMaiMeituanOrdersResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
}
func newWaiMaiMeituanOrdersResult(result WaiMaiMeituanOrdersResponse, body []byte, http gorequest.Response, err error) *WaiMaiMeituanOrdersResult {
return &WaiMaiMeituanOrdersResult{Result: result, Body: body, Http: http, Err: err}
func newWaiMaiMeituanOrdersResult(result WaiMaiMeituanOrdersResponse, body []byte, http gorequest.Response) *WaiMaiMeituanOrdersResult {
return &WaiMaiMeituanOrdersResult{Result: result, Body: body, Http: http}
}
// WaiMaiMeituanOrders 美团联盟外卖/闪购/优选/酒店订单查询API
// https://www.dingdanxia.com/doc/176/173
func (c *Client) WaiMaiMeituanOrders(ctx context.Context, notMustParams ...gorequest.Params) *WaiMaiMeituanOrdersResult {
func (c *Client) WaiMaiMeituanOrders(ctx context.Context, notMustParams ...gorequest.Params) (*WaiMaiMeituanOrdersResult, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+"/waimai/meituan_orders", params, http.MethodPost)
if err != nil {
return newWaiMaiMeituanOrdersResult(WaiMaiMeituanOrdersResponse{}, request.ResponseBody, request), err
}
// 定义
var response WaiMaiMeituanOrdersResponse
err = json.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanOrdersResult(response, request.ResponseBody, request, err)
err = gojson.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanOrdersResult(response, request.ResponseBody, request), err
}

@ -2,7 +2,7 @@ package dingdanxia
import (
"context"
"encoding/json"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
@ -11,17 +11,17 @@ type WaiMaiMeituanPrivilegeResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
H5 string `json:"h5"`
ShortH5 string `json:"short_h5"`
Deeplink string `json:"deeplink"`
H5Evoke string `json:"h5_evoke"`
Tkl string `json:"tkl"`
H5 string `json:"h5"` // H5 领券
ShortH5 string `json:"short_h5"` // H5 领券短链接
Deeplink string `json:"deeplink"` // Deeplink领券
H5Evoke string `json:"h5_evoke"` // H5 内唤起页
Qrcode string `json:"qrcode"` // 二维码海报图片路径
Tkl string `json:"tkl"` // 团口令
WeAppInfo struct {
AppId string `json:"app_id"`
PagePath string `json:"page_path"`
MiniCode string `json:"miniCode"`
} `json:"we_app_info"`
Qrcode string `json:"qrcode"`
AppId string `json:"app_id"` // 小程序ID
PagePath string `json:"page_path"` // 小程序路径
MiniCode string `json:"miniCode"` // 小程序码
} `json:"we_app_info"` // 小程序信息
} `json:"data"`
}
@ -29,26 +29,28 @@ type WaiMaiMeituanPrivilegeResult struct {
Result WaiMaiMeituanPrivilegeResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
}
func newWaiMaiMeituanPrivilegeResult(result WaiMaiMeituanPrivilegeResponse, body []byte, http gorequest.Response, err error) *WaiMaiMeituanPrivilegeResult {
return &WaiMaiMeituanPrivilegeResult{Result: result, Body: body, Http: http, Err: err}
func newWaiMaiMeituanPrivilegeResult(result WaiMaiMeituanPrivilegeResponse, body []byte, http gorequest.Response) *WaiMaiMeituanPrivilegeResult {
return &WaiMaiMeituanPrivilegeResult{Result: result, Body: body, Http: http}
}
// WaiMaiMeituanPrivilege 美团外卖CPS推广API接口
// https://www.dingdanxia.com/doc/174/173
func (c *Client) WaiMaiMeituanPrivilege(ctx context.Context, sid string, generateWeApp, qrcode bool) *WaiMaiMeituanPrivilegeResult {
func (c *Client) WaiMaiMeituanPrivilege(ctx context.Context, sid string, generateWeApp bool, channels int, qrcode bool, notMustParams ...gorequest.Params) (*WaiMaiMeituanPrivilegeResult, error) {
// 参数
param := gorequest.NewParams()
param.Set("sid", sid)
param.Set("generate_we_app", generateWeApp)
param.Set("qrcode", qrcode)
params := gorequest.NewParamsWith(param)
params := gorequest.NewParamsWith(notMustParams...)
params.Set("sid", sid) // 渠道方用户唯一标识,渠道可自定义,长度不超过50参数中不能包含dingdanxia用于向用户返佣,支持小写字母和数字的格式,其它字符可能造成无法正常跟单
params.Set("generate_we_app", generateWeApp) // 是否生成小程序推广信息
params.Set("channels", channels) // 推广渠道 1-小程序推广,2-公众号推广,3-app推广,4-社群推广 默认1 ,请务必选择对应渠道推广,选择错误会影响佣金比例
params.Set("qrcode", qrcode) // 二维码图片
// 请求
request, err := c.request(ctx, apiUrl+"/waimai/meituan_privilege", params, http.MethodPost)
if err != nil {
return newWaiMaiMeituanPrivilegeResult(WaiMaiMeituanPrivilegeResponse{}, request.ResponseBody, request), err
}
// 定义
var response WaiMaiMeituanPrivilegeResponse
err = json.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanPrivilegeResult(response, request.ResponseBody, request, err)
err = gojson.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanPrivilegeResult(response, request.ResponseBody, request), err
}

@ -2,7 +2,7 @@ package dingdanxia
import (
"context"
"encoding/json"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
@ -11,16 +11,16 @@ type WaiMaiMeituanSgPrivilegeResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
H5 string `json:"h5"`
Deeplink string `json:"deeplink"`
H5Evoke string `json:"h5_evoke"`
ShortH5 string `json:"short_h5"`
H5 string `json:"h5"` // H5 领券
Deeplink string `json:"deeplink"` // Deeplink领券
H5Evoke string `json:"h5_evoke"` // H5 内唤起页
ShortH5 string `json:"short_h5"` // h5短连接
WeAppInfo struct {
AppId string `json:"app_id"`
PagePath string `json:"page_path"`
MiniCode string `json:"miniCode"`
} `json:"we_app_info"`
Qrcode string `json:"qrcode"`
AppId string `json:"app_id"` // 小程序ID
PagePath string `json:"page_path"` // 小程序路径
MiniCode string `json:"miniCode"` // 小程序码
} `json:"we_app_info"` // 小程序信息
Qrcode string `json:"qrcode"` // 海报
} `json:"data"`
}
@ -28,26 +28,27 @@ type WaiMaiMeituanSgPrivilegeResult struct {
Result WaiMaiMeituanSgPrivilegeResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
}
func newWaiMaiMeituanSgPrivilegeResult(result WaiMaiMeituanSgPrivilegeResponse, body []byte, http gorequest.Response, err error) *WaiMaiMeituanSgPrivilegeResult {
return &WaiMaiMeituanSgPrivilegeResult{Result: result, Body: body, Http: http, Err: err}
func newWaiMaiMeituanSgPrivilegeResult(result WaiMaiMeituanSgPrivilegeResponse, body []byte, http gorequest.Response) *WaiMaiMeituanSgPrivilegeResult {
return &WaiMaiMeituanSgPrivilegeResult{Result: result, Body: body, Http: http}
}
// WaiMaiMeituanSgPrivilege 美团闪购CPS推广API接口
// https://www.dingdanxia.com/doc/195/173
func (c *Client) WaiMaiMeituanSgPrivilege(ctx context.Context, sid string, generateWeApp, qrcode bool) *WaiMaiMeituanSgPrivilegeResult {
func (c *Client) WaiMaiMeituanSgPrivilege(ctx context.Context, sid string, generateWeApp, qrcode bool, notMustParams ...gorequest.Params) (*WaiMaiMeituanSgPrivilegeResult, error) {
// 参数
param := gorequest.NewParams()
param.Set("sid", sid)
param.Set("generate_we_app", generateWeApp)
param.Set("qrcode", qrcode)
params := gorequest.NewParamsWith(param)
params := gorequest.NewParamsWith(notMustParams...)
params.Set("sid", sid) // 渠道方用户唯一标识,渠道可自定义,长度不超过50参数中不能包含dingdanxia用于向用户返佣,支持小写字母和数字的格式,其它字符可能造成无法正常跟单
params.Set("generate_we_app", generateWeApp) // 是否生成小程序推广信息
params.Set("qrcode", qrcode) // 是否生成二维码海报
// 请求
request, err := c.request(ctx, apiUrl+"/waimai/meituan_sg_privilege", params, http.MethodPost)
if err != nil {
return newWaiMaiMeituanSgPrivilegeResult(WaiMaiMeituanSgPrivilegeResponse{}, request.ResponseBody, request), err
}
// 定义
var response WaiMaiMeituanSgPrivilegeResponse
err = json.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanSgPrivilegeResult(response, request.ResponseBody, request, err)
err = gojson.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanSgPrivilegeResult(response, request.ResponseBody, request), err
}

@ -0,0 +1,54 @@
package dingdanxia
import (
"context"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"net/http"
)
type WaiMaiMeituanYouxuanGoodsResponse struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data struct {
Total int64 `json:"total"` // 数据总量
skuList []struct {
ItemId string `json:"itemId"` // 商品信息-宝贝 id skuid
Title string `json:"title"` // 商品信息-商品标题
PictUrl string `json:"pictUrl"` // 商品信息-商品主图
SmallImages []string `json:"smallImages"` // 商品信息-商品小图列表
OriginPrice string `json:"originPrice"` // 原价(单位为元)
PromotionPrice string `json:"promotionPrice"` // 促销价(活动价格)秒杀价格 (单位为元)
ItemDeepLinkUrl string `json:"itemDeepLinkUrl"` // 宝贝的 deeplink 地址
ItemMiddlePageLinkUrl string `json:"itemMiddlePageLinkUrl"` // 宝贝的中间页地址
ItemWXLinkUrl string `json:"itemWXLinkUrl"` // 宝贝的微信小程序链接地址
HotFlag bool `json:"hotFlag"` // 是否是热门商品
}
} `json:"data"`
}
type WaiMaiMeituanYouxuanGoodsResult struct {
Result WaiMaiMeituanYouxuanGoodsResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
}
func newWaiMaiMeituanYouxuanGoodsResult(result WaiMaiMeituanYouxuanGoodsResponse, body []byte, http gorequest.Response) *WaiMaiMeituanYouxuanGoodsResult {
return &WaiMaiMeituanYouxuanGoodsResult{Result: result, Body: body, Http: http}
}
// WaiMaiMeituanYouxuanGoods 优选商品查询API【2022年1月17日暂停数据访问】
// https://www.dingdanxia.com/doc/235/173
func (c *Client) WaiMaiMeituanYouxuanGoods(ctx context.Context, notMustParams ...gorequest.Params) (*WaiMaiMeituanYouxuanGoodsResult, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(ctx, apiUrl+"/waimai/meituan_youxuan_goods", params, http.MethodPost)
if err != nil {
return newWaiMaiMeituanYouxuanGoodsResult(WaiMaiMeituanYouxuanGoodsResponse{}, request.ResponseBody, request), err
}
// 定义
var response WaiMaiMeituanYouxuanGoodsResponse
err = gojson.Unmarshal(request.ResponseBody, &response)
return newWaiMaiMeituanYouxuanGoodsResult(response, request.ResponseBody, request), err
}
Loading…
Cancel
Save