card

package
v0.0.0-...-aad7e29 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2017 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

微信卡券接口

Index

Constants

View Source
const (
	// 卡券Code展示类型
	CodeTypeText        = "CODE_TYPE_TEXT"         // 文本
	CodeTypeBarCode     = "CODE_TYPE_BARCODE"      // 一维码
	CodeTypeQRCode      = "CODE_TYPE_QRCODE"       // 二维码
	CodeTypeOnlyBarCode = "CODE_TYPE_ONLY_BARCODE" // 一维码无code显示
	CodeTypeOnlyQRCode  = "CODE_TYPE_ONLY_QRCODE"  // 二维码无code显示
)
View Source
const (
	// 卡券的状态
	CardStatusNotVerify    = "CARD_STATUS_NOT_VERIFY"    // 待审核
	CardStatusVerifyFail   = "CARD_STATUS_VERIFY_FALL"   // 审核失败
	CardStatusVerifyOk     = "CARD_STATUS_VERIFY_OK"     // 通过审核
	CardStatusUserDelete   = "CARD_STATUS_USER_DELETE"   // 卡券被用户删除
	CardStatusUserDispatch = "CARD_STATUS_USER_DISPATCH" // 在公众平台投放过的卡券
)
View Source
const (
	// DateInfo类型
	DateInfoTypeFixTimeRange = "DATE_TYPE_FIX_TIME_RANGE" // 表示固定日期区间
	DateInfoTypeFixTerm      = "DATE_TYPE_FIX_TERM"       // 表示固定时长(自领取后按天算)
	DateInfoTypePermanent    = "DATE_TYPE_PERMANENT"      // 表示永久有效(会员卡类型专用)
)
View Source
const (
	// 卡券类型
	CardTypeGeneralCoupon = "GENERAL_COUPON" // 优惠券
	CardTypeGroupon       = "GROUPON"        // 团购券
	CardTypeCash          = "CASH"           // 代金券
	CardTypeDiscount      = "DISCOUNT"       // 折扣券
	CardTypeGift          = "GIFT"           // 礼品券
	CardTypeMemberCard    = "MEMBER_CARD"    // 会员卡
	CardTypeMeetingTicket = "MEETING_TICKET" // 会议门票
	CardTypeScenicTicket  = "SCENIC_TICKET"  // 景区门票
	CardTypeMovieTicket   = "MOVIE_TICKET"   // 电影票
	CardTypeBoardingPass  = "BOARDING_PASS"  // 飞机票
)
View Source
const (
	// 推送到公众号URL上的事件类型
	EventTypeCardPassCheck            = "card_pass_check"              // 卡券通过审核
	EventTypeCardNotPassCheck         = "card_not_pass_check"          // 卡券未通过审核
	EventTypeUserGetCard              = "user_get_card"                // 领取事件推送
	EventTypeUserDelCard              = "user_del_card"                // 删除事件推送
	EventTypeUserConsumeCard          = "user_consume_card"            // 核销事件推送
	EventTypeUserViewCard             = "user_view_card"               // 进入会员卡事件推送
	EventTypeUserEnterSessionFromCard = "user_enter_session_from_card" // 从卡券进入公众号会话事件推送
)

Variables

This section is empty.

Functions

func Create

func Create(clt *mp.Client, card *Card) (cardId string, err error)

创建卡券.

func Delete

func Delete(clt *mp.Client, cardId string) (err error)

删除卡券

func ModifyStock

func ModifyStock(clt *mp.Client, cardId string, increaseNum int) (err error)

库存修改接口. cardId: 卡券ID increaseNum: 增加库存数量, 可以为负数

func Sign

func Sign(strs []string) (signature string)

卡券通用签名方法.

将 strs 里面的字符串字典排序, 然后拼接成一个字符串后做 sha1 签名.

func Update

func Update(clt *mp.Client, cardId string, card *Card) (sendCheck bool, err error)

更改卡券信息接口.

sendCheck: 是否提交审核,false为修改后不会重新提审,true为修改字段后重新提审,该卡券的状态变为审核中。

Types

type BatchGetQuery

type BatchGetQuery struct {
	Offset     int      `json:"offset"`                // 查询卡列表的起始偏移量,从0开始,即offset: 5是指从从列表里的第六个开始读取。
	Count      int      `json:"count"`                 // 需要查询的卡片的数量(数量最大50)。
	StatusList []string `json:"status_list,omitempty"` // 支持开发者拉出指定状态的卡券列表,例:仅拉出通过审核的卡券。
}

