public void OnPost()
        {
            string       nonce       = Request.Form["nonce"];
            IPaymentsApi PaymentsApi = client.PaymentsApi;
            // Every payment you process with the SDK must have a unique idempotency key.
            // If you're unsure whether a particular payment succeeded, you can reattempt
            // it with the same idempotency key without worrying about double charging
            // the buyer.
            string uuid = NewIdempotencyKey();

            // Monetary amounts are specified in the smallest unit of the applicable currency.
            // This amount is in cents. It's also hard-coded for $1.00,
            // which isn't very useful.
            Money amount = new Money.Builder()
                           .Amount(500L)
                           .Currency("USD")
                           .Build();

            // To learn more about splitting payments with additional recipients,
            // see the Payments API documentation on our [developer site]
            // (https://developer.squareup.com/docs/payments-api/overview).
            CreatePaymentRequest createPaymentRequest = new CreatePaymentRequest.Builder(nonce, uuid, amount)
                                                        .Note("From Square Sample Csharp App")
                                                        .Build();

            try
            {
                CreatePaymentResponse response = PaymentsApi.CreatePayment(createPaymentRequest);
                this.ResultMessage = "Payment complete! " + response.Payment.Note;
            }
            catch (ApiException e)
            {
                this.ResultMessage = e.Message;
            }
        }
        public IActionResult OnPost()
        {
            ICheckoutApi checkoutApi = client.CheckoutApi;

            try
            {
                // create line items for the order
                // This example assumes the order information is retrieved and hard coded
                // You can find different ways to retrieve order information and fill in the following lineItems object.
                List <OrderLineItem> lineItems = new List <OrderLineItem>();

                Money firstLineItemBasePriceMoney = new Money.Builder()
                                                    .Amount(500L)
                                                    .Currency("USD")
                                                    .Build();

                OrderLineItem firstLineItem = new OrderLineItem.Builder("1")
                                              .Name("Test Item A")
                                              .BasePriceMoney(firstLineItemBasePriceMoney)
                                              .Build();

                lineItems.Add(firstLineItem);

                Money secondLineItemBasePriceMoney = new Money.Builder()
                                                     .Amount(1000L)
                                                     .Currency("USD")
                                                     .Build();

                OrderLineItem secondLineItem = new OrderLineItem.Builder("3")
                                               .Name("Test Item B")
                                               .BasePriceMoney(secondLineItemBasePriceMoney)
                                               .Build();

                lineItems.Add(secondLineItem);

                // create Order object with line items
                Order order = new Order.Builder(locationId)
                              .LineItems(lineItems)
                              .Build();

                // create order request with order
                CreateOrderRequest orderRequest = new CreateOrderRequest.Builder()
                                                  .Order(order)
                                                  .Build();

                // create checkout request with the previously created order
                CreateCheckoutRequest createCheckoutRequest = new CreateCheckoutRequest.Builder(
                    Guid.NewGuid().ToString(),
                    orderRequest)
                                                              .Build();

                // create checkout response, and redirect to checkout page if successful
                CreateCheckoutResponse response = checkoutApi.CreateCheckout(locationId, createCheckoutRequest);
                return(Redirect(response.Checkout.CheckoutPageUrl));
            }
            catch (ApiException e)
            {
                return(RedirectToPage("Error", new { error = e.Message }));
            }
        }
Esempio n. 3
0
        public IActionResult Paid()
        {
            Square.Environment environment = this.appSettings.Environment == "sandbox" ?
                                             Square.Environment.Sandbox : Square.Environment.Production;

            // Build base client
            SquareClient client = new SquareClient.Builder()
                                  .Environment(environment)
                                  .AccessToken(this.appSettings.AccessToken)
                                  .Build();


            string       nonce       = Request.Form["nonce"];
            IPaymentsApi PaymentsApi = client.PaymentsApi;
            // Every payment you process with the SDK must have a unique idempotency key.
            // If you're unsure whether a particular payment succeeded, you can reattempt
            // it with the same idempotency key without worrying about double charging
            // the buyer.
            string uuid = this.NewIdempotencyKey();

            // Monetary amounts are specified in the smallest unit of the applicable currency.
            // This amount is in cents. It's also hard-coded for $1.00,
            // which isn't very useful.
            Money amount = new Money.Builder()
                           .Amount(500L)
                           .Currency("USD")
                           .Build();

            // To learn more about splitting payments with additional recipients,
            // see the Payments API documentation on our [developer site]
            // (https://developer.squareup.com/docs/payments-api/overview).
            CreatePaymentRequest createPaymentRequest = new CreatePaymentRequest.Builder(nonce, uuid, amount)
                                                        .Note("From Square Visit Cart App")
                                                        .Build();

            try
            {
                CreatePaymentResponse response = PaymentsApi.CreatePayment(createPaymentRequest);
                PaymentResultModel    model    = new PaymentResultModel
                {
                    ResultMessage = "Payment complete! " + response.Payment.Note
                };

                return(View(model));
            }
            catch (ApiException ex)
            {
                return(View("PaymentError", new ErrorViewModel {
                    Message = ex.Message
                }));
            }
        }
