C#實現(xiàn)微信公眾號會員卡管理的示例代碼
為了更好地理解微信公眾號--會員卡管理,作者特意花了不少的時間對其研究,并用c#開發(fā)出會員卡demo,主要包含會員卡創(chuàng)建、設(shè)置開卡字段、通過創(chuàng)建二維碼來投放會員卡、同步會員卡數(shù)據(jù)/激活會員卡、拉取會員信息、更新會員信息、設(shè)置會員卡失效、刪除會員卡,從這些可以清晰地看出是圍繞會員卡的生命周期來研究的。結(jié)合文章中DEMO有助于大家快速理解會員卡接口。
1、會員卡創(chuàng)建
1)、會員卡創(chuàng)建接口文檔
支持開發(fā)者調(diào)用該接口創(chuàng)建會員卡,并獲取card_id,用于投放。調(diào)用該接口前,請開發(fā)者詳讀創(chuàng)建卡券接口部分上傳圖片接口、首頁 部分,快速錄入會員卡卡面必要信息。
接口調(diào)用請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
參數(shù)說明
| 參數(shù) | 是否必須 | 說明 |
|---|---|---|
| access_token | 是 | 調(diào)用接口憑證 |
| POST數(shù)據(jù) | 是 | JSON結(jié)構(gòu) |
POST數(shù)據(jù)示例:
{
"card": {
"card_type": "MEMBER_CARD",
"member_card": {
"background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/",
"base_info": {
"logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZ/0",
"brand_name": "海底撈",
"code_type": "CODE_TYPE_TEXT",
"title": "海底撈會員卡",
"color": "Color010",
"notice": "使用時向服務(wù)員出示此券",
"service_phone": "020-88888888",
"description": "不可與其他優(yōu)惠同享",
"date_info": {
"type": "DATE_TYPE_PERMANENT"
},
"sku": {
"quantity": 50000000
},
"get_limit": 3,
"use_custom_code": false,
"can_give_friend": true,
"location_id_list": [
123,
12321
],
"custom_url_name": "立即使用",
"custom_url": "http://weixin.qq.com",
"custom_url_sub_title": "6個漢字tips",
"promotion_url_name": "營銷入口1",
"promotion_url": "http://www.qq.com",
"need_push_on_view": true
},
"advanced_info": {
"use_condition": {
"accept_category": "鞋類",
"reject_category": "阿迪達斯",
"can_use_with_other_discount": true
},
"abstract": {
"abstract": "微信餐廳推出多種新季菜品,期待您的光臨",
"icon_url_list": [
"http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj
piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0"
]
},
"text_image_list": [
{
"image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
"text": "此菜品精選食材,以獨特的烹飪方法,最大程度地刺激食 客的味蕾"
},
{
"image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
"text": "此菜品迎合大眾口味,老少皆宜,營養(yǎng)均衡"
}
],
"time_limit": [
{
"type": "MONDAY",
"begin_hour":0,
"end_hour":10,
"begin_minute":10,
"end_minute":59
},
{
"type": "HOLIDAY"
}
],
"business_service": [
"BIZ_SERVICE_FREE_WIFI",
"BIZ_SERVICE_WITH_PET",
"BIZ_SERVICE_FREE_PARK",
"BIZ_SERVICE_DELIVER"
]
},
"supply_bonus": true,
"supply_balance": false,
"prerogative": "test_prerogative",
"auto_activate": true,
"custom_field1": {
"name_type": "FIELD_NAME_TYPE_LEVEL",
"url": "http://www.qq.com"
},
"activate_url": "http://www.qq.com",
"custom_cell1": {
"name": "使用入口2",
"tips": "激活后顯示",
"url": "http://www.qq.com"
},
"bonus_rule": {
"cost_money_unit": 100,
"increase_bonus": 1,
"max_increase_bonus": 200,
"init_increase_bonus": 10,
"cost_bonus_unit": 5,
"reduce_money": 100,
"least_money_to_use_bonus": 1000,
"max_reduce_bonus": 50
},
"discount": 10
}
}
}
2)、創(chuàng)建會員卡DEMO
A、在創(chuàng)建會員卡之前,我們可以調(diào)用素材管理,上傳logo,backgroup圖片
如下為調(diào)用接口的DEMO

