Documentation ¶
Overview ¶
微信卡券接口, V1.9
Index ¶
- Constants
- func QRCodePicURL(ticket string) string
- func Sign(strs []string) (signature string)
- type BoardingPass
- type BoardingPassCheckinParameters
- type Card
- type CardBaseInfo
- type CardCode
- type CardNotPassCheckEvent
- type CardPassCheckEvent
- type CardQRCodeInfo
- type Cash
- type Client
- func (clt *Client) BoardingPassCheckin(para *BoardingPassCheckinParameters) (err error)
- func (clt *Client) CardBatchGet(offset, count int) (cardIdList []string, err error)
- func (clt *Client) CardCodeConsume(code, cardId string) (_cardId, openId string, err error)
- func (clt *Client) CardCodeDecrypt(encryptCode string) (code string, err error)
- func (clt *Client) CardCodeGet(code, cardId string) (card *CardCode, openId string, err error)
- func (clt *Client) CardCodeUnavailable(code, cardId string) (err error)
- func (clt *Client) CardCodeUpdate(code, cardId, newCode string) (err error)
- func (clt *Client) CardCreate(card *Card) (cardId string, err error)
- func (clt *Client) CardDelete(cardId string) (err error)
- func (clt *Client) CardGet(cardId string) (card *Card, err error)
- func (clt *Client) CardModifyStock(cardId string, increaseNum int) (err error)
- func (clt *Client) CardQRCodeCreate(qrcodeInfo *CardQRCodeInfo) (ticket string, err error)
- func (clt *Client) CardUpdate(cardId string, card *Card) (err error)
- func (clt *Client) GetColors() (colors []Color, err error)
- func (clt *Client) LocationBatchAdd(LocationList []LocationAddParameters) (LocationIdList []int64, err error)
- func (clt *Client) LocationBatchGet(offset, count int) (LocationList []Location, err error)
- func (clt *Client) LuckyMoneyUpdateUserBalance(para *LuckyMoneyUpdateUserBalanceParameters) (err error)
- func (clt *Client) MeetingTicketUpdateUser(para *MeetingTicketUpdateUserParameters) (err error)
- func (clt *Client) MemberCardActivate(para *MemberCardActivateParameters) (err error)
- func (clt *Client) MemberCardUpdateUser(para *MemberCardUpdateUserParameters) (rst *MemberCardUpdateUserResult, err error)
- func (clt *Client) MovieTicketUpdateUser(para *MovieTicketUpdateUserParameters) (err error)
- func (clt *Client) TestWhiteListSet(para *TestWhiteListSetParameters) (err error)
- func (clt *Client) UploadImage(imgPath string) (info ImageInfo, err error)
- func (clt *Client) UploadImageFromReader(filename string, reader io.Reader) (info ImageInfo, err error)
- type Color
- type DateInfo
- type DefaultTicketServer
- type Discount
- type GeneralCoupon
- type Gift
- type Groupon
- type ImageInfo
- type Location
- type LocationAddParameters
- type LuckyMoney
- type LuckyMoneyUpdateUserBalanceParameters
- type MeetingTicket
- type MeetingTicketUpdateUserParameters
- type MemberCard
- type MemberCardActivateParameters
- type MemberCardUpdateUserParameters
- type MemberCardUpdateUserResult
- type MovieTicket
- type MovieTicketUpdateUserParameters
- type SKU
- type ScenicTicket
- type TestWhiteListSetParameters
- type TicketServer
- type UserDelCardEvent
- type UserGetCardEvent
Constants ¶
View Source
const ( // 卡券类型 CardTypeGeneralCoupon = "GENERAL_COUPON" // 通用券 CardTypeGroupon = "GROUPON" // 团购券 CardTypeGift = "GIFT" // 礼品券 CardTypeCash = "CASH" // 代金券 CardTypeDiscount = "DISCOUNT" // 折扣券 CardTypeMemberCard = "MEMBER_CARD" // 会员卡 CardTypeScenicTicket = "SCENIC_TICKET" // 景点门票 CardTypeMovieTicket = "MOVIE_TICKET" // 电影票 CardTypeBoardingPass = "BOARDING_PASS" // 飞机票 CardTypeLuckyMoney = "LUCKY_MONEY" // 红包 CardTypeMeetingTicket = "MEERING_TICKET" // 会议门票 )
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 ( // 自定义cell字段type类型 URLNameTypeTakeAway = "URL_NAME_TYPE_TAKE_AWAY" // 外卖 URLNameTypeReservation = "URL_NAME_TYPE_RESERVATION" // 在线预订 URLNameTypeUseImmediately = "URL_NAME_TYPE_USE_IMMEDIATELY" // 立即使用 URLNameTypeAppointment = "URL_NAME_TYPE_APPOINTMENT" // 在线预约 URLNameTypeExchange = "URL_NAME_TYPE_EXCHANGE" // 在线兑换 URLNameTypeVIPService = "URL_NAME_TYPE_VIP_SERVICE" // 会员服务(仅会员卡类型可用) )
View Source
const ( EventTypeCardPassCheck = "card_pass_check" // 卡券通过审核 EventTypeCardNotPassCheck = "card_not_pass_check" // 卡券未通过审核 EventTypeUserGetCard = "user_get_card" // 领取卡券事件 EventTypeUserDelCard = "user_del_card" // 删除卡券事件 )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BoardingPass ¶
type BoardingPass struct { *CardBaseInfo `json:"base_info,omitempty"` From string `json:"from,omitempty"` // 起点,上限为18 个汉字 To string `json:"to,omitempty"` // 终点,上限为18 个汉字 Flight string `json:"flight,omitempty"` // 航班 DepartureTime int64 `json:"departure_time,omitempty"` // 可选; 起飞时间。Unix 时间戳格式 LandingTime int64 `json:"landing_time,omitempty"` // 可选; 降落时间。Unix 时间戳格式 CheckinURL string `json:"check_in_url,omitempty"` // 可选; 在线值机的链接 Gate string `json:"gate,omitempty"` // 可选; 登机口。如发生登机口变更,建议商家实时调用该接口变更 BoardingTime int64 `json:"boarding_time,omitempty"` // 可选; 登机时间,只显示“时分”不显示日期,按时间戳格式填写。如发生登机时间变更,建议商家实时调用该接口变更。 AirModel string `json:"air_model,omitempty"` // 可选; 机型,上限为8 个汉字 }
飞机票
type BoardingPassCheckinParameters ¶
type BoardingPassCheckinParameters struct { Code string `json:"code"` // 飞机票的序列号 CardId string `json:"card_id,omitempty"` // 需办理值机的机票card_id。自定义code 的飞机票为必填 PassengerName string `json:"passenger_name,omitempty"` // 乘客姓名,上限为15 个汉字。 Class string `json:"class,omitempty"` // 舱等,如头等舱等,上限为5 个汉字。 Seat string `json:"seat,omitempty"` // 乘客座位号。 ETKT_NBR string `json:"etkt_bnr,omitempty"` // 电子客票号,上限为14 个数字 QRCodeData string `json:"qrcode_data,omitempty"` // 二维码数据。乘客用于值机的二维码字符串,微信会通过此数据为用户生成值机用的二维码。 IsCancel *bool `json:"is_cancel,omitempty"` // 是否取消值机。填写true 或false。true 代表取消,如填写true 上述字段(如calss 等)均不做判断,机票返回未值机状态,乘客可重新值机。默认填写false }
type Card ¶
type Card struct { CardType string `json:"card_type,omitempty"` *GeneralCoupon `json:"general_coupon,omitempty"` *Groupon `json:"groupon,omitempty"` *Gift `json:"gift,omitempty"` *Cash `json:"cash,omitempty"` *Discount `json:"discount,omitempty"` *MemberCard `json:"member_card,omitempty"` *ScenicTicket `json:"scenic_ticket,omitempty"` *MovieTicket `json:"movie_ticket,omitempty"` *BoardingPass `json:"boarding_pass,omitempty"` *LuckyMoney `json:"lucky_money,omitempty"` *MeetingTicket `json:"meeting_ticket,omitempty"` }
type CardBaseInfo ¶
type CardBaseInfo struct { CardId string `json:"id,omitempty"` // 查询的时候有返回 Status string `json:"status,omitempty"` // 查询的时候有返回 LogoURL string `json:"logo_url,omitempty"` // 卡券的商户logo,尺寸为300*300。 CodeType string `json:"code_type,omitempty"` // code 码展示类型 BrandName string `json:"brand_name,omitempty"` // 商户名字,字数上限为12 个汉字。(填写直接提供服务的商户名, 第三方商户名填写在source 字段) 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"` // 使用提醒,字数上限为9 个汉字。(一句话描述,展示在首页,示例:请出示二维码核销卡券) Description string `json:"description,omitempty"` // 使用说明。长文本描述,可以分行,上限为1000 个汉字。 *DateInfo `json:"date_info,omitempty"` // 有效日期 *SKU `json:"sku,omitempty"` // 商品信息 LocationIdList []int64 `json:"location_id_list,omitempty"` // 可选; 门店地址ID UseCustomCode *bool `json:"use_custom_code,omitempty"` // 可选; 是否自定义code 码。 BindOpenId *bool `json:"bind_openid,omitempty"` // 可选; 是否指定用户领取,填写true或false。不填代表默认为否。 CanGiveFriend *bool `json:"can_give_friend,omitempty"` // 可选; 卡券是否可转赠,填写true 或false,true 代表可转赠。默认可转赠。 UseLimit *int `json:"use_limit,omitempty"` // 可选; 每人使用次数限制。 GetLimit *int `json:"get_limit,omitempty"` // 可选; 每人最大领取次数,不填写默认等于quantity。 ServicePhone string `json:"service_phone,omitempty"` // 可选; 客服电话 Source string `json:"source,omitempty"` // 可选; 第三方来源名,如携程 URLNameType string `json:"url_name_type,omitempty"` // 可选; 商户自定义cell 名称, 与custom_url 字段共同使用 CustomURL string `json:"custom_url,omitempty"` // 可选; 商户自定义cell 跳转外链的地址链接,跳转页面内容需与自定义cell 名称保持一致。 }
基本的卡券数据,所有卡券通用
type CardCode ¶
type CardCode struct { Code string `json:"code"` // code CardId string `json:"card_id"` // 卡券ID BeginTime int64 `json:"begin_time"` // 起始使用时间 EndTime int64 `json:"end_time"` // 结束时间 }
某一张特定的卡卷
type CardNotPassCheckEvent ¶
type CardNotPassCheckEvent struct { XMLName struct{} `xml:"xml" json:"-"` mp.CommonMessageHeader 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.CommonMessageHeader 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 CardQRCodeInfo ¶
type CardQRCodeInfo struct { CardId string `json:"card_id"` // 卡券ID Code string `json:"code,omitempty"` // 可选; 指定卡券code码,只能被领一次。use_custom_code 字段为true 的卡券必须填写,非自定义code 不必填写。 OpenId string `json:"openid,omitempty"` // 可选; 指定领取者的openid,只有该用户能领取。bind_openid字段为true 的卡券必须填写,非自定义openid 不必填写。 ExpireSeconds *int `json:"expire_seconds,omitempty"` // 可选; 指定二维码的有效时间,范围是60 ~ 1800 秒。不填默认为永久有效。 IsUniqueCode *bool `json:"is_unique_code,omitempty"` // 可选; 指定下发二维码,生成的二维码随机分配一个code,领取后不可再次扫描。填写true 或false。默认false。 Balance *int `json:"balance,omitempty"` // 可选; 红包余额,以分为单位。红包类型必填(LUCKY_MONEY),其他卡券类型不填。 OuterId *int64 `json:"outer_id,omitempty"` // 可选; 领取场景值,用于领取渠道的数据统计,默认值为0,字段类型为整型。用户领取卡券后触发的事件推送中会带上此自定义场景值。 }
创建二维码的参数
type Cash ¶
type Cash struct { *CardBaseInfo `json:"base_info,omitempty"` LeastCost *int `json:"least_cost,omitempty"` // 可选; 代金券专用,表示起用金额(单位为分) ReduceCost *int `json:"reduce_cost,omitempty"` // 代金券专用,表示减免金额(单位为分) }
代金券
type Client ¶
type Client struct {
mp.WechatClient
}
func NewClient ¶
func NewClient(TokenServer mp.TokenServer, HttpClient *http.Client) *Client
创建一个新的 Client.
如果 HttpClient == nil 则默认用 http.DefaultClient
func (*Client) BoardingPassCheckin ¶
func (clt *Client) BoardingPassCheckin(para *BoardingPassCheckinParameters) (err error)
在线值机接口.
领取电影票后通过调用“更新电影票”接口update 电影信息及用户选座信息
func (*Client) CardBatchGet ¶
批量查询卡列表
offset: 查询卡列表的起始偏移量,从0 开始,即offset: 5 是指从从列表里的第六个开始读取。 count : 需要查询的卡片的数量(数量最大50)
func (*Client) CardCodeConsume ¶
卡券核销, 消耗code
code: 要消耗序列号 cardId: 卡券ID。创建卡券时use_custom_code 填写true时必填。非自定义code 不必填写。
func (*Client) CardCodeDecrypt ¶
code 解码接口
func (*Client) CardCodeGet ¶
查询code
code: 要查询的序列号 cardId: 要消耗序列号所述的card_id, 生成券时use_custom_code 填写true 时必填。非自定义code 不必填写。
func (*Client) CardCodeUnavailable ¶
设置卡券失效接口.
为满足改票、退款等异常情况,可调用卡券失效接口将用户的卡券设置为失效状态。 注:设置卡券失效的操作不可逆,即无法将设置为失效的卡券调回有效状态,商家须慎重调用该接口。
func (*Client) CardCodeUpdate ¶
更改code.
为确保转赠后的安全性,微信允许自定义code的商户对已下发的code进行更改。 注:为避免用户疑惑,建议仅在发生转赠行为后(发生转赠后,微信会通过事件推送的方 式告知商户被转赠的卡券code)对用户的code进行更改。
func (*Client) CardCreate ¶
创建卡券接口.
func (*Client) CardModifyStock ¶
库存修改接口. cardId: 卡券ID increaseNum: 增加库存数量, 可以为负数
func (*Client) CardQRCodeCreate ¶
func (clt *Client) CardQRCodeCreate(qrcodeInfo *CardQRCodeInfo) (ticket string, err error)
卡券投放, 创建二维码.
func (*Client) CardUpdate ¶
更改卡券信息接口.
支持更新部分通用字段及特殊卡券(会员卡、飞机票、电影票、红包)中特定字段的信息。 注:更改卡券的部分字段后会重新提交审核,详情见字段说明。
func (*Client) LocationBatchAdd ¶
func (clt *Client) LocationBatchAdd(LocationList []LocationAddParameters) (LocationIdList []int64, err error)
批量导入门店信息.
1.通过该接口导入的门店信息将进入门店审核流程,审核期间可正常使用。 若导入的门店信息未通过审核,则会被剔除出门店列表。 2.LocationList 和 LocationIdList 长度相等, 如果 LocationList 某个门店导入失败, 那么 LocationIdList 对应的位置就是 -1
func (*Client) LocationBatchGet ¶
拉取门店列表.
offset: 偏移量,0 开始 count: 拉取数量 注:“offset”,“count”为0 时默认拉取全部门店。
func (*Client) LuckyMoneyUpdateUserBalance ¶
func (clt *Client) LuckyMoneyUpdateUserBalance(para *LuckyMoneyUpdateUserBalanceParameters) (err error)
更新红包金额.
支持领取红包后通过调用“更新红包”接口update 红包余额。
func (*Client) MeetingTicketUpdateUser ¶
func (clt *Client) MeetingTicketUpdateUser(para *MeetingTicketUpdateUserParameters) (err error)
更新电影票.
领取电影票后通过调用“更新电影票”接口update 电影信息及用户选座信息
func (*Client) MemberCardActivate ¶
func (clt *Client) MemberCardActivate(para *MemberCardActivateParameters) (err error)
激活/绑定会员卡
func (*Client) MemberCardUpdateUser ¶
func (clt *Client) MemberCardUpdateUser(para *MemberCardUpdateUserParameters) (rst *MemberCardUpdateUserResult, err error)
会员卡交易.
会员卡交易后每次积分及余额变更需通过接口通知微信,便于后续消息通知及其他扩展功能。
func (*Client) MovieTicketUpdateUser ¶
func (clt *Client) MovieTicketUpdateUser(para *MovieTicketUpdateUserParameters) (err error)
更新电影票.
领取电影票后通过调用“更新电影票”接口update 电影信息及用户选座信息
func (*Client) TestWhiteListSet ¶
func (clt *Client) TestWhiteListSet(para *TestWhiteListSetParameters) (err error)
设置测试用户白名单.
由于卡券有审核要求,为方便公众号调试,可以设置一些测试帐号,这些帐号可领取未通过审核的卡券,体验整个流程。 注:同时支持“openid”、“username”两种字段设置白名单,总数上限为10 个。
func (*Client) UploadImage ¶
上传图片.
1.上传的图片限制文件大小限制1MB,像素为300*300,支持JPG 格式。 2.调用接口获取的 logo_url 仅支持在微信相关业务下使用,否则会做相应处理。
type DateInfo ¶
type DateInfo struct { // 使用时间的类型1:固定日期区间,2:固定时长(自领取后按天算) Type int `json:"type,omitempty"` // 固定日期区间专用,表示起用时间。从1970 年1 月1 日00:00:00至起用时间的秒数,最终需转换为字符串形态传入,下同。(单位为秒) BeginTimestamp int64 `json:"begin_timestamp,omitempty"` // 固定日期区间专用,表示结束时间。(单位为秒) EndTimestamp int64 `json:"end_timestamp,omitempty"` // 固定时长专用,表示自领取后多少天内有效。(单位为天)领取后当天有效填写0。 FixedTerm *int `json:"fixed_term,omitempty"` // 固定时长专用,表示自领取后多少天开始生效。(单位为天) FixedBeginTerm *int `json:"fixed_begin_term,omitempty"` }
type DefaultTicketServer ¶
type DefaultTicketServer struct {
// contains filtered or unexported fields
}
TicketServer 的简单实现.
NOTE: 1. 用于单进程环境. 2. 因为 DefaultTicketServer 同时也是一个简单的中控服务器, 而不是仅仅实现 TicketServer 接口, 所以整个系统只能存在一个 DefaultTicketServer 实例!
func NewDefaultTicketServer ¶
func NewDefaultTicketServer(tokenServer mp.TokenServer, httpClient *http.Client) (srv *DefaultTicketServer)
创建一个新的 DefaultTicketServer.
如果 httpClient == nil 则默认使用 http.DefaultClient.
func (*DefaultTicketServer) Ticket ¶
func (srv *DefaultTicketServer) Ticket() (ticket string, err error)
func (*DefaultTicketServer) TicketRefresh ¶
func (srv *DefaultTicketServer) TicketRefresh() (ticket string, err error)
type Discount ¶
type Discount struct { *CardBaseInfo `json:"base_info,omitempty"` Discount *int `json:"discount,omitempty"` // 折扣券专用,表示打折额度(百分比)。填30 就是七折。 }
折扣券
type GeneralCoupon ¶
type GeneralCoupon struct { *CardBaseInfo `json:"base_info,omitempty"` DefaultDetail string `json:"default_detail,omitempty"` // 描述文本 }
通用券
type Gift ¶
type Gift struct { *CardBaseInfo `json:"base_info,omitempty"` Gift string `json:"gift,omitempty"` // 礼品券专用,表示礼品名字 }
礼品券
type Groupon ¶
type Groupon struct { *CardBaseInfo `json:"base_info,omitempty"` DealDetail string `json:"deal_detail,omitempty"` // 团购券专用,团购详情 }
团购券
type LocationAddParameters ¶
type LocationAddParameters struct { BusinessName string `json:"business_name"` // 门店名称 BranchName string `json:"branch_name,omitempty"` // 分店名 Province string `json:"province"` // 门店所在的省 City string `json:"city"` // 门店所在的市 District string `json:"district"` // 门店所在的区 Address string `json:"address"` // 门店所在的详细街道地址 Telephone string `json:"telephone"` // 门店的电话 Category string `json:"category"` // 门店的类型(酒店、餐饮、购物...) Longitude float64 `json:"longitude"` // 门店所在地理位置的经度(建议使用腾讯地图定位经纬度) Latitude float64 `json:"latitude"` // 门店所在地理位置的纬度(建议使用腾讯地图定位经纬度) }
type MeetingTicket ¶
type MeetingTicket struct { *CardBaseInfo `json:"base_info,omitempty"` MeetingDetail string `json:"meeting_detail,omitempty"` // 会议详情 MapURL string `json:"map_url,omitempty"` // 可选; 会议导览图 }
会议门票
type MeetingTicketUpdateUserParameters ¶
type MeetingTicketUpdateUserParameters struct { Code string `json:"code"` // 用户的门票唯一序列号 CardId string `json:"card_id,omitempty"` // 要更新门票序列号所述的card_id , 生成券时use_custom_code 填写true 时必填。 Zone string `json:"zone,omitempty"` // 区域 Entrance string `json:"entrance,omitempty"` // 入口 SeatNumber string `json:"seat_number,omitempty"` // 座位号 }
type MemberCard ¶
type MemberCard struct { *CardBaseInfo `json:"base_info,omitempty"` // 是否支持积分,填写true 或false,如填写true,积分相关字段均为必填。 // 填写false,积分字段无需填写。储值字段处理方式相同。 SupplyBonus *bool `json:"supply_bonus,omitempty"` SupplyBalance *bool `json:"supply_balance,omitempty"` // 是否支持储值 BonusClearedRules string `json:"bonus_cleared,omitempty"` // 可选; 积分清零规则 BonusRules string `json:"bonus_rules,omitempty"` // 可选; 积分规则 BalanceRules string `json:"balance_rules,omitempty"` // 可选; 储值说明 Prerogative string `json:"prerogative,omitempty"` // 特权说明 BindOldCardURL string `json:"bind_old_card_url,omitempty"` // 可选; 绑定旧卡的url,与“activate_url”字段二选一必填。 ActivateURL string `json:"activate_url,omitempty"` // 可选; 激活会员卡的url,与“bind_old_card_url”字段二选一必填。 }
会员卡
type MemberCardActivateParameters ¶
type MemberCardActivateParameters struct { Code string `json:"code"` // 必填,创建会员卡时获取的code。 CardId string `json:"card_id,omitempty"` // 可选; 卡券ID。自定义code 的会员卡必填card_id,非自定义code 的会员卡不必填。 MembershipNumber string `json:"membership_number"` // 必填,会员卡编号,作为序列号显示在用户的卡包里。 InitBonus int `json:"init_bonus,omitempty"` // 可选; 初始积分,不填为0 InitBalance int `json:"init_balance,omitempty"` // 可选; 初始余额,不填为0 BonusURL string `json:"bonus_url,omitempty"` // 可选; 积分查询,仅用于init_bonus 无法同步的情况填写,调转外链查询积分 BalanceURL string `json:"balance_url,omitempty"` // 可选; 余额查询,仅用于init_balance 无法同步的情况填写,调转外链查询积分 }
type MemberCardUpdateUserParameters ¶
type MemberCardUpdateUserParameters struct { Code string `json:"code"` // 要消耗的序列号。 CardId string `json:"card_id,omitempty"` // 要消耗序列号所述的card_id。自定义code 的会员卡必填 AddBonus int `json:"add_bonus,omitempty"` // 需要变更的积分,扣除积分用“-“表示。 RecordBonus string `json:"record_bonus,omitempty"` // 商家自定义积分消耗记录,不超过14 个汉字 AddBalance int `json:"add_balance,omitempty"` // 需要变更的余额,扣除金额用“-”表示。单位为分 RecordBalance string `json:"record_balance,omitempty"` // 商家自定义金额消耗记录,不超过14 个汉字 }
type MovieTicket ¶
type MovieTicket struct { *CardBaseInfo `json:"base_info,omitempty"` Detail string `json:"detail,omitempty"` // 可选; 电影票详情 }
电影票
type MovieTicketUpdateUserParameters ¶
type MovieTicketUpdateUserParameters struct { Code string `json:"code"` // 电影票的序列号。 CardId string `json:"card_id,omitempty"` // 电影票card_id。自定义code 的电影票为必填,非自定义code 的电影票不必填。 TicketClass string `json:"ticket_class,omitempty"` // 电影票的类别,如2D、3D ShowTime int64 `json:"show_time,omitempty"` // 电影放映时间对应的时间戳。 Duration int `json:"duration,omitempty"` // 放映时长,填写整数 ScreeningRoom string `json:"screening_room,omitempty"` // 该场电影的影厅信息 SeatNumber string `json:"seat_number,omitempty"` // 座位号 }
type ScenicTicket ¶
type ScenicTicket struct { *CardBaseInfo `json:"base_info,omitempty"` TicketClass string `json:"ticket_class,omitempty"` // 可选; 票类型,例如平日全票,套票等 GuideURL string `json:"guide_url,omitempty"` // 可选; 导览图url }
景点门票
type TicketServer ¶
type TicketServer interface { // 从中控服务器获取被缓存的 jsapi_ticket. Ticket() (ticket string, err error) // 请求中控服务器到微信服务器刷新 jsapi_ticket. // // 高并发场景下某个时间点可能有很多请求(比如缓存的jsapi_ticket刚好过期时), 但是我们 // 不期望也没有必要让这些请求都去微信服务器获取 jsapi_ticket(有可能导致api超过调用限制), // 实际上这些请求只需要一个新的 jsapi_ticket 即可, 所以建议 TokenServer 从微信服务器 // 获取一次 jsapi_ticket 之后的至多5秒内(收敛时间, 视情况而定, 理论上至多5个http或tcp周期) // 再次调用该函数不再去微信服务器获取, 而是直接返回之前的结果. TicketRefresh() (ticket string, err error) }
jsapi_ticket 中控服务器接口.
type UserDelCardEvent ¶
type UserDelCardEvent struct { XMLName struct{} `xml:"xml" json:"-"` mp.CommonMessageHeader 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 UserGetCardEvent ¶
type UserGetCardEvent struct { XMLName struct{} `xml:"xml" json:"-"` mp.CommonMessageHeader 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的卡券被领取后都支持事件推送。 OuterId int64 `xml:"OuterId" json:"OuterId"` // 领取场景值,用于领取渠道数据统计。可在生成二维码接口及添加JS API 接口中自定义该字段的整型值。 }
用户在领取卡券时,微信会把这个事件推送到开发者填写的URL。
func GetUserGetCardEvent ¶
func GetUserGetCardEvent(msg *mp.MixedMessage) *UserGetCardEvent
Click to show internal directories.
Click to hide internal directories.