Esempio n. 4
0
        public static CreatePaymentResponse GetChargeResponse(OrderData orderData, string nonce)
        {
            // Every payment you process must have a unique idempotency key.
            // If you're unsure whether a particular payment succeeded, you can reattempt
            // it with the same idempotency key without worrying about double charging
            var idempotencyKey = IdempotencyKey();

            var appliedtotal = orderData.PurchaseInfo.GetXmlPropertyDouble("genxml/appliedtotal");
            var alreadypaid  = orderData.PurchaseInfo.GetXmlPropertyDouble("genxml/alreadypaid");

            // Square uses the smallest denomination of the Currency being used
            // ie. when we take 1.00 USD then we will need to convert to 100
            var currencyFactor = 100;
            var currencyCode   = _settings.GetXmlProperty("genxml/dropdownlist/currencycode");

            //TODO: verify only yen requires an adjustment to the currency factor
            if (currencyCode == "JPY")
            {
                currencyFactor = 1;
            }

            var orderTotal = (long)((appliedtotal - alreadypaid) * currencyFactor);
            var amount     = new Money(orderTotal, currencyCode);

            var note = StoreSettings.Current.SettingsInfo.GetXmlProperty("genxml/textbox/storename") + " Order Number: " + orderData.OrderNumber;

            var bodyAmountMoney = new Money.Builder()
                                  .Amount(orderTotal)
                                  .Currency(currencyCode)
                                  .Build();

            // Creating Payment Request
            // NOTE: OS Order Id is passed in both the ReferenceId & Note field
            // because the reference_id is not visible in the square ui but can be
            // found via the transactions api.
            var body = new CreatePaymentRequest.Builder(
                nonce,
                idempotencyKey,
                bodyAmountMoney)
                       .Autocomplete(true)
                       .LocationId(_locationId)
                       .ReferenceId(orderData.OrderNumber)
                       .Note(note)
                       .Build();

            return(_client.PaymentsApi.CreatePayment(body));
        }
        public async Task <IActionResult> OnPostAsync()
        {
            var request     = JObject.Parse(await new StreamReader(Request.Body).ReadToEndAsync());
            var token       = (String)request["token"];
            var PaymentsApi = client.PaymentsApi;
            // Every payment you process with the SDK must have a unique idempotency key.
            // If you're unsure whether a particular payment succeeded, you can reattempt
            // it with the same idempotency key without worrying about double charging
            // the buyer.
            string uuid = NewIdempotencyKey();

            // Get the currency for the location
            var retrieveLocationResponse = await client.LocationsApi.RetrieveLocationAsync(locationId : locationId);

            var currency = retrieveLocationResponse.Location.Currency;

            // Monetary amounts are specified in the smallest unit of the applicable currency.
            // This amount is in cents. It's also hard-coded for $1.00,
            // which isn't very useful.
            var amount = new Money.Builder()
                         .Amount(100L)
                         .Currency(currency)
                         .Build();

            // To learn more about splitting payments with additional recipients,
            // see the Payments API documentation on our [developer site]
            // (https://developer.squareup.com/docs/payments-api/overview).
            var createPaymentRequest = new CreatePaymentRequest.Builder(
                sourceId: token,
                idempotencyKey: uuid,
                amountMoney: amount)
                                       .Build();

            try
            {
                var response = await PaymentsApi.CreatePaymentAsync(createPaymentRequest);

                return(new JsonResult(new { payment = response.Payment }));
            }
            catch (ApiException e)
            {
                return(new JsonResult(new { errors = e.Errors }));
            }
        }