type BatchGetResult

type BatchGetResult struct {
	TotalNum   int      `json:"total_num"`
	ItemNum    int      `json:"item_num"`
	CardIdList []string `json:"card_id_list"`
}

func BatchGet

func BatchGet(clt *mp.Client, query *BatchGetQuery) (rslt *BatchGetResult, err error)

批量查询卡列表.

type BoardingPass

type BoardingPass struct {
	BaseInfo *CardBaseInfo `json:"base_info,omitempty"`

	From          string `json:"from,omitempty"`           // 起点, 上限为18 个汉字
	To            string `json:"to,omitempty"`             // 终点, 上限为18 个汉字
	Flight        string `json:"flight,omitempty"`         // 航班
	Gate          string `json:"gate,omitempty"`           // 登机口. 如发生登机口变更, 建议商家实时调用该接口变更
	CheckinURL    string `json:"check_in_url,omitempty"`   // 在线值机的链接
	AirModel      string `json:"air_model,omitempty"`      // 机型, 上限为8 个汉字
	DepartureTime int64  `json:"departure_time,omitempty"` // 起飞时间. Unix 时间戳格式
	LandingTime   int64  `json:"landing_time,omitempty"`   // 降落时间. Unix 时间戳格式
	BoardingTime  string `json:"boarding_time,omitempty"`  // 登机时间, 只显示"时分"不显示日期, 按时间戳格式填写. 如发生登机时间变更, 建议商家实时调用该接口变更.
}

飞机票

type Card

type Card struct {
	CardType string `json:"card_type,omitempty"`

	GeneralCoupon *GeneralCoupon `json:"general_coupon,omitempty"`
	Groupon       *Groupon       `json:"groupon,omitempty"`
	Cash          *Cash          `json:"cash,omitempty"`
	Discount      *Discount      `json:"discount,omitempty"`
	Gift          *Gift          `json:"gift,omitempty"`
	MemberCard    *MemberCard    `json:"member_card,omitempty"`
	MeetingTicket *MeetingTicket `json:"meeting_ticket,omitempty"`
	ScenicTicket  *ScenicTicket  `json:"scenic_ticket,omitempty"`
	MovieTicket   *MovieTicket   `json:"movie_ticket,omitempty"`
	BoardingPass  *BoardingPass  `json:"boarding_pass,omitempty"`
}

卡券数据结构

func Get

func Get(clt *mp.Client, cardId string) (card *Card, err error)

查看卡券详情.

type CardBaseInfo

type CardBaseInfo struct {
	CardId string `json:"id,omitempty"`     // 查询的时候有返回
	Status string `json:"status,omitempty"` // 查询的时候有返回
	AppId  string `json:"appid,omitempty"`  // 查询的时候有返回

	LogoURL     string    `json:"logo_url,omitempty"`    // 卡券的商户logo,建议像素为300*300。
	CodeType    string    `json:"code_type,omitempty"`   // Code展示类型
	BrandName   string    `json:"brand_name,omitempty"`  // 商户名字,字数上限为12个汉字。
	Title       string    `json:"title,omitempty"`       // 卡券名,字数上限为9个汉字。(建议涵盖卡券属性、服务及金额)。
	SubTitle    string    `json:"sub_title,omitempty"`   // 券名的副标题, 字数上限为18个汉字。
	Color       string    `json:"color,omitempty"`       // 券颜色。按色彩规范标注填写Color010-Color100。
	Notice      string    `json:"notice,omitempty"`      // 卡券使用提醒,字数上限为16个汉字。
	Description string    `json:"description,omitempty"` // 卡券使用说明,字数上限为1024个汉字。
	SKU         *SKU      `json:"sku,omitempty"`         // 商品信息。
	DateInfo    *DateInfo `json:"date_info,omitempty"`   // 使用日期,有效期的信息。

	UseCustomCode        *bool   `json:"use_custom_code,omitempty"`         // 是否自定义Code码。填写true或false,默认为false。通常自有优惠码系统的开发者选择自定义Code码,并在卡券投放时带入Code码
	BindOpenId           *bool   `json:"bind_openid,omitempty"`             // 是否指定用户领取,填写true或false。默认为false。通常指定特殊用户群体投放卡券或防止刷券时选择指定用户领取。
	ServicePhone         string  `json:"service_phone,omitempty"`           // 客服电话。
	LocationIdList       []int64 `json:"location_id_list,omitempty"`        // 门店位置poiid。
	Source               string  `json:"source,omitempty"`                  // 第三方来源名,例如同程旅游、大众点评。
	CustomURLName        string  `json:"custom_url_name,omitempty"`         // 自定义跳转外链的入口名字。
	CustomURLSubTitle    string  `json:"custom_url_sub_title,omitempty"`    // 显示在入口右侧的提示语。
	CustomURL            string  `json:"custom_url,omitempty"`              // 自定义跳转的URL。
	PromotionURLName     string  `json:"promotion_url_name,omitempty"`      // 营销场景的自定义入口名称。
	PromotionURLSubTitle string  `json:"promotion_url_sub_title,omitempty"` // 显示在营销入口右侧的提示语。
	PromotionURL         string  `json:"promotion_url,omitempty"`           // 入口跳转外链的地址链接。
	GetLimit             *int    `json:"get_limit,omitempty"`               // 每人可领券的数量限制,不填写默认为50。
	UseLimit             *int    `json:"use_limit,omitempty"`               // 每人使用次数限制.
	CanShare             *bool   `json:"can_share,omitempty"`               // 卡券领取页面是否可分享。
	CanGiveFriend        *bool   `json:"can_give_friend,omitempty"`         // 卡券是否可转赠。
}

