C#實現微信公眾號會員卡管理的示例程式碼
為了更好地理解微信公眾號--會員卡管理,作者特意花了不少的時間對其研究,並用c#開發出會員卡demo,主要包含會員卡建立、設定開卡欄位、通過建立二維碼來投放會員卡、同步會員卡資料/啟用會員卡、拉取會員資訊、更新會員資訊、設定會員卡失效、刪除會員卡,從這些可以清晰地看出是圍繞會員卡的生命週期來研究的。結合文章中DEMO有助於大家快速理解會員卡介面。
1、會員卡建立
1)、會員卡建立介面文件
支援開發者呼叫該介面建立會員卡,並獲取card_id,用於投放。呼叫該介面前,請開發者詳讀建立卡券介面部分上傳圖片介面、首頁部分,快速錄入會員卡卡面必要資訊。
介面呼叫請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
引數說明
引數 | 是否必須 | 說明 |
---|---|---|
access_token | 是 | 呼叫介面憑證 |
POST資料 | 是 | JSON結構 |
POST資料示例:
{ "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": "使用時向服務員出示此券","service_phone": "020-88888888","description": "不可與其他優惠同享","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": "此菜品迎合大眾口味,老少皆宜,營養均衡" } ],"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": "啟用後顯示","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)、建立會員卡DEMO
A、在建立會員卡之前,我們可以呼叫素材管理,上傳logo,backgroup圖片
如下為呼叫介面的DEMO
DEMO中關鍵程式碼:
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 = "執行結果:" + JsonConvert.SerializeObject(imageReJson);
B、在logo與 backgroup圖片上傳後,我們呼叫建立會員卡介面來建立會員卡,如下為DEMO
在建立成功後,在微信公眾平臺中有剛建立的會員卡套
具體會員卡資訊如下:
其中關鍵程式碼:
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 = "每人限領取1張\r\n會員權益不可與其它優惠同享\r\n僅限中國(本會員卡不包括港澳臺地區)指定的愛瑪蒂專賣店使用\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可參與豐富的會員專享活動,詳情參看相關門店活動頁面"; member_Card.auto_activate = false; member_Card.wx_activate = true; //積分規則 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; //建立會員卡json顯示在介面上 richTextBox2.Text = JsonConvert.SerializeObject(memberCardJson); //通過介面寫入 CardReJson createrejson = MemberCardInterface.Create(richTextBox1.Text,memberCardJson); richTextBox3.Text = JsonConvert.SerializeObject(createrejson);
C、設定測試白名單介面
若會員卡暫時未稽核通,開發者可以將測試人員的微訊號設定成白名單,領取未稽核通過的卡券。白名單狀態領取的卡資訊不隨卡券實時更新,請開發者注意。
2、設定開卡欄位
1)、設定開卡欄位介面文件
開發者在建立時填入"wx_activate": true欄位後,需要呼叫該介面設定使用者啟用時需要填寫的選項,否則一鍵開卡設定不生效。
介面呼叫請求說明
HTTP請求方式: POST URL:https://api.weixin.qq.com/card/membercard/activateuserform/set?access_token=TOKEN
引數說明
引數 | 是否必須 | 說明 |
---|---|---|
access_token | 是 | 呼叫介面憑證 |
POST資料 | 是 | JSON結構 |
2)、設定開卡欄位DEMO
在設定開卡欄位之前,我們查看了微信公眾平臺中會員卡的啟用資訊,只有必填資訊,手機號
如下為呼叫介面程式,設定開卡欄位介面 設定姓名,手機號是必填,性別、生日、興趣選填
在呼叫介面成功後,必填資訊與啟用資訊調整見下
3、投放會員卡--建立二維碼
1)、介面文件
建立會員卡二維碼,列印後置於店內,顧客掃碼領取會員卡,掃描下方二維碼體驗領取,若已領取可掃碼快速開啟會員卡。
開發者可呼叫該介面生成一張卡券二維碼供使用者掃碼後新增卡券到卡包。
自定義Code碼的卡券呼叫介面時,POST資料中需指定code,非自定義code不需指定,指定openid同理。指定後的二維碼只能被使用者掃描領取一次。
獲取二維碼ticket後,開發者可用換取二維碼圖片詳情。
介面呼叫請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/qrcode/create?access_token=TOKEN
引數說明
引數 | 是否必須 | 說明 |
---|---|---|
POST資料 | 是 | JSON資料 |
access_token | 是 | 呼叫介面憑證 |
POST資料
開發者可以設定掃描二維碼領取單張卡券,此時POST資料為:
{ "action_name": "QR_CARD","expire_seconds": 1800,"action_info": { "card": { "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc","code": "198374613512","openid": "oFS7Fjl0WsZ9AMZqrI80nbIq8xrA","is_unique_code": false,"outer_str":"12b" } } }
當開發者設定掃描二維碼領取多張卡券,此時POST資料為:
{ "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)、建立二維碼DEMO
使用者可以掃描這個二維碼,掃碼後,先領取會員卡,然後啟用會員卡
在領取與啟用會員卡時,會向開發者接入推送事件,
<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>
開發者在收到這些xml後,可以解析處理,比如可以同步會員的初始積分,讀取會員的基礎資訊同步到自己的業務系統,包括CRM或ERP等。
如下是我們接收後,做的系統日誌:
4、同步會員卡資料/啟用會員卡
1)、開發文件介紹
開發者可以在接收到事件通知後呼叫啟用介面,傳入會員卡號、初始積分等資訊或者呼叫拉取會員資訊介面獲取會員資訊,詳情請見:啟用會員卡介面
啟用方式說明
介面啟用通常需要開發者開發使用者填寫資料的網頁。通常有兩種啟用流程:
使用者必須在填寫資料後才能領卡,領卡後開發者呼叫啟用介面為使用者啟用會員卡;
是使用者可以先領取會員卡,點選啟用會員卡跳轉至開發者設定的資料填寫頁面,填寫完成後開發者呼叫啟用介面為使用者啟用會員卡。
介面詳情
介面呼叫請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/membercard/activate?access_token=TOKEN
引數說明
引數 | 是否必須 | 說明 |
---|---|---|
access_token | 是 | 呼叫介面憑證 |
POST資料 | 是 | JSON結構 |
{ "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)、開發文件介紹
介面說明
支援開發者根據CardID和Code查詢會員資訊。
介面呼叫請求說明
HTTP請求方式: POSTURL:https://api.weixin.qq.com/card/membercard/userinfo/get?access_token=TOKEN
引數說明
引數 | 是否必須 | 說明 |
---|---|---|
POST資料 | 是 | JSON結構 |
access_token | 是 | 呼叫介面憑證 |
POST資料
{ "card_id": "pbLatjtZ7v1BG_ZnTjbW85GYc_E8","code": "916679873278" }
返回資料
{ "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": "郭敬明",{ "name": "職業","value": "","value_list": [ "賽車手","旅行家" ] } ] },"user_card_status": "NORMAL","has_active": false }
2)、拉取會員資訊DEMO
可以讀取到會員的姓名與手機號等資訊,其中可以用手機號作為關鍵值與公司的CRM、ERP等對接。
6、更新會員資訊
當前會員的積分或儲值在公司的CRM、ERP等系統中變化,這時可以通過這個介面來實現同步。
如下DEMO為同步會員積分:
7、設定會員失效
如下為開發文件中的注意事項:
1.設定卡券失效的操作不可逆,即無法將設定為失效的卡券調回有效狀態,商家須慎重呼叫該介面。
*2.商戶呼叫失效介面前須與顧客事先告知並取得同意,否則因此帶來的顧客投訴,微信將會按照《微信運營處罰規則》
如下是通過介面實現將會員失效的DEMO
8、刪除會員卡
開發文件中說明是同刪除卡券介面,刪除卡券介面允許商戶刪除任意一類卡券。刪除卡券後,該卡券對應已生成的領取用二維碼、新增到卡包JS API均會失效。 注意:如使用者在商家刪除卡券前已領取一張或多張該卡券依舊有效。即刪除卡券不能刪除已被使用者領取,儲存在微信客戶端中的卡券。
如下是通過介面實現刪除會員卡功能的DEMO
到此這篇關於C#實現微信公眾號會員卡管理的示例程式碼的文章就介紹到這了,更多相關C# 公眾號會員卡管理內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!