public void TestCreateToken() { var card = new CardCreateInfo(); card.Name = "TestCard"; card.Number = "4242424242424242"; card.ExpirationMonth = 9; card.ExpirationYear = 2017; var token = new TokenInfo(); token.Card = card; stubResponse(@"{ 'object': 'token', 'id': '123', 'livemode': false, 'location': '/tokens/123', 'used': false, 'card': { 'object': 'card', 'livemode': false, 'country': '', 'city': null, 'postal_code': null, 'financing': '', 'last_digits': '4242', 'brand': 'Visa', 'expiration_month': 9, 'expiration_year': 2017, 'fingerprint': '123', 'name': 'TestCard', 'created': '2014-10-02T07:27:30Z' }, 'created': '2014-10-02T07:27:30Z' } " ); var resultToken = client.TokenService.CreateToken(token); Assert.IsNotNull(resultToken); Assert.AreEqual("123", resultToken.Id); Assert.IsFalse(resultToken.LiveMode); Assert.AreEqual("/tokens/123", resultToken.Location); Assert.IsFalse(resultToken.Used); Assert.IsNotNull(resultToken.Card); Assert.IsFalse(resultToken.Card.LiveMode); Assert.IsNullOrEmpty(resultToken.Card.Country); Assert.IsNullOrEmpty(resultToken.Card.City); Assert.IsNullOrEmpty(resultToken.Card.PostalCode); Assert.IsNullOrEmpty(resultToken.Card.Financing); Assert.AreEqual(Brand.Visa, resultToken.Card.Brand); Assert.AreEqual("123", resultToken.Card.Fingerprint); Assert.AreEqual("TestCard", resultToken.Card.Name); Assert.AreEqual("4242", resultToken.Card.LastDigits); Assert.AreEqual(9, resultToken.Card.ExpirationMonth); Assert.AreEqual(2017, resultToken.Card.ExpirationYear); }
public void TestCreateInvalidCardExpirationYear() { var card = new CardCreateInfo(); card.ExpirationMonth = 1; card.ExpirationYear = 9999; card.Number = "4242424242424242"; card.Name = "Test card"; Assert.Throws <InvalidCardException>(delegate { client.CardService.CreateCard("123", card); }); }
public void TestCreateInvalidCardNumber() { var card = new CardCreateInfo(); card.ExpirationMonth = 9; card.ExpirationYear = 2017; card.Number = "42424242424242"; card.Name = "Test card"; stubException(new ApiException()); Assert.Throws <ApiException>(delegate { client.CardService.CreateCard("123", card); }); }
/// <summary> /// 创建卡券 /// </summary> /// <param name="cardInfo">创建卡券需要的数据,格式可以看CardCreateData.cs</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public CardCreateResultJson CreateCard(BaseCardInfo cardInfo, int timeOut = Config.TIME_OUT) { var accessToken = _api.GetAccessToken(); var url = string.Format("https://api.weixin.qq.com/card/create?access_token={0}", accessToken); CardCreateInfo cardData = null; CardType cardType = cardInfo.GetCardType(); switch (cardType) { case CardType.GENERAL_COUPON: cardData = new CardCreateInfo() { card = new Card_GeneralCoupon() { card_type = cardType.ToString(), general_coupon = cardInfo as Card_GeneralCouponData } }; break; case CardType.GROUPON: cardData = new CardCreateInfo() { card = new Card_Groupon() { card_type = cardType.ToString(), groupon = cardInfo as Card_GrouponData } }; break; case CardType.GIFT: cardData = new CardCreateInfo() { card = new Card_Gift() { card_type = cardType.ToString(), gift = cardInfo as Card_GiftData } }; break; case CardType.CASH: cardData = new CardCreateInfo() { card = new Card_Cash() { card_type = cardType.ToString(), cash = cardInfo as Card_CashData } }; break; case CardType.DISCOUNT: cardData = new CardCreateInfo() { card = new Card_DisCount() { card_type = cardType.ToString(), discount = cardInfo as Card_DisCountData } }; break; case CardType.MEMBER_CARD: cardData = new CardCreateInfo() { card = new Card_MemberCard() { card_type = cardType.ToString(), member_card = cardInfo as Card_MemberCardData } }; break; case CardType.SCENIC_TICKET: cardData = new CardCreateInfo() { card = new Card_ScenicTicket() { card_type = cardType.ToString(), scenic_ticket = cardInfo as Card_ScenicTicketData } }; break; case CardType.MOVIE_TICKET: cardData = new CardCreateInfo() { card = new Card_MovieTicket() { card_type = cardType.ToString(), movie_ticket = cardInfo as Card_MovieTicketData } }; break; case CardType.BOARDING_PASS: cardData = new CardCreateInfo() { card = new Card_BoardingPass() { card_type = cardType.ToString(), boarding_pass = cardInfo as Card_BoardingPassData } }; break; case CardType.LUCKY_MONEY: cardData = new CardCreateInfo() { card = new Card_LuckyMoney() { card_type = cardType.ToString(), lucky_money = cardInfo as Card_LuckyMoneyData } }; break; case CardType.MEETING_TICKET: cardData = new CardCreateInfo() { card = new Card_MeetingTicket() { card_type = cardType.ToString(), meeting_ticket = cardInfo as Card_MeetingTicketData } }; break; default: break; } return(Post <CardCreateResultJson>(url, cardData, timeOut)); }
/// <summary> /// 创建卡券 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="cardInfo">创建卡券需要的数据,格式可以看CardCreateData.cs</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static CardCreateResultJson CreateCard(string accessTokenOrAppId, BaseCardInfo cardInfo, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = string.Format("https://api.weixin.qq.com/card/create?access_token={0}", accessToken); CardCreateInfo cardData = null; CardType cardType = cardInfo.GetCardType(); switch (cardType) { case CardType.GENERAL_COUPON: cardData = new CardCreateInfo() { card = new Card_GeneralCoupon() { card_type = cardType.ToString(), general_coupon = cardInfo as Card_GeneralCouponData } }; break; case CardType.GROUPON: cardData = new CardCreateInfo() { card = new Card_Groupon() { card_type = cardType.ToString(), groupon = cardInfo as Card_GrouponData } }; break; case CardType.GIFT: cardData = new CardCreateInfo() { card = new Card_Gift() { card_type = cardType.ToString(), gift = cardInfo as Card_GiftData } }; break; case CardType.CASH: cardData = new CardCreateInfo() { card = new Card_Cash() { card_type = cardType.ToString(), cash = cardInfo as Card_CashData } }; break; case CardType.DISCOUNT: cardData = new CardCreateInfo() { card = new Card_DisCount() { card_type = cardType.ToString(), discount = cardInfo as Card_DisCountData } }; break; case CardType.MEMBER_CARD: cardData = new CardCreateInfo() { card = new Card_MemberCard() { card_type = cardType.ToString(), member_card = cardInfo as Card_MemberCardData } }; break; case CardType.SCENIC_TICKET: cardData = new CardCreateInfo() { card = new Card_ScenicTicket() { card_type = cardType.ToString(), scenic_ticket = cardInfo as Card_ScenicTicketData } }; break; case CardType.MOVIE_TICKET: cardData = new CardCreateInfo() { card = new Card_MovieTicket() { card_type = cardType.ToString(), movie_ticket = cardInfo as Card_MovieTicketData } }; break; case CardType.BOARDING_PASS: cardData = new CardCreateInfo() { card = new Card_BoardingPass() { card_type = cardType.ToString(), boarding_pass = cardInfo as Card_BoardingPassData } }; break; case CardType.LUCKY_MONEY: cardData = new CardCreateInfo() { card = new Card_LuckyMoney() { card_type = cardType.ToString(), lucky_money = cardInfo as Card_LuckyMoneyData } }; break; case CardType.MEETING_TICKET: cardData = new CardCreateInfo() { card = new Card_MeetingTicket() { card_type = cardType.ToString(), meeting_ticket = cardInfo as Card_MeetingTicketData } }; break; default: break; } var jsonSetting = new JsonSetting(true, null, new List <Type>() { //typeof (Modify_Msg_Operation), //typeof (CardCreateInfo), typeof(Card_BaseInfoBase) //过滤Modify_Msg_Operation主要起作用的是这个 }); var result = CommonJsonSend.Send <CardCreateResultJson>(null, urlFormat, cardData, timeOut: timeOut, //针对特殊字段的null值进行过滤 jsonSetting: jsonSetting); return result; }, accessTokenOrAppId)); }
public void TestCreateCardWithCardToken() { var card = new CardCreateInfo(); card.Name = "Test Card"; card.Number = "4242424242424242"; card.ExpirationMonth = 9; card.ExpirationYear = 2017; var token = new TokenInfo(); token.Card = card; stubResponse(@"{ 'object': 'token', 'id': '123', 'livemode': false, 'location': '/tokens/123', 'used': false, 'card': { 'object': 'card', 'livemode': false, 'country': '', 'city': null, 'postal_code': null, 'financing': '', 'last_digits': '4242', 'brand': 'Visa', 'expiration_month': 9, 'expiration_year': 2017, 'fingerprint': '123', 'name': 'TestCard', 'created': '2014-10-02T07:27:30Z' }, 'created': '2014-10-02T07:27:30Z' } " ); var resultToken = client.TokenService.CreateToken(token); stubResponse(@"{ 'object': 'card', 'id': '123', 'livemode': false, 'location': '/customers/123/cards/123', 'country': 'Thailand', 'city': 'Bangkok', 'postal_code': null, 'financing': '', 'last_digits': '4242', 'brand': 'Visa', 'expiration_month': 9, 'expiration_year': 2017, 'fingerprint': '123', 'name': 'Test Card', 'created': '2014-10-02T06:09:01Z' }" ); var result = client.CardService.CreateCard(customerId, resultToken.Id); Assert.AreEqual("4242", result.LastDigits); Assert.AreEqual(card.ExpirationMonth, result.ExpirationMonth); Assert.AreEqual(card.ExpirationYear, result.ExpirationYear); Assert.AreEqual(card.Name, result.Name); Assert.AreEqual(Brand.Visa, result.Brand); Assert.AreEqual("Bangkok", result.City); Assert.AreEqual("Thailand", result.Country); Assert.AreEqual("123", result.Fingerprint); Assert.AreEqual("123", result.Id); Assert.AreEqual(new DateTime(2014, 10, 2, 6, 9, 1), result.CreatedAt); }