Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
iGoogle-ink committed Apr 13, 2024
1 parent afa5312 commit 8054188
Show file tree
Hide file tree
Showing 11 changed files with 484 additions and 83 deletions.
108 changes: 107 additions & 1 deletion alipay/marketing_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"strings"

"github.com/go-pay/gopay"
)
Expand Down Expand Up @@ -138,11 +139,116 @@ func (a *Client) MarketingCampaignCashDetailQuery(ctx context.Context, bm gopay.
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)
}

// alipay.marketing.activity.delivery.changed(推广计划状态变更消息)
// 文档地址:https://opendocs.alipay.com/open/85544608_alipay.marketing.activity.delivery.changed
func (a *Client) MarketingActivityDeliveryChanged(ctx context.Context, bm gopay.BodyMap) (success bool, err error) {
err = bm.CheckEmptyError("event_time", "delivery_id", "delivery_status", "delivery_error_msg", "delivery_booth_code")
if err != nil {
return false, err
}
bs, err := a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.changed")
if err != nil {
return false, err
}
if strings.Contains(string(bs), "success") {
return true, nil
}
return
}

// alipay.marketing.activity.delivery.stop(停止推广计划)
// 文档地址:https://opendocs.alipay.com/open/39c69f03_alipay.marketing.activity.delivery.stop
func (a *Client) MarketingActivityDeliveryStop(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityDeliveryStopRsp, err error) {
err = bm.CheckEmptyError("delivery_id", "out_biz_no", "merchant_access_mode")
if err != nil {
return nil, err
}
var bs []byte
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.stop"); err != nil {
return nil, err
}
aliRsp = new(MarketingActivityDeliveryStopRsp)
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.activity.delivery.query(查询推广计划)
// 文档地址:https://opendocs.alipay.com/open/69c6d6c2_alipay.marketing.activity.delivery.query
func (a *Client) MarketingActivityDeliveryQuery(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityDeliveryQueryRsp, err error) {
err = bm.CheckEmptyError("delivery_id", "merchant_access_mode")
if err != nil {
return nil, err
}
var bs []byte
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.query"); err != nil {
return nil, err
}
aliRsp = new(MarketingActivityDeliveryQueryRsp)
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.activity.delivery.create(创建推广计划)
// 文档地址:https://opendocs.alipay.com/open/47498bf2_alipay.marketing.activity.delivery.create
func (a *Client) MarketingActivityDeliveryCreate(ctx context.Context, bm gopay.BodyMap) (aliRsp *MarketingActivityDeliveryCreateRsp, err error) {
err = bm.CheckEmptyError("delivery_booth_code", "out_biz_no", "delivery_base_info", "delivery_play_config", "delivery_target_rule", "merchant_access_mode")
if err != nil {
return nil, err
}
var bs []byte
if bs, err = a.doAliPay(ctx, bm, "alipay.marketing.activity.delivery.create"); err != nil {
return nil, err
}
aliRsp = new(MarketingActivityDeliveryCreateRsp)
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.material.image.upload(营销图片资源上传接口)
// 文档地址:https://opendocs.alipay.com/open/389b24b6_alipay.marketing.material.image.upload
func (a *Client) MarketingMaterialImageUpload(ctx context.Context, bm gopay.BodyMap, file *gopay.File) (aliRsp *MarketingMaterialImageUploadRsp, err error) {
var bs []byte
if bs, err = a.FileRequest(ctx, bm, file, "alipay.marketing.material.image.upload"); err != nil {
return nil, err
}
aliRsp = new(MarketingMaterialImageUploadRsp)
if err = json.Unmarshal(bs, aliRsp); err != nil {
return nil, err
}
if aliRsp.Response != nil && aliRsp.Response.Code != "10000" {
info := aliRsp.Response
return aliRsp, fmt.Errorf(`{"code":"%s","msg":"%s","sub_code":"%s","sub_msg":"%s"}`, info.Code, info.Msg, info.SubCode, info.SubMsg)
}
signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
aliRsp.SignData = signData
return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
}
177 changes: 149 additions & 28 deletions alipay/model_market.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,71 @@ type MarketingCampaignCashCreateRsp struct {
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 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 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 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 MarketingActivityDeliveryStopRsp struct {
Response *MarketingActivityDeliveryStop `json:"alipay_marketing_activity_delivery_stop_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
SignData string `json:"-"`
Sign string `json:"sign"`
}

type MarketingActivityDeliveryQueryRsp struct {
Response *MarketingActivityDeliveryQuery `json:"alipay_marketing_activity_delivery_query_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
SignData string `json:"-"`
Sign string `json:"sign"`
}

type MarketingActivityDeliveryCreateRsp struct {
Response *MarketingActivityDeliveryCreate `json:"alipay_marketing_activity_delivery_create_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
SignData string `json:"-"`
Sign string `json:"sign"`
}

type MarketingMaterialImageUploadRsp struct {
Response *MarketingMaterialImageUpload `json:"alipay_marketing_material_image_upload_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 MarketingCampaignCashTrigger struct {
ErrorResponse
TriggerResult string `json:"trigger_result"`
Expand All @@ -35,24 +86,10 @@ type MarketingCampaignCashTrigger struct {
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"`
Expand All @@ -68,13 +105,6 @@ type CashCampaignInfo struct {
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"`
Expand All @@ -90,3 +120,94 @@ type MarketingCampaignCashDetailQuery struct {
OriginCrowdNo string `json:"origin_crowd_no"`
CampStatus string `json:"camp_status"`
}

type MarketingActivityDeliveryStop struct {
ErrorResponse
DeliveryId string `json:"delivery_id"`
}

type MarketingActivityDeliveryQuery struct {
ErrorResponse
DeliveryId string `json:"delivery_id"`
DeliveryStatus string `json:"delivery_status"`
DeliveryBoothCode string `json:"delivery_booth_code"`
DeliveryErrorMsg string `json:"delivery_error_msg"`
DeliveryBaseInfo *DeliveryBaseInfo `json:"delivery_base_info"`
DeliveryPlayConfig *DeliveryPlayConfig `json:"delivery_play_config"`
DeliveryTargetRule *DeliveryTargetRule `json:"delivery_target_rule"`
}

type DeliveryBaseInfo struct {
DeliveryName string `json:"delivery_name"`
DeliveryBeginTime string `json:"delivery_begin_time"`
DeliveryEndTime string `json:"delivery_end_time"`
}

type DeliveryPlayConfig struct {
DeliverySingleSendConfig *DeliverySingleSendConfig `json:"delivery_single_send_config"`
DeliveryFullSendConfig *DeliveryFullSendConfig `json:"delivery_full_send_config"`
}

type DeliverySingleSendConfig struct {
DeliveryContentInfo *DeliveryContentInfo `json:"delivery_content_info"`
}

type DeliveryFullSendConfig struct {
DeliveryFloorAmount string `json:"delivery_floor_amount"`
DeliveryContentInfo *DeliveryContentInfo `json:"delivery_content_info"`
}

type DeliveryContentInfo struct {
DeliveryContentType string `json:"delivery_content_type"`
DeliveryActivityContent *DeliveryActivityContent `json:"delivery_activity_content"`
DeliveryAppContent *DeliveryAppContent `json:"delivery_app_content"`
DeliveryDisplayInfo *DeliveryDisplayInfo `json:"delivery_display_info"`
}

type DeliveryActivityContent struct {
ActivityId string `json:"activity_id"`
}

type DeliveryAppContent struct {
MiniAppId string `json:"mini_app_id"`
ServiceCodeList []string `json:"service_code_list"`
MiniAppDeliveryType string `json:"mini_app_delivery_type"`
}

type DeliveryDisplayInfo struct {
MainTitle string `json:"main_title"`
SubTitle string `json:"sub_title"`
}

type DeliveryTargetRule struct {
DeliveryMerchantRule *DeliveryMerchantRule `json:"delivery_merchant_rule"`
DeliveryCityCodeRule *DeliveryCityCodeRule `json:"delivery_city_code_rule"`
DeliveryPromoTags string `json:"delivery_promo_tags"`
}

type DeliveryMerchantRule struct {
DeliveryMerchantMode string `json:"delivery_merchant_mode"`
DeliveryMerchantInfos []*DeliveryMerchantInfo `json:"delivery_merchant_infos"`
}

type DeliveryMerchantInfo struct {
MerchantIdType string `json:"merchant_id_type"`
MerchantId string `json:"merchant_id"`
}

type DeliveryCityCodeRule struct {
CityCodes []string `json:"city_codes"`
AllCity bool `json:"all_city"`
}

type MarketingActivityDeliveryCreate struct {
ErrorResponse
DeliveryId string `json:"delivery_id"`
}

type MarketingMaterialImageUpload struct {
ErrorResponse
ResourceId string `json:"resource_id"`
ResourceEnhance bool `json:"resource_enhance"`
ResourceUrl string `json:"resource_url"`
}
41 changes: 41 additions & 0 deletions alipay/model_smilepay.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package alipay

type ZolozAuthenticationSmilepayInitializeRsp struct {
Response *ZolozAuthenticationSmilepayInitialize `json:"zoloz_authentication_smilepay_initialize_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
SignData string `json:"-"`
Sign string `json:"sign"`
}

type ZolozAuthenticationCustomerFtokenQueryRsp struct {
Response *ZolozAuthenticationCustomerFtokenQuery `json:"zoloz_authentication_customer_ftoken_query_response"`
AlipayCertSn string `json:"alipay_cert_sn,omitempty"`
SignData string `json:"-"`
Sign string `json:"sign"`
}

// =========================================================分割=========================================================

type ZolozAuthenticationSmilepayInitialize struct {
ErrorResponse
RetCodeSub string `json:"ret_code_sub"`
RetMessageSub string `json:"ret_message_sub"`
ZimId string `json:"zim_id"`
ZimInitClientData string `json:"zim_init_client_data"`
}

type ZolozAuthenticationCustomerFtokenQuery struct {
ErrorResponse
Uid string `json:"uid"`
OpenId string `json:"open_id"`
UidTelPairList []*UidTelPair `json:"uid_tel_pair_list"`
AgeCheckResult string `json:"age_check_result"`
CertNo string `json:"cert_no"`
CertName string `json:"cert_name"`
FaceId string `json:"face_id"`
}

type UidTelPair struct {
UserId string `json:"user_id"`
OpenId string `json:"open_id"`
}
4 changes: 1 addition & 3 deletions alipay/request.go
Original file line number Diff line number Diff line change
Expand Up @@ -317,11 +317,9 @@ func (a *Client) FileRequest(ctx context.Context, bm gopay.BodyMap, file *gopay.
if a.location != nil {
pubBody.Set("timestamp", time.Now().In(a.location).Format(xtime.TimeLayout))
}
if a.NotifyUrl != gopay.NULL { //如果返回url为空,传过来的返回url不为空
//fmt.Println("url不为空?", a.NotifyUrl)
if a.NotifyUrl != gopay.NULL {
pubBody.Set("notify_url", a.NotifyUrl)
}
//fmt.Println("notify,", pubBody.JsonBody())
if a.AppAuthToken != gopay.NULL {
pubBody.Set("app_auth_token", a.AppAuthToken)
}
Expand Down
Loading

0 comments on commit 8054188

Please sign in to comment.