github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/card/event.go (about)

     1  package card
     2  
     3  import (
     4  	"github.com/chanxuehong/wechat/mp/core"
     5  )
     6  
     7  const (
     8  	// 推送到公众号URL上的事件类型
     9  	EventTypeCardPassCheck            core.EventType = "card_pass_check"              // 卡券通过审核
    10  	EventTypeCardNotPassCheck         core.EventType = "card_not_pass_check"          // 卡券未通过审核
    11  	EventTypeUserGiftingCard          core.EventType = "user_gifting_card"            // 转赠事件推送
    12  	EventTypeUserGetCard              core.EventType = "user_get_card"                // 领取事件推送
    13  	EventTypeUserDelCard              core.EventType = "user_del_card"                // 删除事件推送
    14  	EventTypeUserConsumeCard          core.EventType = "user_consume_card"            // 核销事件推送
    15  	EventTypeUserViewCard             core.EventType = "user_view_card"               // 进入会员卡事件推送
    16  	EventTypeUserEnterSessionFromCard core.EventType = "user_enter_session_from_card" // 从卡券进入公众号会话事件推送
    17  	EventTypeCardSkuRemind            core.EventType = "card_sku_remind"              // 库存报警事件
    18  
    19  	EventTypeGiftCardPayDone    core.EventType = "giftcard_pay_done"    // 用户购买礼品卡付款成功
    20  	EventTypeGiftCardUserAccept core.EventType = "giftcard_user_accept" // 用户领取礼品卡成功
    21  )
    22  
    23  // 卡券通过审核, 微信会把这个事件推送到开发者填写的URL
    24  type CardPassCheckEvent struct {
    25  	XMLName struct{} `xml:"xml" json:"-"`
    26  	core.MsgHeader
    27  
    28  	EventType core.EventType `xml:"Event"  json:"Event"`  // 事件类型, card_pass_check
    29  	CardId    string         `xml:"CardId" json:"CardId"` // 卡券ID
    30  }
    31  
    32  func GetCardPassCheckEvent(msg *core.MixedMsg) *CardPassCheckEvent {
    33  	return &CardPassCheckEvent{
    34  		MsgHeader: msg.MsgHeader,
    35  		EventType: msg.EventType,
    36  		CardId:    msg.CardId,
    37  	}
    38  }
    39  
    40  // 卡券未通过审核, 微信会把这个事件推送到开发者填写的URL
    41  type CardNotPassCheckEvent struct {
    42  	XMLName struct{} `xml:"xml" json:"-"`
    43  	core.MsgHeader
    44  
    45  	EventType    core.EventType `xml:"Event"        json:"Event"`  // 事件类型, card_not_pass_check
    46  	CardId       string         `xml:"CardId"       json:"CardId"` // 卡券ID
    47  	RefuseReason string         `xml:"RefuseReason" json:"RefuseReason"`
    48  }
    49  
    50  func GetCardNotPassCheckEvent(msg *core.MixedMsg) *CardNotPassCheckEvent {
    51  	return &CardNotPassCheckEvent{
    52  		MsgHeader:    msg.MsgHeader,
    53  		EventType:    msg.EventType,
    54  		CardId:       msg.CardId,
    55  		RefuseReason: msg.RefuseReason,
    56  	}
    57  }
    58  
    59  // 用户在领取卡券时, 微信会把这个事件推送到开发者填写的URL.
    60  type UserGetCardEvent struct {
    61  	XMLName struct{} `xml:"xml" json:"-"`
    62  	core.MsgHeader
    63  
    64  	EventType           core.EventType `xml:"Event"               json:"Event"`           // 事件类型, user_get_card
    65  	CardId              string         `xml:"CardId"              json:"CardId"`          // 卡券ID
    66  	IsGiveByFriend      int            `xml:"IsGiveByFriend"      json:"IsGiveByFriend"`  // 是否为转赠, 1 代表是, 0 代表否.
    67  	FriendUserName      string         `xml:"FriendUserName"      json:"FriendUserName"`  // 赠送方账号(一个OpenID), "IsGiveByFriend"为1 时填写该参数.
    68  	UserCardCode        string         `xml:"UserCardCode"        json:"UserCardCode"`    // code 序列号. 自定义code 及非自定义code的卡券被领取后都支持事件推送.
    69  	OldUserCardCode     string         `xml:"OldUserCardCode"     json:"OldUserCardCode"` // 转赠前的code序列号。
    70  	OuterId             int64          `xml:"OuterId"             json:"OuterId"`         // 领取场景值, 用于领取渠道数据统计. 可在生成二维码接口及添加JS API 接口中自定义该字段的整型值.
    71  	OuterStr            string         `xml:"OuterStr"            json:"OuterStr"`
    72  	IsRestoreMemberCard int            `xml:"IsRestoreMemberCard" json:"IsRestoreMemberCard"`
    73  	IsRecommendByFriend int            `xml:"IsRecommendByFriend" json:"IsRecommendByFriend"`
    74  	UnionId             string         `xml:"UnionId"              json:"UnionId"` // unionId
    75  }
    76  
    77  func GetUserGetCardEvent(msg *core.MixedMsg) *UserGetCardEvent {
    78  	return &UserGetCardEvent{
    79  		MsgHeader:           msg.MsgHeader,
    80  		EventType:           msg.EventType,
    81  		CardId:              msg.CardId,
    82  		IsGiveByFriend:      msg.IsGiveByFriend,
    83  		FriendUserName:      msg.FriendUserName,
    84  		UserCardCode:        msg.UserCardCode,
    85  		OldUserCardCode:     msg.OldUserCardCode,
    86  		OuterId:             msg.OuterId,
    87  		OuterStr:            msg.OuterStr,
    88  		IsRestoreMemberCard: msg.IsRestoreMemberCard,
    89  		IsRecommendByFriend: msg.IsRecommendByFriend,
    90  		UnionId:             msg.UnionId,
    91  	}
    92  }
    93  
    94  // 转赠事件推送.
    95  type UserGiftingCardEvent struct {
    96  	XMLName struct{} `xml:"xml" json:"-"`
    97  	core.MsgHeader
    98  
    99  	EventType      core.EventType `xml:"Event"          json:"Event"`
   100  	CardId         string         `xml:"CardId"         json:"CardId"`
   101  	UserCardCode   string         `xml:"UserCardCode"   json:"UserCardCode"`
   102  	IsReturnBack   int            `xml:"IsReturnBack"   json:"IsReturnBack"`
   103  	FriendUserName string         `xml:"FriendUserName" json:"FriendUserName"`
   104  	IsChatRoom     int            `xml:"IsChatRoom"     json:"IsChatRoom"`
   105  }
   106  
   107  func GetUserGiftingCardEvent(msg *core.MixedMsg) *UserGiftingCardEvent {
   108  	return &UserGiftingCardEvent{
   109  		MsgHeader:      msg.MsgHeader,
   110  		EventType:      msg.EventType,
   111  		CardId:         msg.CardId,
   112  		UserCardCode:   msg.UserCardCode,
   113  		IsReturnBack:   msg.IsReturnBack,
   114  		FriendUserName: msg.FriendUserName,
   115  		IsChatRoom:     msg.IsChatRoom,
   116  	}
   117  }
   118  
   119  // 用户在删除卡券时, 微信会把这个事件推送到开发者填写的URL.
   120  type UserDelCardEvent struct {
   121  	XMLName struct{} `xml:"xml" json:"-"`
   122  	core.MsgHeader
   123  
   124  	EventType    core.EventType `xml:"Event"        json:"Event"`        // 事件类型, user_del_card
   125  	CardId       string         `xml:"CardId"       json:"CardId"`       // 卡券ID
   126  	UserCardCode string         `xml:"UserCardCode" json:"UserCardCode"` // 商户自定义code 值. 非自定code 推送为空串
   127  }
   128  
   129  func GetUserDelCardEvent(msg *core.MixedMsg) *UserDelCardEvent {
   130  	return &UserDelCardEvent{
   131  		MsgHeader:    msg.MsgHeader,
   132  		EventType:    msg.EventType,
   133  		CardId:       msg.CardId,
   134  		UserCardCode: msg.UserCardCode,
   135  	}
   136  }
   137  
   138  // 核销事件推送
   139  type UserConsumeCardEvent struct {
   140  	XMLName struct{} `xml:"xml" json:"-"`
   141  	core.MsgHeader
   142  
   143  	EventType     core.EventType `xml:"Event"         json:"Event"`         // 事件类型, user_consume_card
   144  	CardId        string         `xml:"CardId"        json:"CardId"`        // 卡券ID
   145  	UserCardCode  string         `xml:"UserCardCode"  json:"UserCardCode"`  // 商户自定义code 值. 非自定code 推送为空串
   146  	ConsumeSource string         `xml:"ConsumeSource" json:"ConsumeSource"` // 核销来源。支持开发者统计API核销(FROM_API)、公众平台核销(FROM_MP)、卡券商户助手核销(FROM_MOBILE_HELPER)(核销员微信号)
   147  	LocationName  string         `xml:"LocationName"  json:"LocationName"`  // 门店名称,当前卡券核销的门店名称(只有通过自助核销和买单核销时才会出现该字段)
   148  	StaffOpenId   string         `xml:"StaffOpenId"   json:"StaffOpenId"`   // 核销该卡券核销员的openid(只有通过卡券商户助手核销时才会出现)
   149  	VerifyCode    string         `xml:"VerifyCode"    json:"VerifyCode"`    // 自助核销时,用户输入的验证码
   150  	RemarkAmount  string         `xml:"RemarkAmount"  json:"RemarkAmount"`  // 自助核销时,用户输入的备注金额
   151  	OuterStr      string         `xml:"OuterStr"      json:"OuterStr"`      // 开发者发起核销时传入的自定义参数,用于进行核销渠道统计
   152  }
   153  
   154  func GetUserConsumeCardEvent(msg *core.MixedMsg) *UserConsumeCardEvent {
   155  	return &UserConsumeCardEvent{
   156  		MsgHeader:     msg.MsgHeader,
   157  		EventType:     msg.EventType,
   158  		CardId:        msg.CardId,
   159  		UserCardCode:  msg.UserCardCode,
   160  		ConsumeSource: msg.ConsumeSource,
   161  		LocationName:  msg.LocationName,
   162  		StaffOpenId:   msg.StaffOpenId,
   163  		VerifyCode:    msg.VerifyCode,
   164  		RemarkAmount:  msg.RemarkAmount,
   165  		OuterStr:      msg.OuterStr,
   166  	}
   167  }
   168  
   169  // 用户在进入会员卡时, 微信会把这个事件推送到开发者填写的URL
   170  type UserViewCardEvent struct {
   171  	XMLName struct{} `xml:"xml" json:"-"`
   172  	core.MsgHeader
   173  
   174  	EventType    core.EventType `xml:"Event"        json:"Event"`        // 事件类型, user_view_card
   175  	CardId       string         `xml:"CardId"       json:"CardId"`       // 卡券ID
   176  	UserCardCode string         `xml:"UserCardCode" json:"UserCardCode"` // 商户自定义code 值. 非自定code 推送为空串
   177  }
   178  
   179  func GetUserViewCardEvent(msg *core.MixedMsg) *UserViewCardEvent {
   180  	return &UserViewCardEvent{
   181  		MsgHeader:    msg.MsgHeader,
   182  		EventType:    msg.EventType,
   183  		CardId:       msg.CardId,
   184  		UserCardCode: msg.UserCardCode,
   185  	}
   186  }
   187  
   188  // 从卡券进入公众号会话事件推送
   189  type UserEnterSessionFromCardEvent struct {
   190  	XMLName struct{} `xml:"xml" json:"-"`
   191  	core.MsgHeader
   192  
   193  	EventType    core.EventType `xml:"Event"        json:"Event"`        // 事件类型, user_view_card
   194  	CardId       string         `xml:"CardId"       json:"CardId"`       // 卡券ID
   195  	UserCardCode string         `xml:"UserCardCode" json:"UserCardCode"` // 商户自定义code 值. 非自定code 推送为空串
   196  }
   197  
   198  func GetUserEnterSessionFromCardEvent(msg *core.MixedMsg) *UserEnterSessionFromCardEvent {
   199  	return &UserEnterSessionFromCardEvent{
   200  		MsgHeader:    msg.MsgHeader,
   201  		EventType:    msg.EventType,
   202  		CardId:       msg.CardId,
   203  		UserCardCode: msg.UserCardCode,
   204  	}
   205  }
   206  
   207  // 库存报警事件
   208  type CardSkuRemindEvent struct {
   209  	XMLName struct{} `xml:"xml" json:"-"`
   210  	core.MsgHeader
   211  
   212  	EventType core.EventType `xml:"Event"  json:"Event"`  // 事件类型, card_sku_remind
   213  	CardId    string         `xml:"CardId" json:"CardId"` // 卡券ID
   214  	Detail    string         `xml:"Detail" json:"Detail"` // 报警详细信息
   215  }
   216  
   217  func GetCardSkuRemindEvent(msg *core.MixedMsg) *CardSkuRemindEvent {
   218  	return &CardSkuRemindEvent{
   219  		MsgHeader: msg.MsgHeader,
   220  		EventType: msg.EventType,
   221  		CardId:    msg.CardId,
   222  		Detail:    msg.Detail,
   223  	}
   224  }
   225  
   226  // 用户购买礼品卡付款成功
   227  type GiftCardPayDoneEvent struct {
   228  	XMLName struct{} `xml:"xml" json:"-"`
   229  	core.MsgHeader
   230  
   231  	EventType core.EventType `xml:"Event"   json:"Event"`   // 事件类型,此处为giftcard_pay_done标识订单完成事件
   232  	PageId    string         `xml:"PageId"  json:"PageId"`  // 货架的id
   233  	OrderId   string         `xml:"OrderId" json:"OrderId"` // 订单号
   234  }
   235  
   236  func GetGiftCardPayDoneEvent(msg *core.MixedMsg) *GiftCardPayDoneEvent {
   237  	return &GiftCardPayDoneEvent{
   238  		MsgHeader: msg.MsgHeader,
   239  		EventType: msg.EventType,
   240  		PageId:    msg.PageId,
   241  		OrderId:   msg.OrderId,
   242  	}
   243  }
   244  
   245  // 用户领取礼品卡成功
   246  type GiftCardUserAcceptEvent struct {
   247  	XMLName struct{} `xml:"xml" json:"-"`
   248  	core.MsgHeader
   249  
   250  	EventType core.EventType `xml:"Event"   json:"Event"`   // 事件类型,此处为giftcard_user_accept标识订单完成事件
   251  	PageId    string         `xml:"PageId"  json:"PageId"`  // 货架的id
   252  	OrderId   string         `xml:"OrderId" json:"OrderId"` // 订单号
   253  }
   254  
   255  func GetGiftCardUserAcceptEvent(msg *core.MixedMsg) *GiftCardUserAcceptEvent {
   256  	return &GiftCardUserAcceptEvent{
   257  		MsgHeader: msg.MsgHeader,
   258  		EventType: msg.EventType,
   259  		PageId:    msg.PageId,
   260  		OrderId:   msg.OrderId,
   261  	}
   262  }