Skip to content

Commit 8708fee

Browse files
committed
add new api
1 parent ab73cf0 commit 8708fee

5 files changed

+973
-43
lines changed

alipay/marketing_activity.go

+212
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
package alipay
2+
3+
import (
4+
"context"
5+
"encoding/json"
6+
"fmt"
7+
8+
"github.com/go-pay/gopay"
9+
)
10+
11+
// alipay.marketing.activity.batchquery(条件查询活动列表)
12+
// 文档地址:https://opendocs.alipay.com/open/04fgw9
13+
func (a *Client) MarketingActivityBatchQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityBatchQueryRsp, err error) {
14+
err = bm.CheckEmptyError("page_num", "page_size", "merchant_access_mode")
15+
if err != nil {
16+
return nil, err
17+
}
18+
var bs []byte
19+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.batchquery"); err != nil {
20+
return nil, err
21+
}
22+
aliRsp = new(MarketingActivityBatchQueryRsp)
23+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
24+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
25+
}
26+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
27+
return aliRsp, err
28+
}
29+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
30+
aliRsp.SignData = signData
31+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
32+
}
33+
34+
// alipay.marketing.activity.consult(活动领取咨询接口)
35+
// 文档地址:https://opendocs.alipay.com/open/04fgwa
36+
func (a *Client) MarketingActivityConsult(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityConsultRsp, err error) {
37+
err = bm.CheckEmptyError("consult_activity_info_list", "merchant_access_mode")
38+
if err != nil {
39+
return nil, err
40+
}
41+
var bs []byte
42+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.consult"); err != nil {
43+
return nil, err
44+
}
45+
aliRsp = new(MarketingActivityConsultRsp)
46+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
47+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
48+
}
49+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
50+
return aliRsp, err
51+
}
52+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
53+
aliRsp.SignData = signData
54+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
55+
}
56+
57+
// alipay.marketing.activity.query(查询活动详情)
58+
// 文档地址:https://opendocs.alipay.com/open/04fgwb
59+
func (a *Client) MarketingActivityQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityQueryRsp, err error) {
60+
err = bm.CheckEmptyError("activity_id", "merchant_access_mode")
61+
if err != nil {
62+
return nil, err
63+
}
64+
var bs []byte
65+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.query"); err != nil {
66+
return nil, err
67+
}
68+
aliRsp = new(MarketingActivityQueryRsp)
69+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
70+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
71+
}
72+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
73+
return aliRsp, err
74+
}
75+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
76+
aliRsp.SignData = signData
77+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
78+
}
79+
80+
// alipay.marketing.activity.merchant.batchquery(查询活动可用商户)
81+
// 文档地址:https://opendocs.alipay.com/open/04fgwc
82+
func (a *Client) MarketingActivityQueryMerchantBatchQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityQueryMerchantBatchQueryRsp, err error) {
83+
err = bm.CheckEmptyError("activity_id", "page_num", "page_size")
84+
if err != nil {
85+
return nil, err
86+
}
87+
var bs []byte
88+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.merchant.batchquery"); err != nil {
89+
return nil, err
90+
}
91+
aliRsp = new(MarketingActivityQueryMerchantBatchQueryRsp)
92+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
93+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
94+
}
95+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
96+
return aliRsp, err
97+
}
98+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
99+
aliRsp.SignData = signData
100+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
101+
}
102+
103+
// alipay.marketing.activity.app.batchquery(查询活动可用小程序)
104+
// 文档地址:https://opendocs.alipay.com/open/04fgwd
105+
func (a *Client) MarketingActivityQueryAppBatchQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityQueryAppBatchQueryRsp, err error) {
106+
err = bm.CheckEmptyError("activity_id", "page_num", "page_size", "merchant_access_mode")
107+
if err != nil {
108+
return nil, err
109+
}
110+
var bs []byte
111+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.app.batchquery"); err != nil {
112+
return nil, err
113+
}
114+
aliRsp = new(MarketingActivityQueryAppBatchQueryRsp)
115+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
116+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
117+
}
118+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
119+
return aliRsp, err
120+
}
121+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
122+
aliRsp.SignData = signData
123+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
124+
}
125+
126+
// alipay.marketing.activity.shop.batchquery(查询活动可用门店)
127+
// 文档地址:https://opendocs.alipay.com/open/04fgwe
128+
func (a *Client) MarketingActivityQueryShopBatchQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityQueryShopBatchQueryRsp, err error) {
129+
err = bm.CheckEmptyError("activity_id", "page_num", "page_size")
130+
if err != nil {
131+
return nil, err
132+
}
133+
var bs []byte
134+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.shop.batchquery"); err != nil {
135+
return nil, err
136+
}
137+
aliRsp = new(MarketingActivityQueryShopBatchQueryRsp)
138+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
139+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
140+
}
141+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
142+
return aliRsp, err
143+
}
144+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
145+
aliRsp.SignData = signData
146+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
147+
}
148+
149+
// alipay.marketing.activity.goods.batchquery(查询活动适用商品)
150+
// 文档地址:https://opendocs.alipay.com/open/04fgwf
151+
func (a *Client) MarketingActivityQueryGoodsBatchQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityQueryGoodsBatchQueryRsp, err error) {
152+
err = bm.CheckEmptyError("activity_id", "page_num", "page_size")
153+
if err != nil {
154+
return nil, err
155+
}
156+
var bs []byte
157+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.goods.batchquery"); err != nil {
158+
return nil, err
159+
}
160+
aliRsp = new(MarketingActivityQueryGoodsBatchQueryRsp)
161+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
162+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
163+
}
164+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
165+
return aliRsp, err
166+
}
167+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
168+
aliRsp.SignData = signData
169+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
170+
}
171+
172+
// alipay.marketing.activity.user.batchqueryvoucher(条件查询用户券)
173+
// 文档地址:https://opendocs.alipay.com/open/04fgwg
174+
func (a *Client) MarketingActivityQueryUserBatchQueryVoucher(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityQueryUserBatchQueryVoucherRsp, err error) {
175+
err = bm.CheckEmptyError("merchant_access_mode", "page_num", "page_size")
176+
if err != nil {
177+
return nil, err
178+
}
179+
var bs []byte
180+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.user.batchqueryvoucher"); err != nil {
181+
return nil, err
182+
}
183+
aliRsp = new(MarketingActivityQueryUserBatchQueryVoucherRsp)
184+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
185+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
186+
}
187+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
188+
return aliRsp, err
189+
}
190+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
191+
aliRsp.SignData = signData
192+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
193+
}
194+
195+
// alipay.marketing.activity.user.queryvoucher(查询用户券详情)
196+
// 文档地址:https://opendocs.alipay.com/open/04fgwh
197+
func (a *Client) MarketingActivityQueryUserQueryVoucher(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityQueryUserQueryVoucherRsp, err error) {
198+
var bs []byte
199+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.user.queryvoucher"); err != nil {
200+
return nil, err
201+
}
202+
aliRsp = new(MarketingActivityQueryUserQueryVoucherRsp)
203+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
204+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
205+
}
206+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
207+
return aliRsp, err
208+
}
209+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
210+
aliRsp.SignData = signData
211+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
212+
}

