Ejemplo n.º 1
0
        public virtual void UpdateOrderEbay(OrderEbay orderEbay)
        {
            if (orderEbay == null)
            {
                throw new ArgumentNullException("orderEbay");
            }

            _orderEbayRepository.Update(orderEbay);
        }
Ejemplo n.º 2
0
        public virtual void InsertOrderEbay(OrderEbay orderEbay)
        {
            if (orderEbay == null)
            {
                throw new ArgumentNullException("orderEbay");
            }

            _orderEbayRepository.Insert(orderEbay);
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> OrderEbay(int id)
        {
            var storeScope   = this.GetActiveStoreScopeConfiguration(_storeService, _workContext);
            var ebaySettings = _settingService.LoadSetting <ConfigurationModel>(storeScope);

            var order = _orderService.GetOrderById(id);

            if (order == null || order.Deleted)
            {
                return(RedirectToAction("ListOrder"));
            }

            var listItem    = order.OrderItems;
            var listProduct = new List <Product>();

            foreach (var item in listItem)
            {
                var product = _orderEbayService.CheckProductEbay(item.Product);
                if (product)
                {
                    listProduct.Add(item.Product);
                }
            }

            if (listProduct != null)
            {
                // initiate
                var clientapi = new HttpClient();
                clientapi.BaseAddress = new Uri("https://api.sandbox.ebay.com/");
                clientapi.DefaultRequestHeaders.Clear();
                clientapi.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                clientapi.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ebaySettings.Token);

                var input = new InitiateInput();
                input.contactEmail     = order.ShippingAddress.Email == null ? order.Customer.Email : order.ShippingAddress.Email;
                input.contactFirstName = order.ShippingAddress.FirstName;
                input.contactLastName  = order.ShippingAddress.LastName;

                var shippingAddress = new ShippingAddress();
                shippingAddress.recipient       = order.ShippingAddress.FirstName + " " + order.ShippingAddress.LastName;
                shippingAddress.phoneNumber     = "617 555 1212";
                shippingAddress.addressLine1    = "No. 37, Jalan Gr 1/4, Cassia Garden Residence";
                shippingAddress.city            = "Cyberjaya";
                shippingAddress.stateOrProvince = "Selangor";
                shippingAddress.postalCode      = "62000";
                shippingAddress.country         = "MY";

                var creditCard = new CreditCard();
                creditCard.accountHolderName = "Frank Smith";
                creditCard.cardNumber        = "5100000001598174";
                creditCard.cvvNumber         = "012";
                creditCard.expireMonth       = 10;
                creditCard.expireYear        = 2019;
                creditCard.brand             = "MASTERCARD";

                var billingAddress = new BillingAddress();
                billingAddress.firstName       = "Frank";
                billingAddress.lastName        = "Smith";
                billingAddress.addressLine1    = "3737 Any St";
                billingAddress.city            = "San Jose";
                billingAddress.stateOrProvince = "CA";
                billingAddress.postalCode      = "95134";
                billingAddress.country         = "US";
                creditCard.billingAddress      = billingAddress;

                var lineItemInputs = new List <LineItemInput>();
                foreach (var item in listProduct)
                {
                    var lineItem = new LineItemInput();
                    lineItem.itemId   = _orderEbayService.GetProductSource(item);
                    lineItem.quantity = order.OrderItems.Where(c => c.ProductId == item.Id).FirstOrDefault().Quantity;

                    lineItemInputs.Add(lineItem);
                }

                input.creditCard      = creditCard;
                input.shippingAddress = shippingAddress;
                input.lineItemInputs  = lineItemInputs;

                var json = (object)input;
                HttpResponseMessage Res = await clientapi.PostAsJsonAsync("buy/order/v1/guest_checkout_session/initiate", json);

                if (Res.IsSuccessStatusCode)
                {
                    var EmpResponse = Res.Content.ReadAsStringAsync().Result;
                    var result      = JsonConvert.DeserializeObject <InitiateOutput>(EmpResponse);

                    //place order
                    var clientapiplaceorder = new HttpClient();
                    clientapiplaceorder.BaseAddress = new Uri("https://api.sandbox.ebay.com/");
                    clientapiplaceorder.DefaultRequestHeaders.Clear();
                    clientapiplaceorder.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    clientapiplaceorder.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ebaySettings.Token);

                    HttpResponseMessage Respon = await clientapiplaceorder.PostAsync("buy/order/v1/guest_checkout_session/" + result.checkoutSessionId + "/place_order", null);

                    if (Respon.IsSuccessStatusCode)
                    {
                        var EmpResponsse = Res.Content.ReadAsStringAsync().Result;
                        var resulst      = JsonConvert.DeserializeObject <PlaceOrderOutPut>(EmpResponse);

                        //getPurchaseOrder
                        var clientapiGet = new HttpClient();
                        clientapiGet.BaseAddress = new Uri("https://api.sandbox.ebay.com/");
                        clientapiGet.DefaultRequestHeaders.Clear();
                        clientapiGet.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        clientapiGet.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ebaySettings.Token);

                        HttpResponseMessage Respon1 = await clientapiGet.GetAsync("buy/order/v1/guest_purchase_order/" + resulst.purchaseOrderId);

                        if (Respon.IsSuccessStatusCode)
                        {
                            var EmpResponses = Res.Content.ReadAsStringAsync().Result;
                            var result1      = JsonConvert.DeserializeObject <PurchaseOrderOutPut>(EmpResponse);

                            var ebayOder = new OrderEbay();
                            ebayOder.OrderId       = result1.purchaseOrderId;
                            ebayOder.OrderStatus   = result1.purchaseOrderStatus;
                            ebayOder.PaymentStatus = result1.purchaseOrderPaymentStatus;
                            //ebayOder.PricingSummary = result1.pricingSummary.total.value;
                            ebayOder.RefundedAmount = result1.refundedAmount.value;
                            ebayOder.CreationDate   = result1.purchaseOrderCreationDate;

                            ebayOder.Adjustment       = result1.pricingSummary.adjustment.amount.value;
                            ebayOder.DeliveryCost     = result1.pricingSummary.deliveryCost.value;
                            ebayOder.DeliveryDiscount = result1.pricingSummary.deliveryDiscount.value;
                            ebayOder.Fee           = result1.pricingSummary.fee.value;
                            ebayOder.PriceDiscount = result1.pricingSummary.priceDiscount.value;
                            ebayOder.PriceSubtotal = result1.pricingSummary.priceSubtotal.value;
                            ebayOder.Tax           = result1.pricingSummary.tax.value;
                            ebayOder.Total         = result1.pricingSummary.total.value;

                            _orderEbayService.InsertOrderEbay(ebayOder);

                            foreach (var item in result1.lineItems)
                            {
                                var orderdetai = new OrderEbayDetail();
                                orderdetai.OrderId                  = ebayOder.Id;
                                orderdetai.ItemId                   = item.itemId;
                                orderdetai.LineItemId               = item.lineItemId;
                                orderdetai.LineItemPaymentStatus    = item.lineItemPaymentStatus;
                                orderdetai.LineItemStatus           = item.lineItemStatus;
                                orderdetai.MaxEstimatedDeliveryDate = item.shippingDetail.maxEstimatedDeliveryDate;
                                orderdetai.MinEstimatedDeliveryDate = item.shippingDetail.minEstimatedDeliveryDate;
                                orderdetai.ShippingCarrierCode      = item.shippingDetail.shippingCarrierCode;
                                orderdetai.ShippingServiceCode      = item.shippingDetail.shippingServiceCode;
                                orderdetai.NetPrice                 = item.netPrice.value;
                                orderdetai.Quantity                 = item.quantity;
                                orderdetai.FeedbackPercentage       = item.seller.feedbackPercentage;
                                orderdetai.FeedbackScore            = int.Parse(item.seller.feedbackScore);
                                orderdetai.SellerAccountType        = item.seller.sellerAccountType;
                                orderdetai.Username                 = item.seller.username;

                                orderdetai.Title = item.title;
                                _orderEbayService.InsertOrderEbayDetail(orderdetai);
                            }

                            return(Json(new { success = true, message = "Tạo order thành công" }, JsonRequestBehavior.AllowGet));
                        }
                        else
                        {
                            return(Json(new { success = false, message = "Xảy ra lỗi, vui lòng thử lại" }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        return(Json(new { success = false, message = "Xảy ra lỗi, vui lòng thử lại" }, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    return(Json(new { success = false, message = "Xảy ra lỗi, vui lòng thử lại" }, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                return(Json(new { success = false, message = "Không có sản phẩm nào của ebay trong đơn hàng này" }, JsonRequestBehavior.AllowGet));
            }
        }