基本的卡券数据, 所有卡券通用

type CardNotPassCheckEvent

type CardNotPassCheckEvent struct {
	XMLName struct{} `xml:"xml" json:"-"`
	mp.MessageHeader

	Event  string `xml:"Event"  json:"Event"`  // 事件类型, card_not_pass_check
	CardId string `xml:"CardId" json:"CardId"` // 卡券ID
}

卡券未通过审核, 微信会把这个事件推送到开发者填写的URL

func GetCardNotPassCheckEvent

func GetCardNotPassCheckEvent(msg *mp.MixedMessage) *CardNotPassCheckEvent

type CardPassCheckEvent

type CardPassCheckEvent struct {
	XMLName struct{} `xml:"xml" json:"-"`
	mp.MessageHeader

	Event  string `xml:"Event"  json:"Event"`  // 事件类型, card_pass_check
	CardId string `xml:"CardId" json:"CardId"` // 卡券ID
}

卡券通过审核, 微信会把这个事件推送到开发者填写的URL

func GetCardPassCheckEvent

func GetCardPassCheckEvent(msg *mp.MixedMessage) *CardPassCheckEvent

type Cash

type Cash struct {
	BaseInfo   *CardBaseInfo `json:"base_info,omitempty"`
	LeastCost  *int          `json:"least_cost,omitempty"`  // 代金券专用, 表示起用金额(单位为分)
	ReduceCost *int          `json:"reduce_cost,omitempty"` // 代金券专用, 表示减免金额(单位为分)
}

代金券

type Color

type Color struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

func GetColors

func GetColors(clt *mp.Client) (colors []Color, err error)

获取卡券最新的颜色列表.

type DateInfo

type DateInfo struct {
	Type           string `json:"type"`                       // 使用时间的类型, DATE_TYPE_FIX_TIME_RANGE 表示固定日期区间,DATE_TYPE_FIX_TERM表示固定时长(自领取后按天算)
	BeginTimestamp int64  `json:"begin_timestamp,omitempty"`  // type为DATE_TYPE_FIX_TIME_RANGE时专用,表示起用时间。从1970年1月1日00:00:00至起用时间的秒数,最终需转换为字符串形态传入。(东八区时间,单位为秒)
	EndTimestamp   int64  `json:"end_timestamp,omitempty"`    // type为DATE_TYPE_FIX_TIME_RANGE时专用,表示结束时间,建议设置为截止日期的23:59:59过期。(东八区时间,单位为秒)
	FixedTerm      *int   `json:"fixed_term,omitempty"`       // type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天内有效,领取后当天有效填写0。(单位为天)
	FixedBeginTerm *int   `json:"fixed_begin_term,omitempty"` // type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天开始生效。(单位为天)
}

type Discount

type Discount struct {
	BaseInfo *CardBaseInfo `json:"base_info,omitempty"`
	Discount *int          `json:"discount,omitempty"` // 折扣券专用, 表示打折额度(百分比). 填30 就是七折.
}

折扣券

type GeneralCoupon

type GeneralCoupon struct {
	BaseInfo      *CardBaseInfo `json:"base_info,omitempty"`
	DefaultDetail string        `json:"default_detail,omitempty"` // 优惠券专用, 填写优惠详情
}

优惠券

type Gift

