diff --git a/alipay/marketing_api.go b/alipay/marketing_api.go index e56cf9b9..04cee40d 100644 --- a/alipay/marketing_api.go +++ b/alipay/marketing_api.go @@ -30,3 +30,119 @@ func (a *Client) OpenAppQrcodeCreate(ctx context.Context, bm gopay.BodyMap) (ali aliRsp.SignData = signData return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr) } + +// alipay.marketing.campaign.cash.create(创建现金活动接口) +// 文档地址:https://opendocs.alipay.com/open/029yy9 +func (a *Client) MarketingCampaignCashCreate(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingCampaignCashCreateRsp, err error) { + err = bm.CheckEmptyError("coupon_name", "prize_type", "total_money", "total_num", "prize_msg", "start_time", "end_time", "merchant_link") + if err != nil { + return nil, err + } + var bs []byte + if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.campaign.cash.create"); err != nil { + return nil, err + } + aliRsp = new(MarketingCampaignCashCreateRsp) + if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil { + return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs)) + } + if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil { + return aliRsp, err + } + signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn) + aliRsp.SignData = signData + return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr) +} + +// alipay.marketing.campaign.cash.trigger(触发现金红包活动) +// 文档地址:https://opendocs.alipay.com/open/029yya +func (a *Client) MarketingCampaignCashTrigger(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingCampaignCashTriggerRsp, err error) { + err = bm.CheckEmptyError("user_id", "crowd_no", "login_id", "order_price", "out_biz_no") + if err != nil { + return nil, err + } + var bs []byte + if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.campaign.cash.trigger"); err != nil { + return nil, err + } + aliRsp = new(MarketingCampaignCashTriggerRsp) + if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil { + return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs)) + } + if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil { + return aliRsp, err + } + signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn) + aliRsp.SignData = signData + return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr) +} + +// alipay.marketing.campaign.cash.status.modify(更改现金活动状态接口) +// 文档地址:https://opendocs.alipay.com/open/029yyb +func (a *Client) MarketingCampaignCashStatusModify(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingCampaignCashStatusModifyRsp, err error) { + err = bm.CheckEmptyError("crowd_no", "camp_status") + if err != nil { + return nil, err + } + var bs []byte + if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.campaign.cash.status.modify"); err != nil { + return nil, err + } + aliRsp = new(MarketingCampaignCashStatusModifyRsp) + if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil { + return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs)) + } + if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil { + return aliRsp, err + } + signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn) + aliRsp.SignData = signData + return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr) +} + +// alipay.marketing.campaign.cash.list.query(现金活动列表查询接口) +// 文档地址:https://opendocs.alipay.com/open/02a1f9 +func (a *Client) MarketingCampaignCashListQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingCampaignCashListQueryRsp, err error) { + err = bm.CheckEmptyError("camp_status", "page_size", "page_index") + if err != nil { + return nil, err + } + var bs []byte + if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.campaign.cash.list.query"); err != nil { + return nil, err + } + aliRsp = new(MarketingCampaignCashListQueryRsp) + if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil { + return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs)) + } + if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil { + return aliRsp, err + } + signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn) + aliRsp.SignData = signData + return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr) +} + +// alipay.marketing.campaign.cash.detail.query(现金活动详情查询) +// 文档地址:https://opendocs.alipay.com/open/02a1fa +func (a *Client) MarketingCampaignCashDetailQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingCampaignCashDetailQueryRsp, err error) { + err = bm.CheckEmptyError("crowd_no") + if err != nil { + return nil, err + } + var bs []byte + if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.campaign.cash.detail.query"); err != nil { + return nil, err + } + aliRsp = new(MarketingCampaignCashDetailQueryRsp) + if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil { + return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs)) + } + fmt.Println(err) + if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil { + return aliRsp, err + } + signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn) + aliRsp.SignData = signData + return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr) +} diff --git a/alipay/marketing_api_test.go b/alipay/marketing_api_test.go index 5558a8d9..65022c08 100644 --- a/alipay/marketing_api_test.go +++ b/alipay/marketing_api_test.go @@ -22,3 +22,85 @@ func TestOpenAppQrcodeCreate(t *testing.T) { } xlog.Debug("aliRsp.Response:", aliRsp.Response) } + +func TestMarketingCampaignCashCreate(t *testing.T) { + // 请求参数 + bm := make(gopay.BodyMap) + bm.Set("coupon_name", "test_name"). + Set("prize_type", "0"). + Set("total_money", "0.1"). + Set("total_num", "1"). + Set("prize_msg", "test_prize_msg"). + Set("start_time", "0"). + Set("end_time", "0"). + Set("merchant_link", "0") + + // 发起请求 + aliRsp, err := client.MarketingCampaignCashCreate(ctx, bm) + if err != nil { + xlog.Error(err) + return + } + xlog.Debug("aliRsp.Response:", aliRsp.Response) +} + +func TestMarketingCampaignCashTrigger(t *testing.T) { + // 请求参数 + bm := make(gopay.BodyMap) + bm.Set("user_id", "1"). + Set("crowd_no", "1"). + Set("login_id", "1"). + Set("order_price", "0"). + Set("out_biz_no", "1") + + // 发起请求 + aliRsp, err := client.MarketingCampaignCashTrigger(ctx, bm) + if err != nil { + xlog.Error(err) + return + } + xlog.Debug("aliRsp.Response:", aliRsp.Response) +} + +func TestMarketingCampaignCashStatusModify(t *testing.T) { + // 请求参数 + bm := make(gopay.BodyMap) + bm.Set("crowd_no", "1"). + Set("camp_status", "1") + // 发起请求 + aliRsp, err := client.MarketingCampaignCashStatusModify(ctx, bm) + if err != nil { + xlog.Error(err) + return + } + xlog.Debug("aliRsp.Response:", aliRsp.Response) +} + +func TestMarketingCampaignCashListQuery(t *testing.T) { + // 请求参数 + bm := make(gopay.BodyMap) + bm.Set("camp_status", "1"). + Set("page_size", "1"). + Set("page_index", "1") + // 发起请求 + aliRsp, err := client.MarketingCampaignCashListQuery(ctx, bm) + if err != nil { + xlog.Error(err) + return + } + xlog.Debug("aliRsp.Response:", aliRsp.Response) +} + +func TestMarketingCampaignCashDetailQuery(t *testing.T) { + // 请求参数 + bm := make(gopay.BodyMap) + bm.Set("crowd_no", "POYb84lfiKVdIfERAYsqPL_KQRIpfQbl47xfRmmPBlDMnSZ96O-zxUfKlHp5cxmx") + + // 发起请求 + aliRsp, err := client.MarketingCampaignCashDetailQuery(ctx, bm) + if err != nil { + xlog.Error(err) + return + } + xlog.Debug("aliRsp.Response:", aliRsp.Response) +} diff --git a/alipay/model.go b/alipay/model.go index 4b1953de..8016730a 100644 --- a/alipay/model.go +++ b/alipay/model.go @@ -379,3 +379,5 @@ type Apis struct { FieldName string `json:"field_name,omitempty"` PackageCode string `json:"package_code,omitempty"` } + +// =================================================== diff --git a/alipay/model_market.go b/alipay/model_market.go new file mode 100644 index 00000000..d25dd7b0 --- /dev/null +++ b/alipay/model_market.go @@ -0,0 +1,92 @@ +package alipay + +type MarketingCampaignCashCreateRsp struct { + Response *MarketingCampaignCashCreate `json:"alipay_marketing_campaign_cash_create_response"` + AlipayCertSn string `json:"alipay_cert_sn,omitempty"` + SignData string `json:"-"` + Sign string `json:"sign"` +} + +type MarketingCampaignCashCreate struct { + ErrorResponse + CrowdNo string `json:"crowd_no"` + PayURL string `json:"pay_url"` + OriginCrowdNo string `json:"origin_crowd_no"` +} + +type MarketingCampaignCashTriggerRsp struct { + Response *MarketingCampaignCashTrigger `json:"alipay_marketing_campaign_cash_trigger_response"` + AlipayCertSn string `json:"alipay_cert_sn,omitempty"` + SignData string `json:"-"` + Sign string `json:"sign"` +} + +type MarketingCampaignCashTrigger struct { + ErrorResponse + TriggerResult string `json:"trigger_result"` + PrizeAmount string `json:"prize_amount"` + RepeatTriggerFlag string `json:"repeat_trigger_flag"` + PartnerId string `json:"partner_id"` + ErrorMsg string `json:"error_msg"` + CouponName string `json:"coupon_name"` + PrizeMsg string `json:"prize_msg"` + MerchantLogo string `json:"merchant_logo"` + BizNo string `json:"biz_no"` + OutBizNo string `json:"out_biz_no"` +} + +type MarketingCampaignCashStatusModifyRsp struct { + Response *MarketingCampaignCashStatusModify `json:"alipay_marketing_campaign_cash_status_modify_response"` + AlipayCertSn string `json:"alipay_cert_sn,omitempty"` + SignData string `json:"-"` + Sign string `json:"sign"` +} + +type MarketingCampaignCashStatusModify struct { + ErrorResponse +} + +type MarketingCampaignCashListQueryRsp struct { + Response *MarketingCampaignCashListQuery `json:"alipay_marketing_campaign_cash_list_query_response"` + AlipayCertSn string `json:"alipay_cert_sn,omitempty"` + SignData string `json:"-"` + Sign string `json:"sign"` +} + +type MarketingCampaignCashListQuery struct { + ErrorResponse + PageSize string `json:"page_size"` + CampList []CashCampaignInfo `json:"camp_list"` + PageIndex string `json:"page_index"` + TotalSize string `json:"total_size"` +} + +type CashCampaignInfo struct { + CrowdNo string `json:"crowd_no"` + OriginCrowdNo string `json:"origin_crowd_no"` + CampStatus string `json:"camp_status"` + CouponName string `json:"coupon_name"` +} + +type MarketingCampaignCashDetailQueryRsp struct { + Response *MarketingCampaignCashDetailQuery `json:"alipay_marketing_campaign_cash_detail_query_response"` + AlipayCertSn string `json:"alipay_cert_sn,omitempty"` + SignData string `json:"-"` + Sign string `json:"sign"` +} + +type MarketingCampaignCashDetailQuery struct { + ErrorResponse + CrowdNo string `json:"crowd_no"` + CouponName string `json:"coupon_name"` + PrizeMsg string `json:"prize_msg"` + PrizeType string `json:"prize_type"` + StartTime string `json:"start_time"` + EndTime string `json:"end_time"` + TotalAmount float64 `json:"total_amount"` + SendAmount float64 `json:"send_amount"` + TotalNum int `json:"total_num"` + TotalCount int `json:"total_count"` + OriginCrowdNo string `json:"origin_crowd_no"` + CampStatus string `json:"camp_status"` +}