using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Http;
using Codeplex.Data;
namespace Deepleo.Weixin.SDK.Card.Special
{
///
/// 特殊卡票接口=> 会员卡
/// 商户调用接口创建会员卡获取card_id,并将会员卡下发给用户,用户领取后需激活/绑定update会员卡编号及积分信息。会员卡暂不支持转赠。
///
public class MemberCardAPI
{
///
/// 激活/绑定会员卡支持以下两种方式:
///1.用户点击卡券内“bind_old_card_url”、“activate_url”跳转商户自定义的H5页面,填写相关身份认证信息后,商户调用接口,完成激活/绑定。
///2.商户已知用户身份或无需进行绑定等操作,用户领取会员卡后,商户后台即时调用“激活/绑定会员卡”接口update会员卡编号及积分信息。
///
///
///
/// {
///"init_bonus": 100,
///"init_balance": 200,
///"membership_number": "AAA00000001",
///"code":"12312313",
///"card_id":"xxxx_card_id"
///}
///或
///{
///"bonus": “www.xxxx.com”,
///"balance":“www.xxxx.com”,
///"membership_number": "AAA00000001",
///"code":"12312313",
///"card_id":"xxxx_card_id"
///}
///
///
/// {
///"errcode":0,
///"errmsg":"ok"
///}
///
public static dynamic ActivateCard(string access_token, dynamic memeber_card)
{
var url = string.Format("https://api.weixin.qq.com/card/membercard/activate?access_token={0}", access_token);
var client = new HttpClient();
var result = client.PostAsync(url, new StringContent(DynamicJson.Serialize(memeber_card))).Result;
if (result.IsSuccessStatusCode) return string.Empty;
return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
}
///
/// 会员卡交易
/// 会员卡交易后每次积分及余额变更需通过接口通知微信,便于后续消息通知及其他扩展功能。
///
/// 要消耗的序列号
/// 需要变更的积分,扣除积分用“-“表示。
/// 商家自定义积分消耗记录,不超过14个汉字。
/// 需要变更的余额,扣除金额用“-”表示。单位为分
/// 商家自定义金额消耗记录,不超过14个汉字。
/// 要消耗序列号所述的card_id。自定义code的会员卡必填。
///
/// {
///"errcode":0,
///"errmsg":"ok",
///"result_bonus":100,
///"result_balance":200
///"openid":"oFS7Fjl0WsZ9AMZqrI80nbIq8xrA"
///}
///
public static dynamic UpdateUserCard(string access_token, string code, int add_bonus, string record_bonus, int add_balance, string record_balance, string card_id)
{
var url = string.Format("https://api.weixin.qq.com/card/membercard/updateuser?access_token={0}", access_token);
var client = new HttpClient();
var sb = new StringBuilder();
sb.Append("{")
.Append('"' + "code" + '"' + ":").Append(code)
.Append('"' + "card_id" + '"' + ":").Append(card_id)
.Append('"' + "record_bonus" + '"' + ":").Append(record_bonus)
.Append('"' + "add_bonus" + '"' + ":").Append(add_bonus)
.Append('"' + "add_balance" + '"' + ":").Append(add_balance)
.Append('"' + "record_balance" + '"' + ":").Append(record_balance)
.Append("}");
var result = client.PostAsync(url, new StringContent(sb.ToString())).Result;
if (result.IsSuccessStatusCode) return string.Empty;
return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
}
}
}