public void Can_update_standard_recurring_billing()
        {
            // ReferenceId is set here
            var create = CreateSubscription();

            Assert.IsNotNull(create.RecurringBillingId);

            var subscription = new Subscription("Test Subscription",
                                                DateTime.UtcNow,
                                                Period.Monthly,
                                                0.01);

            var card = new CreditCard("4111 1111 1111 1111",
                                      "John Q Customer",
                                      DateTime.Now.Month,
                                      DateTime.Now.Year);

            var beanstream = new BeanstreamProcessor(CredentialFirst,
                                                     CredentialSecond,
                                                     CredentialThird);

            var result = beanstream.UpdateRecurringBilling(subscription, card);

            Assert.IsNotNull(result);
        }
        private AuthorizeNetResult ProcessAuth(double amount)
        {
            var creditCard = new CreditCard("4111 1111 1111 1111", "John Q Customer", 11, 09);
            var authDotNet = new AuthorizeNetProcessor(CredentialFirst, CredentialSecond);

            return authDotNet.Authorize(amount, creditCard);
        }
        /// <summary>
        /// Captures the specified amount.
        /// </summary>
        /// <param name="amount">The amount.</param>
        /// <param name="card">The card.</param>
        /// <param name="transactionId">The transaction id.</param>
        /// <returns></returns>
        public AuthorizeNetResult Capture(Money amount, CreditCard card, string transactionId)
        {
            var uri = GetCreditCardUri(this);

            return RequestWithMoneyCreditCardAndTransaction(CreditCardTransactionType.Capture, amount, card,
                                                            transactionId, uri);
        }
        private AuthorizeNetResult CreateRecurringBilling(Subscription subscription)
        {
            var expiryMonth = DateTime.UtcNow.Month;
            var expiryYear = DateTime.UtcNow.Year;
            var creditCard = new CreditCard("4111 1111 1111 1111", "John Q Customer", expiryMonth, expiryYear);

            return CreateRecurringBilling(subscription, creditCard);
        }
예제 #5
0
        public void Can_validate_test_cards()
        {
            var cc = new CreditCard(VisaNumber,
                                    "John Q Customer",
                                    DateTime.UtcNow.Month,
                                    DateTime.UtcNow.Year);

            Assert.IsTrue(cc.IsValid);
        }
        private AuthorizeNetResult CreateRecurringBilling(Subscription subscription, CreditCard card)
        {
            var authDotNet = new AuthorizeNetProcessor(CredentialFirst, CredentialSecond);
            var billTo = new Address {FirstName = "John", LastName = "Customer"};

            authDotNet.SetBillingAddress(billTo);

            var result = authDotNet.CreateRecurringBilling(subscription, card);
            return result;
        }
        public void Can_satisfy_generic_specification()
        {
            var card = new CreditCard("4111 1111 1111 1111",
                                      "John Q Customer",
                                      DateTime.Now.Month,
                                      DateTime.Now.Year);

            var satisfied = card.Satisfies<VisaSpecification>();

            Assert.IsTrue(satisfied);
        }
        /// <summary>
        /// Creates the recurring billing.
        /// </summary>
        /// <param name="subscription">The subscription.</param>
        /// <param name="card">The card.</param>
        /// <returns></returns>
        public AuthorizeNetResult CreateRecurringBilling(Subscription subscription, CreditCard card)
        {
            ValidateSubscription(subscription);
            ValidateAmountCard(subscription.PaymentAmount, card);
            ValidateBillingAddress();

            var document = BuildRecurringBillingRequest(RecurringBillingTransactionType.Create,
                                                        subscription,
                                                        card);

            var result = SendRecurringBillingRequest(document);
            if (!result.TransactionId.IsNullOrBlank())
            {
                subscription.ReferenceId = Convert.ToInt64(result.TransactionId);
            }

            return result;
        }
        private XDocument BuildRecurringBillingRequest(RecurringBillingTransactionType type,
                                                       Subscription subscription,
                                                       CreditCard card)
        {
            XNamespace xmlns = "AnetApi/xml/v1/schema/AnetApiSchema.xsd";
            //var xml = new XmlWrapper(xmlns);

            var hasSubscription = subscription != null;

            var hasId = hasSubscription && subscription.Id != Identity.None;
            var hasRefId = hasSubscription && subscription.ReferenceId.HasValue;

            var refId = hasSubscription ? subscription.Id : Identity.None;
            var subscriptionId = hasSubscription
                                     ? subscription.ReferenceId.ValueOr(Identity.None)
                                     : Identity.None;

            if (type == RecurringBillingTransactionType.Cancel)
            {
                subscription = null;
            }

            // TODO Gateway
            return null;

            /*
            return new XDocument(
                XmlWrapper.Declare("1.0", "utf-8")
                , xml.Tag("ARB{0}SubscriptionRequest".FormatWith(type)
                          , xml.Tag("merchantAuthentication"
                                    , xml.Tag("name", Authenticator.First)
                                    , xml.Tag("transactionKey", Authenticator.Second))
                          , xml.If(hasId, xml.Tag("refId", refId))
                          , xml.If(hasRefId, xml.Tag("subscriptionId", subscriptionId))
                          , xml.If(hasSubscription, BuildSubscriptionNode(subscription, xml, card))
                      )
                );
            */
        }
 private AuthorizeNetResult ProcessCredit(double amount, string transactionId)
 {
     var creditCard = new CreditCard("4111 1111 1111 1111", "John Q Customer", 09, 09);
     var authDotNet = new AuthorizeNetProcessor(CredentialFirst, CredentialSecond);
     return authDotNet.Credit(amount, creditCard, transactionId);
 }
        private BeanstreamResult CreateSubscription()
        {
            var subscription = new Subscription("Test Subscription",
                                                DateTime.UtcNow,
                                                Period.Monthly,
                                                0.01);

            var card = new CreditCard("4111 1111 1111 1111",
                                      "John Q Customer",
                                      DateTime.Now.Month,
                                      DateTime.Now.Year);

            var beanstream = new BeanstreamProcessor(CredentialFirst, CredentialSecond, CredentialThird);

            //  Billing address is required for card transactions
            beanstream.SetBillingAddress(new Address
                                             {
                                                 FirstName = "Paul Randal",
                                                 Email = "*****@*****.**",
                                                 Phone = "9999999",
                                                 AddressLine = "1045 Main Street",
                                                 City = "Vancouver",
                                                 State = "BC",
                                                 Zip = "V8R 1J6",
                                                 Country = "CA",
                                             });

            return beanstream.CreateRecurringBilling(subscription, card);
        }
