Skip to content

Commit

Permalink
feat:营销产品接口 (#375)
Browse files Browse the repository at this point in the history
* feat:营销产品接口
  • Loading branch information
tangbo1430 authored Dec 24, 2023
1 parent ebe7f4d commit 21a0c44
Show file tree
Hide file tree
Showing 4 changed files with 292 additions and 0 deletions.
116 changes: 116 additions & 0 deletions alipay/marketing_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
82 changes: 82 additions & 0 deletions alipay/marketing_api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
2 changes: 2 additions & 0 deletions alipay/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -379,3 +379,5 @@ type Apis struct {
FieldName string `json:"field_name,omitempty"`
PackageCode string `json:"package_code,omitempty"`
}

// ===================================================
92 changes: 92 additions & 0 deletions alipay/model_market.go
Original file line number Diff line number Diff line change
@@ -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"`
}

0 comments on commit 21a0c44

Please sign in to comment.