DEMO中關(guān)鍵代碼:
if (string.IsNullOrEmpty(textBoxTmpMedia.Text))
{
MessageUtil.ShowTips("請選擇上傳的素材!");
return;
}
ImageReJson imageReJson = AddMaterialInterface.Image(richTextBox1.Text, "image", textBoxTmpMedia.Text, "image/jpeg");
if (string.IsNullOrEmpty(imageReJson.errmsg))
{
textBox7.Text = imageReJson.url;
textBox26.Text = imageReJson.url;
}
richTextBox6.Text = "執(zhí)行結(jié)果:" + JsonConvert.SerializeObject(imageReJson);
B、在logo與 backgroup圖片上傳后,我們調(diào)用創(chuàng)建會員卡接口來創(chuàng)建會員卡,如下為DEMO

在創(chuàng)建成功后,在微信公眾平臺中有剛創(chuàng)建的會員卡套

具體會員卡信息如下:

其中關(guān)鍵代碼:
Base_Info base_info = new Base_Info(); base_info.logo_url = textBox26.Text; base_info.code_type = "CODE_TYPE_BARCODE"; base_info.brand_name = textBox27.Text; base_info.title = textBox28.Text; Date_Info date_info = new Date_Info(); date_info.type = "DATE_TYPE_PERMANENT"; base_info.date_info = date_info; base_info.color = "Color100"; base_info.notice = "到店出示會員卡,由店員完成核銷"; base_info.description = "每人限領(lǐng)取1張\r\n會員權(quán)益不可與其它優(yōu)惠同享\r\n僅限中國(本會員卡不包括港澳臺地區(qū))指定的愛瑪?shù)賹Yu店使用\r\n當年消費獲取的積分僅可當年年底(既12月31日24點)前使用,如未全部使用,則當年的積分會于當年年底清零,不累計到次年\r\n具體使用方式請咨詢專賣店工作人員。"; base_info.get_limit = 1; base_info.can_share = false; base_info.can_give_friend = false; Sku sku = new Sku(); sku.quantity = 1000000000; sku.total_quantity = 1000000000; base_info.sku = sku; base_info.use_all_locations = true; member_Card.base_info = base_info; member_Card.supply_bonus = true; member_Card.supply_balance = false; member_Card.prerogative = "所有專賣店消費1元即可獲得1積分\r\n可參與豐富的會員專享活動,詳情參看相關(guān)門店活動頁面"; member_Card.auto_activate = false; member_Card.wx_activate = true; //積分規(guī)則 Bonus_Rule bonus_rule = new Bonus_Rule(); bonus_rule.cost_money_unit = 100; bonus_rule.increase_bonus = 1; bonus_rule.cost_bonus_unit = 2000; bonus_rule.reduce_money = 100; member_Card.bonus_rule = bonus_rule; member_Card.background_pic_url = ""; card.member_card = member_Card; memberCardJson.card = card; //創(chuàng)建會員卡json顯示在界面上 richTextBox2.Text = JsonConvert.SerializeObject(memberCardJson); //通過接口寫入 CardReJson createrejson = MemberCardInterface.Create(richTextBox1.Text, memberCardJson); richTextBox3.Text = JsonConvert.SerializeObject(createrejson);
C、設(shè)置測試白名單接口
若會員卡暫時未審核通,開發(fā)者可以將測試人員的微信號設(shè)置成白名單,領(lǐng)取未審核通過的卡券。白名單狀態(tài)領(lǐng)取的卡信息不隨卡券實時更新,請開發(fā)者注意。

2、設(shè)置開卡字段
1)、設(shè)置開卡字段接口文檔
開發(fā)者在創(chuàng)建時填入"wx_activate": true字段后,需要調(diào)用該接口設(shè)置用戶激活時需要填寫的選項,否則一鍵開卡設(shè)置不生效。

接口調(diào)用請求說明
HTTP請求方式: POST URL:https://api.weixin.qq.com/card/membercard/activateuserform/set?access_token=TOKEN
參數(shù)說明
| 參數(shù) | 是否必須 | 說明 |
|---|---|---|
| access_token | 是 | 調(diào)用接口憑證 |
| POST數(shù)據(jù) | 是 | JSON結(jié)構(gòu) |
2)、設(shè)置開卡字段DEMO
在設(shè)置開卡字段之前,我們查看了微信公眾平臺中會員卡的激活信息,只有必填信息,手機號

如下為調(diào)用接口程序,設(shè)置開卡字段接口 設(shè)置姓名,手機號是必填,性別、生日、興趣選填