Esempio n. 6
0
        public ActionResult SquarePayment(string id)
        {
            if (id == null)
            {
                return(RedirectToAction("/Home/Login"));
            }

            Models.Order order = db.Orders.Where(i => i.ID == id).First();
            if (order == null)
            {
                return(HttpNotFound());
            }

            Models.OrderBilling billing = db.Billing.FirstOrDefault(i => i.orderId == order.orderId);
            if (billing == null)
            {
                return(HttpNotFound());
            }

            CheckoutSquare square      = new CheckoutSquare();
            ICheckoutApi   checkoutApi = square.client.CheckoutApi;

            try
            {
                // create line items for the order
                // This example assumes the order information is retrieved and hard coded
                // You can find different ways to retrieve order information and fill in the following lineItems object.
                List <OrderLineItem> lineItems = new List <OrderLineItem>();

                Money firstLineItemBasePriceMoney = new Money.Builder()
                                                    .Amount(order.billing.totalChargesSquareAPI)
                                                    .Currency("USD")
                                                    .Build();

                OrderLineItem firstLineItem = new OrderLineItem.Builder("1")
                                              .Name(order.service)
                                              .BasePriceMoney(firstLineItemBasePriceMoney)
                                              .Build();

                lineItems.Add(firstLineItem);

                // create Order object with line items
                Square.Models.Order squareOrder = new Square.Models.Order.Builder(square.locationId)
                                                  .LineItems(lineItems)
                                                  .Build();

                // create order request with order
                CreateOrderRequest orderRequest = new CreateOrderRequest.Builder()
                                                  .Order(squareOrder)
                                                  .IdempotencyKey(order.contractNumber)
                                                  .Build();

                // create checkout request with the previously created order
                CreateCheckoutRequest createCheckoutRequest = new CreateCheckoutRequest.Builder(
                    Guid.NewGuid().ToString(),
                    orderRequest)
                                                              .RedirectUrl(WebConfigurationManager.AppSettings["SQUARE_RedirectUrl"] + id)
                                                              .MerchantSupportEmail("*****@*****.**")
                                                              .PrePopulateBuyerEmail(order.email)
                                                              .Build();

                // create checkout response, and redirect to checkout page if successful
                CreateCheckoutResponse response = checkoutApi.CreateCheckout(square.locationId, createCheckoutRequest);

                // Save checkout on the base
                db.CreatePayment(order.orderId, response.Checkout.Id, "SQUARE API");

                return(Redirect(response.Checkout.CheckoutPageUrl));
            }
            catch (ApiException e)
            {
                return(RedirectToAction("Error", new { error = e.Message }));
            }
        }