type Gift struct {
	BaseInfo *CardBaseInfo `json:"base_info,omitempty"`
	Gift     string        `json:"gift,omitempty"` // 礼品券专用, 表示礼品名字
}

礼品券

type Groupon

type Groupon struct {
	BaseInfo   *CardBaseInfo `json:"base_info,omitempty"`
	DealDetail string        `json:"deal_detail,omitempty"` // 团购券专用,团购详情
}

团购券

type MeetingTicket

type MeetingTicket struct {
	BaseInfo      *CardBaseInfo `json:"base_info,omitempty"`
	MeetingDetail string        `json:"meeting_detail,omitempty"` // 会议详情
	MapURL        string        `json:"map_url,omitempty"`        // 会议导览图
}

会议门票

type MemberCard

type MemberCard struct {
	BaseInfo *CardBaseInfo `json:"base_info,omitempty"`

	Prerogative       string                 `json:"prerogative,omitempty"`       // 会员卡特权说明
	SupplyBonus       *bool                  `json:"supply_bonus,omitempty"`      // 显示积分,填写true或false,如填写true,积分相关字段均为必填
	BonusURL          string                 `json:"bonus_url,omitempty"`         // 设置跳转外链查看积分详情。仅适用于积分无法通过激活接口同步的情况下使用该字段。
	SupplyBalance     *bool                  `json:"supply_balance,omitempty"`    // 是否支持储值,填写true或false。如填写true,储值相关字段均为必填。
	BalanceURL        string                 `json:"balance_url,omitempty"`       // 设置跳转外链查看余额详情。仅适用于余额无法通过激活接口同步的情况下使用该字段。
	BonusClearedRules string                 `json:"bonus_cleared,omitempty"`     // 积分清零规则。
	BonusRules        string                 `json:"bonus_rules,omitempty"`       // 积分规则。
	BalanceRules      string                 `json:"balance_rules,omitempty"`     // 储值说明。
	ActivateURL       string                 `json:"activate_url,omitempty"`      // 激活会员卡的url。
	NeedPushOnView    *bool                  `json:"need_push_on_view,omitempty"` // 填写true为用户点击进入会员卡时推送事件,默认为false。
	CustomField1      *MemberCardCustomField `json:"custom_field1,omitempty"`     // 自定义会员信息类目,会员卡激活后显示。
	CustomField2      *MemberCardCustomField `json:"custom_field2,omitempty"`     // 自定义会员信息类目,会员卡激活后显示。
	CustomField3      *MemberCardCustomField `json:"custom_field3,omitempty"`     // 自定义会员信息类目,会员卡激活后显示。
	CustomCell1       *MemberCardCustomCell  `json:"custom_cell1,omitempty"`      // 自定义会员信息类目,会员卡激活后显示。
}

会员卡

type MemberCardCustomCell

type MemberCardCustomCell struct {
	Name string `json:"name,omitempty"` // 入口名称。
	Tips string `json:"tips,omitempty"` // 入口右侧提示语,6个汉字内。
	URL  string `json:"url,omitempty"`  // 入口跳转链接。
}

type MemberCardCustomField

type MemberCardCustomField struct {
	// 会员信息类目名称:
	//
	// FIELD_NAME_TYPE_LEVEL        等级
	// FIELD_NAME_TYPE_COUPON       优惠券
	// FIELD_NAME_TYPE_STAMP        印花
	// FIELD_NAME_TYPE_DISCOUNT     折扣
	// FIELD_NAME_TYPE_ACHIEVEMEN   成就
	// FIELD_NAME_TYPE_MILEAGE      里程
	NameType string `json:"name_type,omitempty"`
	URL      string `json:"url,omitempty"` // 点击类目跳转外链url
}

type MovieTicket

type MovieTicket struct {
	BaseInfo *CardBaseInfo `json:"base_info,omitempty"`
	Detail   string        `json:"detail,omitempty"` // 电影票详情
}

电影票

type SKU

type SKU struct {
	Quantity int `json:"quantity"` // 卡券库存的数量,不支持填写0,上限为100000000。
}

type ScenicTicket

type ScenicTicket struct {
	BaseInfo    *CardBaseInfo `json:"base_info,omitempty"`
	TicketClass string        `json:"ticket_class,omitempty"` // 票类型, 例如平日全票, 套票等
	GuideURL    string        `json:"guide_url,omitempty"`    // 导览图url
}

景区门票

type UserConsumeCardEvent