在調(diào)用 接口成功后,必填信息與激活信息調(diào)整見下

3、投放會員卡--創(chuàng)建二維碼
1)、接口文檔
創(chuàng)建會員卡二維碼,打印后置于店內(nèi),顧客掃碼領(lǐng)取會員卡,掃描下方二維碼體驗領(lǐng)取,若已領(lǐng)取可掃碼快速打開會員卡。
開發(fā)者可調(diào)用該接口生成一張卡券二維碼供用戶掃碼后添加卡券到卡包。
自定義Code碼的卡券調(diào)用接口時,POST數(shù)據(jù)中需指定code,非自定義code不需指定,指定openid同理。指定后的二維碼只能被用戶掃描領(lǐng)取一次。
獲取二維碼ticket后,開發(fā)者可用換取二維碼圖片詳情。
接口調(diào)用請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/qrcode/create?access_token=TOKEN
參數(shù)說明
| 參數(shù) | 是否必須 | 說明 |
|---|---|---|
| POST數(shù)據(jù) | 是 | JSON數(shù)據(jù) |
| access_token | 是 | 調(diào)用接口憑證 |
POST數(shù)據(jù)
開發(fā)者可以設(shè)置掃描二維碼領(lǐng)取單張卡券,此時POST數(shù)據(jù)為:
{
"action_name": "QR_CARD",
"expire_seconds": 1800,
"action_info": {
"card": {
"card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc",
"code": "198374613512",
"openid": "oFS7Fjl0WsZ9AMZqrI80nbIq8xrA",
"is_unique_code": false ,
"outer_str":"12b"
}
}
}
當開發(fā)者設(shè)置掃描二維碼領(lǐng)取多張卡券,此時POST數(shù)據(jù)為:
{
"action_name": "QR_MULTIPLE_CARD",
"action_info": {
"multiple_card": {
"card_list": [
{
"card_id": "p1Pj9jgj3BcomSgtuW8B1wl-wo88",
"code":"2392583481",
"outer_str":"12b"
},
{
"card_id": "p1Pj9jgj3BcomSgtuW8B1wl-wo98",
"code":"2392583482",
"outer_str":"12b"
}
]
}
}
}
2)、創(chuàng)建二維碼DEMO

用戶可以掃描這個二維碼,掃碼后,先領(lǐng)取會員卡,然后激活會員卡


在領(lǐng)取與激活會員卡時,會向開發(fā)者接入推送事件,
<xml> <ToUserName> < ![CDATA[gh_3fcea188bf78] ]></ToUserName> <FromUserName>< ![CDATA[obLatjlaNQKb8FqOvt1M1x1lIBFE] ]></FromUserName> <CreateTime>1432668700</CreateTime> <MsgType>< ![CDATA[event] ]></MsgType> <Event>< ![CDATA[submit_membercard_user_info] ]></Event> <CardId>< ![CDATA[pbLatjtZ7v1BG_ZnTjbW85GYc_E8] ]></CardId> <UserCardCode>< ![CDATA[018255396048] ]></UserCardCode> </xml>
開發(fā)者在收到這些xml后,可以解析處理,比如可以同步會員的初始積分,讀取會員的基礎(chǔ)信息同步到自己的業(yè)務(wù)系統(tǒng),包括CRM或ERP等。
如下是我們接收后,做的系統(tǒng)日志:

4、同步會員卡數(shù)據(jù)/激活會員卡
1)、開發(fā)文檔介紹
開發(fā)者可以在接收到事件通知后調(diào)用激活接口,傳入會員卡號、初始積分等信息或者調(diào)用拉取會員信息接口獲取會員信息,詳情請見:激活會員卡接口
激活方式說明
接口激活通常需要開發(fā)者開發(fā)用戶填寫資料的網(wǎng)頁。通常有兩種激活流程:
用戶必須在填寫資料后才能領(lǐng)卡,領(lǐng)卡后開發(fā)者調(diào)用激活接口為用戶激活會員卡;
是用戶可以先領(lǐng)取會員卡,點擊激活會員卡跳轉(zhuǎn)至開發(fā)者設(shè)置的資料填寫頁面,填寫完成后開發(fā)者調(diào)用激活接口為用戶激活會員卡。
接口詳情
接口調(diào)用請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/membercard/activate?access_token=TOKEN
參數(shù)說明
| 參數(shù) | 是否必須 | 說明 |
|---|---|---|
| access_token | 是 | 調(diào)用接口憑證 |
| POST數(shù)據(jù) | 是 | JSON結(jié)構(gòu) |
{
"init_bonus": 100,
"init_bonus_record":"舊積分同步",
"init_balance": 200,
"membership_number": "AAA00000001",
"code": "12312313",
"card_id": "xxxx_card_id",
"background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/0?wx_fmt=jpeg",
"init_custom_field_value1": "xxxxx"
}
2)、同步/激活會員卡DEMO