예제 #12
0
        public void Can_validate_test_card_expecting_visa_and_fail()
        {
            var cc = new CreditCard(CreditCardType.Visa,
                                    MasterCardNumber,
                                    "John Q Customer",
                                    DateTime.UtcNow.Month,
                                    DateTime.UtcNow.Year);

            Assert.IsFalse(cc.IsValid);
        }
예제 #13
0
        public void Can_validate_test_card_expecting_visa()
        {
            var cc = new CreditCard(CreditCardType.Visa,
                                    VisaNumber,
                                    "John Q Customer",
                                    DateTime.UtcNow.Month,
                                    DateTime.UtcNow.Year);

            Assert.IsTrue(cc.IsValid);
        }
예제 #14
0
        private static void AssertCreditCardValidation(string accountNumber, CreditCardType type)
        {
            var cc = new CreditCard(accountNumber,
                                    "John Q Customer",
                                    DateTime.UtcNow.Month,
                                    DateTime.UtcNow.Year);

            Assert.IsTrue(cc.IsValid);
            Assert.IsTrue(cc.Type == type);
        }
        /// <summary>
        /// Credits the specified amount.
        /// </summary>
        /// <param name="amount">The amount.</param>
        /// <param name="card">The card.</param>
        /// <param name="transactionId">The transaction id.</param>
        /// <returns></returns>
        public AuthorizeNetResult Credit(Money amount, CreditCard card, string transactionId)
        {
            ValidateAmountTransaction(amount, transactionId);

            _creditCard = card;
            _creditCardTransactionType = CreditCardTransactionType.Credit;
            _info.TransactionId = transactionId;
            _info.TransactionAmount = amount;

            var uri = GetCreditCardUri(this);

            return Request(_info, uri);
        }
        /// <summary>
        /// Updates the recurring billing.
        /// </summary>
        /// <param name="subscription">The subscription.</param>
        /// <param name="card">The card.</param>
        /// <returns></returns>
        public AuthorizeNetResult UpdateRecurringBilling(Subscription subscription, CreditCard card)
        {
            ValidateSubscription(subscription);
            ValidateAmountCard(subscription.PaymentAmount, card);
            ValidateBillingAddress();

            var document = BuildRecurringBillingRequest(RecurringBillingTransactionType.Update,
                                                        subscription,
                                                        card);

            return SendRecurringBillingRequest(document);
        }
        /// <summary>
        /// Authorizes the specified amount.
        /// </summary>
        /// <param name="amount">The amount.</param>
        /// <param name="card">The card.</param>
        /// <returns></returns>
        public AuthorizeNetResult Authorize(Money amount, CreditCard card)
        {
            var uri = GetCreditCardUri(this);

            return RequestWithMoneyAndCard(CreditCardTransactionType.PreAuthorization, amount, card, uri);
        }