// Methods public static void InitialCharge() { //http://code.google.com/apis/checkout/developer/Google_Checkout_Beta_Subscriptions.html //using an initial charge with a recurring charge using a different item. CheckoutShoppingCartRequest cartRequest = new CheckoutShoppingCartRequest("123456", "merchantkey", EnvironmentType.Sandbox, "USD", 120); //if you are using a web page and it has the Google Checkout button, you would use this syntax. //= GCheckoutButton1.CreateRequest() ShoppingCartItem initialItem = new ShoppingCartItem(); ShoppingCartItem recurrentItem = new ShoppingCartItem(); initialItem.Price = decimal.Zero; initialItem.Quantity = 1; initialItem.Name = "Item that shows in cart"; initialItem.Description = "This is the item that shows in the cart"; recurrentItem.Price = 2M; recurrentItem.Quantity = 1; recurrentItem.Name = "Item that is charged every month"; recurrentItem.Description = "Description for item that is charged every month"; Subscription subscription = new Subscription(); subscription.Period = GCheckout.AutoGen.DatePeriod.MONTHLY; subscription.Type = SubscriptionType.merchant; SubscriptionPayment payment = new SubscriptionPayment(); payment.MaximumCharge = 120M; payment.Times = 12; subscription.AddSubscriptionPayment(payment); //You must set the item that will be charged for every month. subscription.RecurrentItem = recurrentItem; //you must set the subscription for the item initialItem.Subscription = subscription; cartRequest.AddItem(initialItem); Debug.WriteLine(EncodeHelper.Utf8BytesToString(cartRequest.GetXml())); //Send the request to Google //GCheckout.Util.GCheckoutResponse resp = cartRequest.Send(); //Uncommment this line or perform additional actions //if (resp.IsGood) { //Response.Redirect(resp.RedirectUrl, True) //} //else{ //Response.Write("Resp.ResponseXml = " & Resp.ResponseXml & "<br>"); //Response.Write("Resp.RedirectUrl = " & Resp.RedirectUrl & "<br>"); //Response.Write("Resp.IsGood = " & Resp.IsGood & "<br>"); //Response.Write("Resp.ErrorMessage = " & Resp.ErrorMessage & "<br>"); //} }
public void HandleEvent(TenantEditionChangedEventData eventData) { if (!eventData.OldEditionId.HasValue) { return; } var subscriptionPayment = GetLastCompletedSubscriptionPayment(eventData.TenantId); if (subscriptionPayment == null || subscriptionPayment.ExternalPaymentId.IsNullOrEmpty()) { // no subscription on stripe ! return; } if (!eventData.NewEditionId.HasValue) { AsyncHelper.RunSync(() => CancelSubscription(subscriptionPayment.ExternalPaymentId)); return; } string newPlanId; decimal?newPlanAmount; using (CurrentUnitOfWork.SetTenantId(null)) { var edition = (SubscribableEdition)AsyncHelper.RunSync(() => _editionManager.GetByIdAsync(eventData.NewEditionId.Value)); newPlanId = GetPlanId(edition.Name, subscriptionPayment.GetPaymentPeriodType()); newPlanAmount = edition.GetPaymentAmountOrNull(subscriptionPayment.PaymentPeriodType); } if (!newPlanAmount.HasValue || newPlanAmount.Value == 0) { AsyncHelper.RunSync(() => CancelSubscription(subscriptionPayment.ExternalPaymentId)); return; } var payment = new SubscriptionPayment { TenantId = eventData.TenantId, Amount = 0, PaymentPeriodType = subscriptionPayment.GetPaymentPeriodType(), Description = $"Edition change by admin from {eventData.OldEditionId} to {eventData.NewEditionId}", EditionId = eventData.NewEditionId.Value, Gateway = SubscriptionPaymentGatewayType.Stripe, DayCount = subscriptionPayment.DayCount, IsRecurring = true }; _subscriptionPaymentRepository.InsertAndGetId(payment); CurrentUnitOfWork.SaveChanges(); if (!AsyncHelper.RunSync(() => DoesPlanExistAsync(newPlanId))) { AsyncHelper.RunSync(() => CreatePlanAsync(newPlanId, newPlanAmount.Value, GetPlanInterval(subscriptionPayment.PaymentPeriodType), ProductName)); } AsyncHelper.RunSync(() => UpdateSubscription(subscriptionPayment.ExternalPaymentId, newPlanId)); }
public static void RecurringChargeRightAway() { CheckoutShoppingCartRequest cartRequest = new CheckoutShoppingCartRequest("123456", "merchantkey", EnvironmentType.Sandbox, "USD", 120); //if you are using a web page and it has the Google Checkout button, you would use this syntax. //= GCheckoutButton1.CreateRequest() Subscription gSubscription = new Subscription(); SubscriptionPayment maxCharge = new SubscriptionPayment(); DigitalItem urlDigitalItem = new DigitalItem(new Uri("http://www.url.com/login.aspx"), "Congratulations, your account has been created!"); DigitalItem urlDigitalItemSubscription = new DigitalItem(new Uri("http://www.url.com/login.aspx"), "You may now continue to login to your account."); ShoppingCartItem gRecurrentItem = new ShoppingCartItem(); maxCharge.MaximumCharge = 29.99M; gRecurrentItem.Name = "Entry Level Plan"; gRecurrentItem.Description = "Allows for basic stuff. Monthly Subscription:"; gRecurrentItem.Quantity = 1; gRecurrentItem.Price = 29.99M; gRecurrentItem.DigitalContent = urlDigitalItemSubscription; gRecurrentItem.DigitalContent.Disposition = DisplayDisposition.Pessimistic; urlDigitalItem.Disposition = DisplayDisposition.Pessimistic; gSubscription.Type = SubscriptionType.google; gSubscription.Period = GCheckout.AutoGen.DatePeriod.MONTHLY; gSubscription.AddSubscriptionPayment(maxCharge); gSubscription.RecurrentItem = gRecurrentItem; cartRequest.AddItem("Entry Level Plan", "Allows for basic stuff.", 1, gSubscription); cartRequest.AddItem("Entry Level Plan", "First Month:", 29.99M, 1, urlDigitalItem); cartRequest.MerchantPrivateData = "UserName:Joe87"; Debug.WriteLine(EncodeHelper.Utf8BytesToString(cartRequest.GetXml())); //Send the request to Google //GCheckout.Util.GCheckoutResponse resp = cartRequest.Send(); //Uncommment this line or perform additional actions //if (resp.IsGood) { //Response.Redirect(resp.RedirectUrl, True) //} //else{ //Response.Write("Resp.ResponseXml = " & Resp.ResponseXml & "<br>"); //Response.Write("Resp.RedirectUrl = " & Resp.RedirectUrl & "<br>"); //Response.Write("Resp.IsGood = " & Resp.IsGood & "<br>"); //Response.Write("Resp.ErrorMessage = " & Resp.ErrorMessage & "<br>"); //} }
public async Task <Guid> Handle(BuySubscriptionCommand command, CancellationToken cancellationToken) { var priceList = await PriceListProvider.GetPriceList(_sqlConnectionFactory.GetOpenConnection()); var subscription = SubscriptionPayment.Buy( _payerContext.PayerId, SubscriptionPeriod.Of(command.SubscriptionTypeCode), command.CountryCode, MoneyValue.Of(command.Value, command.Currency), priceList); _aggregateStore.AppendChanges(subscription); return(subscription.Id); }
public async Task HandleInvoicePaymentSucceededAsync(Invoice invoice) { var customerService = new CustomerService(); var customer = await customerService.GetAsync(invoice.CustomerId); int tenantId; int editionId; PaymentPeriodType?paymentPeriodType; using (CurrentUnitOfWork.SetTenantId(null)) { var tenant = await _tenantManager.FindByTenancyNameAsync(customer.Description); tenantId = tenant.Id; editionId = tenant.EditionId.Value; using (CurrentUnitOfWork.SetTenantId(tenantId)) { var lastPayment = GetLastCompletedSubscriptionPayment(tenantId); paymentPeriodType = lastPayment.GetPaymentPeriodType(); } await _tenantManager.UpdateTenantAsync( tenant.Id, isActive : true, isInTrialPeriod : false, paymentPeriodType, tenant.EditionId.Value, EditionPaymentType.Extend); } var payment = new SubscriptionPayment { TenantId = tenantId, Amount = ConvertFromStripePrice(invoice.AmountPaid), DayCount = (int)paymentPeriodType, PaymentPeriodType = paymentPeriodType, EditionId = editionId, ExternalPaymentId = invoice.ChargeId, Gateway = SubscriptionPaymentGatewayType.Stripe, IsRecurring = true }; payment.SetAsPaid(); await _subscriptionPaymentRepository.InsertAsync(payment); }
public void BuySubscription_IsSuccessful() { // Arrange var subscriptionPaymentTestData = CreateSubscriptionPaymentTestData(); // Act var subscriptionPayment = SubscriptionPayment.Buy( subscriptionPaymentTestData.PayerId, SubscriptionPeriod.Month, "PL", MoneyValue.Of(60, "PLN"), subscriptionPaymentTestData.PriceList); // Assert AssertPublishedDomainEvent <SubscriptionPaymentCreatedDomainEvent>(subscriptionPayment); }
public void BuySubscriptionRenewal_WhenPriceDoesNotExist_IsNotPossible() { // Arrange var subscriptionPaymentTestData = CreateSubscriptionPaymentTestData(); // Act & Assert AssertBrokenRule <PriceOfferMustMatchPriceInPriceListRule>(() => { SubscriptionPayment.Buy( subscriptionPaymentTestData.PayerId, SubscriptionPeriod.Month, "PL", MoneyValue.Of(50, "PLN"), subscriptionPaymentTestData.PriceList); }); }
public async Task <ActionResult> MamarPay(SubscriptionPayment payment) { try { payment.DefaultUrl = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["DefaultURL"]); var MamarBaseUrl = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["MamarBaseUrl"]); payment.PaymentReturnUrl = MamarBaseUrl + "/Subscription/PaymentResponse"; payment.UserName = User.Identity.Name; //Begin Subscription BeginSubscriptionRequestDTO dto = new BeginSubscriptionRequestDTO(payment); var status = await Post(new ADP.MG.Mamar.Web.Models.ApiModel() { Data = JsonConvert.SerializeObject(dto), ApiUrl = "subscription/beginsubscriptionrequest" }); SubscriptionResponseRoot subscriptionResponse = JsonConvert.DeserializeObject <SubscriptionResponseRoot> (((ApiHelper.Response.ApiResponse)status.Data).ResponseResult.ToString()); SubscriptionPay subscriptionPay = new SubscriptionPay(); string serviceRequestId = string.Empty; if (subscriptionResponse.SubscriptionResponse != null && subscriptionResponse.SubscriptionResponse.SubscriptionNo != null && subscriptionResponse.SubscriptionResponse.PaymentStatus != "inprogress") { PaymentProcessBusinessLogic business = new PaymentProcessBusinessLogic(); string[] revenueCodes = new string[1]; revenueCodes[0] = payment.RevenueCode; var vatResponse = business.GetVatDetails(payment.UCID, revenueCodes); SubcriptionEntityResponse entity = subscriptionPay.SubscriptionPayment(payment, subscriptionResponse, vatResponse); entity.PaymentProcessModel = business.InitiateBusinessPayment(entity.PaymentProcessModel); return(Json(entity.PaymentProcessModel.PaymentForm + "<input type='hidden' id='SrId' value='" + serviceRequestId + "'/>", JsonRequestBehavior.AllowGet)); } else { return(Json(new { failed = true, message = subscriptionResponse.msg, paymentStatus = subscriptionResponse.SubscriptionResponse.PaymentStatus }, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { LogErrorInMgApp("Subscription/MamarPay", ex.ToString(), null); return(Json(new { status = false, message = ex.Message }, JsonRequestBehavior.AllowGet)); } }
private void CreatePaidPayment(FintrakERPIMSDemoDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
private void CreatePaidPayment(CruisePMSDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
private void CreatePaidPayment(PodEZTemplateDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
private void CreatePaidPayment(ProductionDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
private void CreatePaidPayment(FrameworkDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
private void CreatePaidPayment(CoreAngularDemoDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
private void CreatePaidPayment(AttendanceDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
public void TestSubscriptions_All_Data() { CheckoutShoppingCartRequest request = new CheckoutShoppingCartRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Sandbox, "USD", 120); //Make sure we can add an item to the cart. Subscription sub = new Subscription(); sub.AddSubscriptionPayment(new SubscriptionPayment(2, 12)); sub.NoChargeAfter = new DateTime(2010, 1, 1); sub.Period = GCheckout.AutoGen.DatePeriod.DAILY; sub.RecurrentItem = new ShoppingCartItem("Sub Item", "Sub Item Description", "Item 1", 0, 3); sub.StartDate = new DateTime(2009, 7, 1); sub.Type = SubscriptionType.merchant; ShoppingCartItem item = request.AddItem("Item 1", "Cool Candy 1", 1, sub); //Console.WriteLine(EncodeHelper.Utf8BytesToString(request.GetXml())); //now deserialize it AutoGen.CheckoutShoppingCart cart = EncodeHelper.Deserialize(request.GetXml()) as AutoGen.CheckoutShoppingCart; //Console.WriteLine(EncodeHelper.Utf8BytesToString(EncodeHelper.Serialize(cart))); foreach (AutoGen.Item ai in cart.shoppingcart.items) { ShoppingCartItem ci = new ShoppingCartItem(ai); Assert.AreEqual(ci.Subscription.NoChargeAfter, sub.NoChargeAfter); SubscriptionPayment sp = new SubscriptionPayment(ai.subscription.payments[0]); SubscriptionPayment dp = sub.Payments[0]; Assert.AreEqual(sp.MaximumCharge, dp.MaximumCharge); Assert.AreEqual(sp.Times, dp.Times); Assert.AreEqual(ci.Subscription.Period, sub.Period); Assert.AreEqual(ci.Subscription.StartDate, sub.StartDate); Assert.AreEqual(ci.Subscription.Type, sub.Type); } sub.NoChargeAfter = null; sub.Period = GCheckout.AutoGen.DatePeriod.QUARTERLY; sub.StartDate = null; sub.Type = SubscriptionType.google; //reset cart = EncodeHelper.Deserialize(request.GetXml()) as AutoGen.CheckoutShoppingCart; //Console.WriteLine(EncodeHelper.Utf8BytesToString(EncodeHelper.Serialize(cart))); foreach (AutoGen.Item ai in cart.shoppingcart.items) { ShoppingCartItem ci = new ShoppingCartItem(ai); //Console.WriteLine(ci.Subscription.NoChargeAfter); Assert.IsFalse(ci.Subscription.NoChargeAfter.HasValue, "NoChargeAfter should be null"); SubscriptionPayment sp = new SubscriptionPayment(ai.subscription.payments[0]); SubscriptionPayment dp = sub.Payments[0]; Assert.AreEqual(sp.MaximumCharge, dp.MaximumCharge); Assert.AreEqual(sp.Times, dp.Times); Assert.AreEqual(ci.Subscription.Period, DatePeriod.QUARTERLY); //Console.WriteLine(ci.Subscription.StartDate); //bug in .net //Assert.IsFalse(ci.Subscription.StartDate.HasValue, "StartDate should be null"); Assert.AreEqual(ci.Subscription.Type, SubscriptionType.google); } }
private void CreatePaidPayment(QiProcureDemoDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }
private void CreatePaidPayment(PhoneBookDemoDbContext context, SubscriptionPayment subscriptionPayment) { subscriptionPayment.SetAsPaid(); context.SubscriptionPayments.Add(subscriptionPayment); }