Esempio n. 7
0
        public IActionResult OnPost()
        {
            ICheckoutApi checkoutApi = client.CheckoutApi;

            try
            {
                var rand  = new Random();
                int rand1 = rand.Next(100000, 999999);
                int id    = HttpContext.Session.GetInt32("logID").GetValueOrDefault();
                DropShipModels.User CurrUser = dbContext.Users
                                               .FirstOrDefault(user => user.UserId == id);
                if (CurrUser != null)
                {
                    var RetrievedCart = dbContext.Carts.Where(c => c.UserId == CurrUser.UserId)
                                        .Include(carts => carts.P)
                                        .ToList();
                    string OrderNumberTemp       = id.ToString() + '-' + rand1.ToString();
                    string ProductBoughtListTemp = "";

                    List <OrderLineItem> lineItems = new List <OrderLineItem>();
                    foreach (var j in RetrievedCart)
                    {
                        Money ItemPrice = new Money.Builder()
                                          .Amount(j.P.ProductPrice * 100)
                                          .Currency("USD")
                                          .Build();

                        OrderLineItem LineItem = new OrderLineItem.Builder(j.Quantity.ToString())
                                                 .Name(j.P.ProductName)
                                                 .BasePriceMoney(ItemPrice)
                                                 .Note("Order Number     " + OrderNumberTemp)
                                                 .Build();

                        lineItems.Add(LineItem);
                        dbContext.Carts.Remove(j);
                        dbContext.SaveChanges();
                        ProductBoughtListTemp += j.P.ProductName + " x " + j.Quantity + ", ";
                    }
                    ProductBoughtListTemp = ProductBoughtListTemp.Remove(ProductBoughtListTemp.Length - 1, 1);
                    ProductBoughtListTemp = ProductBoughtListTemp.Remove(ProductBoughtListTemp.Length - 1, 1);
                    DropShipModels.Order newOrder = new DropShipModels.Order();
                    newOrder.UserId            = id;
                    newOrder.OrderNumber       = OrderNumberTemp.ToString();
                    newOrder.ProductBoughtList = ProductBoughtListTemp;
                    newOrder.Filled            = false;
                    newOrder.ShippingMethod    = "Standard";
                    dbContext.Orders.Add(newOrder);
                    dbContext.SaveChanges();
                    // create line items for the order.

                    // create Order object with line items
                    Order order = new Order.Builder(locationId)
                                  .LineItems(lineItems)
                                  .Build();

                    // create order request with order
                    CreateOrderRequest orderRequest = new CreateOrderRequest.Builder()
                                                      .Order(order)
                                                      .Build();

                    // create checkout request with the previously created order
                    CreateCheckoutRequest createCheckoutRequest = new CreateCheckoutRequest.Builder(
                        Guid.NewGuid().ToString(),
                        orderRequest)
                                                                  .AskForShippingAddress(true)
                                                                  // .RedirectUrl("www.google.com")
                                                                  .PrePopulateBuyerEmail(CurrUser.Email)
                                                                  .MerchantSupportEmail("*****@*****.**")
                                                                  .Build();
                    // create checkout response, and redirect to checkout page if successful
                    CreateCheckoutResponse response = checkoutApi.CreateCheckout(locationId, createCheckoutRequest);
                    return(Redirect(response.Checkout.CheckoutPageUrl));
                }

                else
                {
                    if (HttpContext.Session.GetString("TempCart") != null)
                    {
                        var cartStr = HttpContext.Session.GetString("TempCart");
                        List <List <int> > cart1                 = JsonConvert.DeserializeObject <List <List <int> > >(cartStr);
                        string             OrderNumberTemp       = "0-" + rand1.ToString();
                        string             ProductBoughtListTemp = "";

                        List <OrderLineItem> lineItems = new List <OrderLineItem>();
                        foreach (var k in cart1)
                        {
                            string ProdName  = dbContext.Products.FirstOrDefault(p => p.ProductId == k[0]).ProductName;
                            Money  ItemPrice = new Money.Builder()
                                               .Amount(dbContext.Products.FirstOrDefault(p => p.ProductId == k[0]).ProductPrice * 100)
                                               .Currency("USD")
                                               .Build();

                            OrderLineItem LineItem = new OrderLineItem.Builder(k[1].ToString())
                                                     .Name(ProdName)
                                                     .BasePriceMoney(ItemPrice)
                                                     .Note("Order Number     " + OrderNumberTemp)
                                                     .Build();

                            lineItems.Add(LineItem);
                            ProductBoughtListTemp += ProdName + " x " + k[1].ToString() + ", ";
                        }
                        DropShipModels.User tempUser = dbContext.Users.FirstOrDefault(user => user.Password == "Temp");
                        ProductBoughtListTemp = ProductBoughtListTemp.Remove(ProductBoughtListTemp.Length - 1, 1);
                        ProductBoughtListTemp = ProductBoughtListTemp.Remove(ProductBoughtListTemp.Length - 1, 1);
                        DropShipModels.Order newOrder = new DropShipModels.Order();
                        newOrder.UserId            = tempUser.UserId;
                        newOrder.OrderNumber       = OrderNumberTemp.ToString();
                        newOrder.ProductBoughtList = ProductBoughtListTemp;
                        newOrder.Filled            = false;
                        newOrder.ShippingMethod    = "Standard";
                        dbContext.Orders.Add(newOrder);
                        dbContext.SaveChanges();
                        // create line items for the order
                        // This example assumes the order information is retrieved and hard coded
                        // You can find different ways to retrieve order information and fill in the following lineItems object.

                        // create Order object with line items
                        Order order = new Order.Builder(locationId)
                                      .LineItems(lineItems)
                                      .Build();

                        // create order request with order
                        CreateOrderRequest orderRequest = new CreateOrderRequest.Builder()
                                                          .Order(order)
                                                          .Build();
                        // create checkout request with the previously created order
                        // var tempPerson = new Person();
                        CreateCheckoutRequest createCheckoutRequest = new CreateCheckoutRequest.Builder(
                            Guid.NewGuid().ToString(),
                            orderRequest)
                                                                      .AskForShippingAddress(true)
                                                                      .MerchantSupportEmail("*****@*****.**")
                                                                      .Build();
                        // create checkout response, and redirect to checkout page if successful
                        CreateCheckoutResponse response = checkoutApi.CreateCheckout(locationId, createCheckoutRequest);
                        return(Redirect(response.Checkout.CheckoutPageUrl));
                    }
                    else
                    {
                        return(Redirect("/"));
                    }
                }
            }
            catch (ApiException e)
            {
                return(RedirectToPage("Error", new { error = e.Message }));
            }
        }