alipay/marketing_api.go

+23-20
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,29 @@ func (a *Client) MarketingCampaignCashDetailQuery(ctx context.Context, bm gopay.
147147
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
148148
}
149149

150+
// alipay.marketing.campaign.order.voucher.consult(订单优惠前置咨询)
151+
// 文档地址:https://opendocs.alipay.com/open/04fgwi
152+
func (a *Client) MarketingCampaignOrderVoucherConsult(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingCampaignOrderVoucherConsultRsp, err error) {
153+
err = bm.CheckEmptyError("scene_code", "order_amount")
154+
if err != nil {
155+
return nil, err
156+
}
157+
var bs []byte
158+
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.campaign.order.voucher.consult"); err != nil {
159+
return nil, err
160+
}
161+
aliRsp = new(MarketingCampaignOrderVoucherConsultRsp)
162+
if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
163+
return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
164+
}
165+
if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
166+
return aliRsp, err
167+
}
168+
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
169+
aliRsp.SignData = signData
170+
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
171+
}
172+
150173
// alipay.marketing.activity.delivery.changed(推广计划状态变更消息)
151174
// 文档地址:https://opendocs.alipay.com/open/85544608_alipay.marketing.activity.delivery.changed
152175
func (a *Client) MarketingActivityDeliveryChanged(ctx context.Context, bm gopay.BodyMap) (success bool, err error) {
@@ -232,23 +255,3 @@ func (a *Client) MarketingActivityDeliveryCreate(ctx context.Context, bm gopay.B
232255
aliRsp.SignData = signData
233256
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
234257
}
235-
236-
// alipay.marketing.material.image.upload(营销图片资源上传接口)
237-
// 文档地址:https://opendocs.alipay.com/open/389b24b6_alipay.marketing.material.image.upload
238-
func (a *Client) MarketingMaterialImageUpload(ctx context.Context, bm gopay.BodyMap, file *gopay.File) (aliRsp *MarketingMaterialImageUploadRsp, err error) {
239-
var bs []byte
240-
if bs, err = a.FileRequest(ctx, bm, file, "alipay.marketing.material.image.upload"); err != nil {
241-
return nil, err
242-
}
243-
aliRsp = new(MarketingMaterialImageUploadRsp)
244-
if err = json.Unmarshal(bs, aliRsp); err != nil {
245-
return nil, err
246-
}
247-
if aliRsp.Response != nil && aliRsp.Response.Code != "10000" {
248-
info := aliRsp.Response
249-
return aliRsp, fmt.Errorf(`{"code":"%s","msg":"%s","sub_code":"%s","sub_msg":"%s"}`, info.Code, info.Msg, info.SubCode, info.SubMsg)
250-
}
251-
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
252-
aliRsp.SignData = signData
253-
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
254-
}

0 commit comments

Comments
 (0)