type UserConsumeCardEvent struct {
	XMLName struct{} `xml:"xml" json:"-"`
	mp.MessageHeader

	Event         string `xml:"Event"        json:"Event"`          // 事件类型, user_consume_card
	CardId        string `xml:"CardId"       json:"CardId"`         // 卡券ID
	UserCardCode  string `xml:"UserCardCode" json:"UserCardCode"`   // 商户自定义code 值. 非自定code 推送为空串
	ConsumeSource string `xml:"ConsumeSource" json:"ConsumeSource"` // 核销来源。支持开发者统计API核销(FROM_API)、公众平台核销(FROM_MP)、卡券商户助手核销(FROM_MOBILE_HELPER)(核销员微信号)
}

卡券被核销时, 微信会把这个事件推送到开发者填写的URL

func GetUserConsumeCardEvent

func GetUserConsumeCardEvent(msg *mp.MixedMessage) *UserConsumeCardEvent

type UserDelCardEvent

type UserDelCardEvent struct {
	XMLName struct{} `xml:"xml" json:"-"`
	mp.MessageHeader

	Event        string `xml:"Event"        json:"Event"`        // 事件类型, user_del_card
	CardId       string `xml:"CardId"       json:"CardId"`       // 卡券ID
	UserCardCode string `xml:"UserCardCode" json:"UserCardCode"` // 商户自定义code 值. 非自定code 推送为空串
}

用户在删除卡券时, 微信会把这个事件推送到开发者填写的URL.

func GetUserDelCardEvent

func GetUserDelCardEvent(msg *mp.MixedMessage) *UserDelCardEvent

type UserEnterSessionFromCardEvent

type UserEnterSessionFromCardEvent struct {
	XMLName struct{} `xml:"xml" json:"-"`
	mp.MessageHeader

	Event        string `xml:"Event"        json:"Event"`        // 事件类型, user_view_card
	CardId       string `xml:"CardId"       json:"CardId"`       // 卡券ID
	UserCardCode string `xml:"UserCardCode" json:"UserCardCode"` // 商户自定义code 值. 非自定code 推送为空串
}

从卡券进入公众号会话事件推送

func GetUserEnterSessionFromCardEvent

func GetUserEnterSessionFromCardEvent(msg *mp.MixedMessage) *UserEnterSessionFromCardEvent

type UserGetCardEvent

type UserGetCardEvent struct {
	XMLName struct{} `xml:"xml" json:"-"`
	mp.MessageHeader

	Event           string `xml:"Event"           json:"Event"`           // 事件类型, user_get_card
	CardId          string `xml:"CardId"          json:"CardId"`          // 卡券ID
	IsGiveByFriend  int    `xml:"IsGiveByFriend"  json:"IsGiveByFriend"`  // 是否为转赠, 1 代表是, 0 代表否.
	FriendUserName  string `xml:"FriendUserName"  json:"FriendUserName"`  // 赠送方账号(一个OpenID), "IsGiveByFriend"为1 时填写该参数.
	UserCardCode    string `xml:"UserCardCode"    json:"UserCardCode"`    // code 序列号. 自定义code 及非自定义code的卡券被领取后都支持事件推送.
	OldUserCardCode string `xml:"OldUserCardCode" json:"OldUserCardCode"` // 转赠前的code序列号。
	OuterId         int64  `xml:"OuterId"         json:"OuterId"`         // 领取场景值, 用于领取渠道数据统计. 可在生成二维码接口及添加JS API 接口中自定义该字段的整型值.
}

用户在领取卡券时, 微信会把这个事件推送到开发者填写的URL.

func GetUserGetCardEvent

func GetUserGetCardEvent(msg *mp.MixedMessage) *UserGetCardEvent

type UserViewCardEvent

type UserViewCardEvent struct {
	XMLName struct{} `xml:"xml" json:"-"`
	mp.MessageHeader

	Event        string `xml:"Event"        json:"Event"`        // 事件类型, user_view_card
	CardId       string `xml:"CardId"       json:"CardId"`       // 卡券ID
	UserCardCode string `xml:"UserCardCode" json:"UserCardCode"` // 商户自定义code 值. 非自定code 推送为空串
}

用户在进入会员卡时, 微信会把这个事件推送到开发者填写的URL

func GetUserViewCardEvent

func GetUserViewCardEvent(msg *mp.MixedMessage) *UserViewCardEvent

Directories

Path Synopsis
see github.com/chanxuehong/wechat/mp/datacube
see github.com/chanxuehong/wechat/mp/datacube

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL