Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            });
        }
Esempio n. 3
0
        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);
            });
        }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        /// <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));
        }
Esempio n. 6
0
        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);
        }