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 })); } }
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 })); } }
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 })); } }
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 })); } }
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 })); } }