微信的技术人员 你好,
我司在使用微信会员卡API的时候遇到一个微信会员卡个性话自定义配置的问题。
我们在开发过程中参考并发现其他商家上架的会员卡的卡号上方可以显示个性化文本 (如下图)“be part of great club”。
相关 API https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025283
创建会员卡接口 https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
更新会员信息 https://api.weixin.qq.com/card/membercard/updateuser?access_token=TOKEN
通过反复查阅微信的官方技术文档和尝试调用API,并未发现此字段的配置项, 希望能告知如何实现。如果无法实现也请告知。
应该是会员卡背景图片上带的字
请问会员卡上lever(等级)下面显示“铜牌会员”是如何实现的?(默认显示“查看”)
谢谢!
https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Membership_Cards/Create_a_membership_card.html
参考了
https://www.cnblogs.com/LoveQin/p/10147798.html
使用SDK
https://github.com/JeffreySu/WeiXinMPSDK
以下为部分相关源码,供参考
/// <summary>
/// 卡券的基本数据,创建MemberCard(会员卡)时专用。
/// </summary>
/// <returns></returns>
protected Card_BaseInfoBase _BaseInfoMemberCard = new Card_BaseInfoBase()
{
//必填,卡券的商户logo,尺寸为300*300。
logo_url = @RNB5.Common.WebConfig.AppSettings.PreviewPicTempPath + "/Images/CardImg/logo300.jpg",
//必填,商户名字/卡片名称,字数上限为12 个汉字。(填写直接提供服务的商户名, 第三方商户名填写在source 字段)
brand_name = "xxxxxx",
//必填,券名/卡名,字数上限为9 个汉字。(建议涵盖卡券属性、服务及金额)
title = "VIP会员卡",
//必填,code 码展示类型,CODE_TYPE_TEXT = 0,文本,CODE_TYPE_QRCODE = 2,二维码
code_type = Card_CodeType.CODE_TYPE_QRCODE,
//必填,券颜色。按色彩规范标注填写Color010-Color100
color = "Color010",
//必填,使用提醒,字数上限为9 个汉字。(展示在“会员卡号”页)
notice = "xxxx&xxxx 通用",
//必填,使用须知。长文本描述,可以分行,上限为1000 个汉字。
description = "会员积分可抵扣现金",
//非必填,客服电话
service_phone = "186xxxxxxxx",
//必填,使用日期,有效期的信息
date_info = new Card_BaseInfo_DateInfo()
{
//必填,卡券使用时间的类型,DATE_TYPE_PERMANENT = 2,永久有效
type = Card_DateInfo_Type.DATE_TYPE_PERMANENT.ToString(),
},
//必填,商品信息
sku = new Card_BaseInfo_Sku()
{
//必填,上架的数量。(不支持填写0或无限大,上限为100000000。)
quantity = 100000000
},
//非必填,每人最大领取次数,建议会员卡每人限领一张,不填写默认等于quantity。
get_limit = 1,
//非必填,是否自定义code 码。填写true或false,不填代表默认为false。
use_custom_code = false,
//非必填,是否指定用户领取,填写true或false。不填代表默认为否。
bind_openid = false,
//非必填,领取卡券原生页面是否可分享,填写true 或false,true 代表可分享。默认可分享。
can_share = false,
//非必填,卡券是否可转赠,填写true 或false,true 代表可转赠。默认可转赠。
can_give_friend = false,
//非必填,商户自定义cell名称,和custom_url组合使用,用于支持商家功能的扩展。
//url_name_type = Card_UrlNameType.URL_NAME_TYPE_RESERVATION,
//非必填,自定义跳转外链的入口名字 显示在第一个
custom_url_name = "xxxx",
//非必填,显示在入口右侧的提示语
custom_url_sub_title = "立即预约",
//非必填,商户自定义url地址,支持卡券页内跳转,跳转页面内容需与自定义cell名称保持一致。 设置小程序入口后该链接无效
custom_url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义使用入口跳转小程序的user_name,格式为小程序原始id+@app
custom_app_brand_user_name = ConfigurationManager.AppSettings["WXOriId2"],
//自定义使用入口小程序页面地址
custom_app_brand_pass = ConfigurationManager.AppSettings["WXHomePage2"],
//非必填,营销场景的自定义入口名称 如果设置了custom_cell1,则显示在第三个,否则显示在第二个
promotion_url_name = "xxxx",
//非必填,显示在营销入口右侧的提示语
promotion_url_sub_title = "浏览官网",
//非必填,营销入口跳转外链的地址链接 设置小程序入口后该链接无效
promotion_url = ConfigurationManager.AppSettings["OfficialWebsite"],
/*
//自定义营销入口小程序的user_name,格式为小程序原始id+@app
promotion_app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义营销入口小程序页面地址
promotion_app_brand_pass = ConfigurationManager.AppSettings["WXHomePage1"],
*/
/* 会员卡支持微信支付刷卡,用户点击快速买单后即可拉出刷卡界面进行支付
pay_info = new Card_BaseInfo_member_card_PayInfo()
{
swipe_card = new Card_BaseInfo_member_card_SwipeCard()
{
is_swipe_card = true
}
},
*/
};
/// <summary>
/// 卡券的基本数据,更新MemberCard(会员卡)时专用。
/// </summary>
/// <returns></returns>
protected Update_BaseCardInfo _UpdateBaseInfoMemberCard = new Update_BaseCardInfo()
{
//非必填,中部居中的按钮(自定义cell入口)名称,仅在卡券激活后且可用状态时居中显示
center_title = "xxxx",
//非必填,显示在中部居中的按钮下的提示语
center_sub_title = "xxx&xxx&xxx",
//非必填,中部居中的按钮跳转外链的地址链接 设置小程序入口后该链接无效
center_url = ConfigurationManager.AppSettings["OfficialWebsite"],
//显示在中部居中的自定义跳转小程序的user_name,格式为小程序原始id+@app
center_app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义居中使用入口小程序页面地址
center_app_brand_pass = ConfigurationManager.AppSettings["WXHomePage1"],
//必填,使用日期,有效期的信息 更新时该参数必填
date_info = new Card_UpdateDateInfo()
{
//更新时Type不能被修改,需要设置为原来的类型。
//必填,卡券使用时间的类型,DATE_TYPE_PERMANENT = 2,永久有效
type = Card_DateInfo_Type.DATE_TYPE_PERMANENT.ToString(),
},
//必填,卡券的商户logo,尺寸为300*300。
logo_url = @RNB5.Common.WebConfig.AppSettings.PreviewPicTempPath + "/Images/CardImg/logo300.jpg",
//必填,券颜色。按色彩规范标注填写Color010-Color100
color = "Color010",
//必填,使用提醒,字数上限为9 个汉字。(展示在“会员卡号”页)
notice = "xxxx&xxxx 通用",
//必填,使用须知。长文本描述,可以分行,上限为1000 个汉字。
description = "会员积分可抵扣现金",
//非必填,客服电话
service_phone = "186xxxxxxxx",
//非必填,每人最大领取次数,建议会员卡每人限领一张,不填写默认等于quantity。
get_limit = 1,
//非必填,领取卡券原生页面是否可分享,填写true 或false,true 代表可分享。默认可分享。
can_share = false,
//非必填,卡券是否可转赠,填写true 或false,true 代表可转赠。默认可转赠。
can_give_friend = false,
//非必填,商户自定义cell名称,和custom_url组合使用,用于支持商家功能的扩展。
//url_name_type = Card_UrlNameType.URL_NAME_TYPE_RESERVATION,
//非必填,自定义跳转外链的入口名字 显示在第一个
custom_url_name = "xxxx",
//非必填,显示在入口右侧的提示语
custom_url_sub_title = "立即预约",
//非必填,商户自定义url地址,支持卡券页内跳转,跳转页面内容需与自定义cell名称保持一致。 设置小程序入口后该链接无效
custom_url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义使用入口跳转小程序的user_name,格式为小程序原始id+@app
custom_app_brand_user_name = ConfigurationManager.AppSettings["WXOriId2"],
//自定义使用入口小程序页面地址
custom_app_brand_pass = ConfigurationManager.AppSettings["WXHomePage2"],
//非必填,营销场景的自定义入口名称 如果设置了custom_cell1,则显示在第三个,否则显示在第二个
promotion_url_name = "xxxx",
//非必填,显示在营销入口右侧的提示语
promotion_url_sub_title = "浏览官网",
//非必填,营销入口跳转外链的地址链接 设置小程序入口后该链接无效
promotion_url = ConfigurationManager.AppSettings["OfficialWebsite"],
};
/// <summary>
/// 创建卡券
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult CardCreate()
{
try
{
string token = GetToken();
if (token.IsNullOrEmpty())
{
throw new WeixinException("Token不能为空!");
}
/*代金券
var data = new Card_CashData()
{
base_info = _BaseInfo,
least_cost = 19900, //起用金额
reduce_cost = 9900 //减免金额
};
*/
/*会员卡*/
var data = new Card_MemberCardData()
{
//卡券基本信息
base_info = _BaseInfoMemberCard,
//非必填,会员卡背景图片,商家自定义会员卡背景图,须先调用上传图片接口将背景图上传至CDN,否则报错
//background_pic_url = @RNB5.Common.WebConfig.AppSettings.PreviewPicTempPath + "/Images/CardImg/MemberCardBack.jpg",
//必填,是否支持积分,填写true 或false。如填写true,积分相关字段均为必填,并占用custom_field1位置。
supply_bonus = true,
//积分规则结构体
bonus_rule = new BonusRule()
{
//激活成功即赠送x积分
init_increase_bonus = 100,
//每消费x元(单位:分)
cost_money_unit = 100,
//对应赠送x积分
increase_bonus = 1,
//单次获取的积分上限x
max_increase_bonus = 10000,
//每使用x积分
cost_bonus_unit = 10,
//抵扣x元(单位:分)
reduce_money = 100,
//订单满x元(单位:分)可用积分抵扣
least_money_to_use_bonus = 100,
//单笔使用上限x积分
max_reduce_bonus = 10000,
},
/*
//积分信息类目对应的小程序 user_name,格式为原始id+@app
bonus_app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//积分入口小程序的页面路径
bonus_app_brand_pass = @"pages/myInfo/myInfo",
*/
//显示会员信息类目的上限为3个,即创建时类目字段supply_bonus 、supply_balance、 custom_field1、custom_field2 、custom_field3最多选择三项填写。
//使用CardAPI-UpdateUser接口更新会员信息,如积分、余额变动,背景图片,custom_field1、2、3的文字描述等。
//如根据会员等级,在会员卡面显示对应等级名称(如:普通、中级、高级)
//等级规则结构体
custom_field2 = new CustomField()
{
//会员信息类目名称。FIELD_NAME_TYPE_LEVEL = 0,等级
name_type = MemberCard_CustomField_NameType.FIELD_NAME_TYPE_LEVEL,
//点击类目跳转外链url 该参数必须设置,但设置小程序入口后该链接无效
url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义入口小程序user_name,格式为原始id+@app
app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义入口小程序的页面路径
app_brand_pass = @"pages/myInfo/myInfo",
},
//优惠券规则结构体
custom_field3 = new CustomField()
{
//会员信息类目名称。FIELD_NAME_TYPE_COUPON = 1,优惠券
name_type = MemberCard_CustomField_NameType.FIELD_NAME_TYPE_COUPON,
//点击类目跳转外链url 该参数必须设置,但设置小程序入口后该链接无效
url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义入口小程序user_name,格式为原始id+@app
app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义入口小程序的页面路径
app_brand_pass = @"pages/myInfo/myInfo",
},
/*
//自定义入口规则结构体 自定义会员信息类目,会员卡激活后显示。显示在第二个。
custom_cell1 = new CustomCell()
{
//入口名称
name = "xxxx",
//入口右侧提示语,6个汉字内
tips = "xxxxxx",
//入口跳转链接 设置该参数则小程序入口即无效
//url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义入口小程序user_name,格式为原始id+@app
app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义入口小程序的页面路径
app_brand_pass = ConfigurationManager.AppSettings["WXHomePage1"],
},
*/
//折扣,该会员卡享受的折扣优惠,填10就是九折。
//discount = 10,
//特权说明
prerogative = "会员日享折扣价",
//必填,是否支持储值,填写true 或false。该字段须开通储值功能后方可使用:储值卡(如有储值功能的会员卡),需提交预付卡备案,待审核通过后,方可获得储值权限
supply_balance = false,
//非必填,设置为true时用户领取会员卡后系统自动将其激活,无需调用激活接口。激活链接activate_url和一键开卡接口设置都会失效。
auto_activate = true,
//非必填,设置为true时会员卡支持一键激活,不允许同时传入activate_url字段,否则设置wx_activate失效。建议开发者activate_url、auto_activate和wx_activate只填写一项。
//wx_activate = true,
};
var result = CardApi.CreateCard(token, data);
var json = new
{
Success = result.errmsg == "ok",
Message = "卡券创建成功。"
};
return Json(json);
}
catch (Exception ex)
{
var json = new { Success = false, Message = string.Format("卡券创建失败:{0}。", ex.Message) };
return Json(json);
}
}
/// <summary>
/// 更新卡券
/// </summary>
/// <returns></returns>
public ActionResult CardUpdate(string cardId)
{
try
{
string token = GetToken();
if (token.IsNullOrEmpty())
{
throw new WeixinException("Token不能为空!");
}
/*会员卡*/
var data = new Card_MemberCardUpdateData()
{
//卡券基本信息
base_info = _UpdateBaseInfoMemberCard,
//必填,是否支持积分,填写true 或false。如填写true,积分相关字段均为必填,并占用custom_field1位置。
supply_bonus = true,
//积分规则结构体
bonus_rule = new BonusRule()
{
//激活成功即赠送x积分
init_increase_bonus = 100,
//每消费x元(单位:分)
cost_money_unit = 100,
//对应赠送x积分
increase_bonus = 1,
//单次获取的积分上限x
max_increase_bonus = 10000,
//每使用x积分
cost_bonus_unit = 10,
//抵扣x元(单位:分)
reduce_money = 100,
//订单满x元(单位:分)可用积分抵扣
least_money_to_use_bonus = 100,
//单笔使用上限x积分
max_reduce_bonus = 10000,
},
//显示会员信息类目的上限为3个,即创建时类目字段supply_bonus 、supply_balance、 custom_field1、custom_field2 、custom_field3最多选择三项填写。
//使用CardAPI-UpdateUser接口更新会员信息,如积分、余额变动,背景图片,custom_field1、2、3的文字描述等。
//如根据会员等级,在会员卡面显示对应等级名称(如:普通、中级、高级)
//等级规则结构体
custom_field2 = new CustomField()
{
//会员信息类目名称。FIELD_NAME_TYPE_LEVEL = 0,等级
name_type = MemberCard_CustomField_NameType.FIELD_NAME_TYPE_LEVEL,
//点击类目跳转外链url 该参数必须设置,但设置小程序入口后该链接无效
url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义入口小程序user_name,格式为原始id+@app
app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义入口小程序的页面路径
app_brand_pass = @"pages/myInfo/myInfo",
},
//优惠券规则结构体
custom_field3 = new CustomField()
{
//会员信息类目名称。FIELD_NAME_TYPE_COUPON = 1,优惠券
name_type = MemberCard_CustomField_NameType.FIELD_NAME_TYPE_COUPON,
//点击类目跳转外链url 该参数必须设置,但设置小程序入口后该链接无效
url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义入口小程序user_name,格式为原始id+@app
app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义入口小程序的页面路径
app_brand_pass = @"pages/myInfo/myInfo",
},
//折扣,该会员卡享受的折扣优惠,填10就是九折。
//discount = 10,
//特权说明
prerogative = "会员日享折扣价",
//非必填,设置为true时用户领取会员卡后系统自动将其激活,无需调用激活接口。激活链接activate_url和一键开卡接口设置都会失效。
auto_activate = true,
};
var result = CardApi.CardUpdate(token, CardType.MEMBER_CARD, data, cardId);
var json = new
{
Success = result.errmsg == "ok",
Message = "卡券更新成功。"
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
var json = new { Success = false, Message = string.Format("卡券更新失败:{0}。", ex.Message) };
return Json(json, JsonRequestBehavior.AllowGet);
}
}
//显示会员信息类目的上限为3个,即创建时类目字段supply_bonus 、supply_balance、 custom_field1、custom_field2 、custom_field3最多选择三项填写。
//使用CardAPI-UpdateUser接口更新会员信息,如积分、余额变动,背景图片,custom_field1、2、3的文字描述等。
//如根据会员等级,在会员卡面显示对应等级名称(如:普通、中级、高级)
//等级规则结构体
custom_field2 = new CustomField()
{
//会员信息类目名称。FIELD_NAME_TYPE_LEVEL = 0,等级
name_type = MemberCard_CustomField_NameType.FIELD_NAME_TYPE_LEVEL,
//点击类目跳转外链url 该参数必须设置,但设置小程序入口后该链接无效
url = ConfigurationManager.AppSettings["OfficialWebsite"],
//自定义入口小程序user_name,格式为原始id+@app
app_brand_user_name = ConfigurationManager.AppSettings["WXOriId1"],
//自定义入口小程序的页面路径
app_brand_pass = @"pages/myInfo/myInfo",
},