本DEMO中演示了修改membership_number及 初始積分,第一張圖片為原圖,第二張為同步后的圖


5、拉取會員信息
1)、開發(fā)文檔介紹
接口說明
支持開發(fā)者根據(jù)CardID和Code查詢會員信息。
接口調(diào)用請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/membercard/userinfo/get?access_token=TOKEN
參數(shù)說明
| 參數(shù) | 是否必須 | 說明 |
|---|---|---|
| POST數(shù)據(jù) | 是 | JSON結(jié)構(gòu) |
| access_token | 是 | 調(diào)用接口憑證 |
POST數(shù)據(jù)
{
"card_id": "pbLatjtZ7v1BG_ZnTjbW85GYc_E8",
"code": "916679873278"
}
返回數(shù)據(jù)
{
"errcode": 0,
"errmsg": "ok",
"openid": "obLatjjwDolFj******wNqRXw",
"nickname": "*******",
"membership_number": "658*****445",
"bonus": 995,
"sex": "MALE",
"user_info": {
"common_field_list": [
{
"name": "USER_FORM_INFO_FLAG_MOBILE",
"value": "15*****518"
},
{
"name": "USER_FORM_INFO_FLAG_NAME",
"value": "HK"
},
{
"name": "USER_FORM_INFO_FLAG_EDUCATION_BACKGROUND",
"value": "研究生"
}
],
"custom_field_list": [
{
"name": "興趣",
"value": "鋼琴",
"value_list": []
},
{
"name": "喜好",
"value": "郭敬明",
"value_list": []
},
{
"name": "職業(yè)",
"value": "",
"value_list": [
"賽車手",
"旅行家"
]
}
]
},
"user_card_status": "NORMAL",
"has_active": false
}
2)、拉取會員信息DEMO

可以讀取到會員的姓名與手機號等信息,其中可以用手機號作為關(guān)鍵值與公司的CRM、ERP等對接。
6、更新會員信息
當前會員的積分或儲值在公司的CRM、ERP等系統(tǒng)中變化,這時可以通過這個接口來實現(xiàn)同步。
如下DEMO為同步會員積分:

7、設(shè)置會員失效
如下為開發(fā)文檔中的注意事項:
1.設(shè)置卡券失效的操作不可逆,即無法將設(shè)置為失效的卡券調(diào)回有效狀態(tài),商家須慎重調(diào)用該接口。
*2.商戶調(diào)用失效接口前須與顧客事先告知并取得同意,否則因此帶來的顧客投訴,微信將會按照《微信運營處罰規(guī)則》
如下是通過接口實現(xiàn)將會員失效的DEMO

8、刪除會員卡
開發(fā)文檔中說明是同刪除卡券接口,刪除卡券接口允許商戶刪除任意一類卡券。刪除卡券后,該卡券對應(yīng)已生成的領(lǐng)取用二維碼、添加到卡包JS API均會失效。 注意:如用戶在商家刪除卡券前已領(lǐng)取一張或多張該卡券依舊有效。即刪除卡券不能刪除已被用戶領(lǐng)取,保存在微信客戶端中的卡券。
如下是通過接口實現(xiàn)刪除會員卡功能的DEMO

到此這篇關(guān)于C#實現(xiàn)微信公眾號會員卡管理的示例代碼的文章就介紹到這了,更多相關(guān)C# 公眾號會員卡管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C#發(fā)送Http請求實現(xiàn)模擬登陸實例
本文主要介紹了使用C#發(fā)送Http請求實現(xiàn)模擬登陸實例,模擬登陸的原理簡單,想要了解的朋友可以了解一下。2016-10-10
C#實現(xiàn)將網(wǎng)址生成二維碼圖片方法介紹
這篇文章介紹了C#實現(xiàn)將網(wǎng)址生成二維碼圖片的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04

