Beispiel #1
0
        /// <summary>
        /// 达达请求通用接口
        /// </summary>
        /// <param name="api"></param>
        /// <param name="data"></param>
        /// <param name="app_key"></param>
        /// <param name="app_secret"></param>
        /// <param name="source_id"></param>
        /// <returns></returns>
        public async Task <string> RequestAsync(string api, object data = null, string source_id = null)
        {
            using (var hc = new HttpClient())
            {
                var req = new DadaTrans {
                    Timestamp = UtilHelper.ConvertDateTimeToInt(DateTime.Now)
                };
                req.App_key    = _appData.DadaAppKey;
                req.App_secret = _appData.DadaAppSecret;
                if (_appData.RunMode == "test")
                {
                    req.Source_id = _appData.DadaSourceId;
                }
                else
                {
                    req.Source_id = source_id ?? _appData.DadaSourceId;
                }
                if (data != null)
                {
                    req.Body = JsonConvert.SerializeObject(data, _setting);
                }
                req.Generator();
                var p    = JsonConvert.SerializeObject(req, _setting);
                var body = new StringContent(p);
                body.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var result = await hc.PostAsync(this._domain + api, body);

                return(await result.Content.ReadAsStringAsync());
            }
        }
Beispiel #2
0
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="order"></param>
        /// <param name="business">应该传入点我达商户</param>
        /// <returns></returns>
        public async Task <DWD_Result <DWD_Content> > SendOrderAsync(Order order, Business business)
        {
            order.DistributionFlow++;
            var now      = UtilHelper.ConvertDateTimeToInt(DateTime.Now);
            var code     = GetOrderCode(order);
            var dwdOrder = new DWD_Order
            {
                order_original_id        = code,
                order_create_time        = now,
                order_remark             = (order.Remark + "").ToEncodeSpecial(),
                order_price              = (int)order.Price.Value * 100,
                serial_id                = order.Identifier + "",
                cargo_weight             = 0,
                city_code                = business.DWDStore.city_code,
                seller_id                = business.DWDStore.external_shopid,
                seller_name              = business.Name,
                seller_mobile            = business.Mobile,
                seller_address           = business.Address.ToEncodeSpecial(),
                seller_lat               = business.DWDStore.lat,
                seller_lng               = business.DWDStore.lng,
                consignee_name           = order.GetUserCall().ToEncodeSpecial(),
                consignee_mobile         = order.Phone.ToEncodeSpecial(),
                consignee_address        = order.ReceiverAddress.ToEncodeSpecial(),
                consignee_lat            = order.Lat,
                consignee_lng            = order.Lng,
                delivery_fee_from_seller = 10                 // 需要修改
            };

            if (_enviroment == "test")
            {
                dwdOrder.city_code     = "330100";
                dwdOrder.seller_lng    = 120.165993;
                dwdOrder.seller_lat    = 30.315408;
                dwdOrder.consignee_lng = 120.168513;
                dwdOrder.consignee_lat = 30.315272;
            }
            var products = order.Products.Select(a => new DWD_Product {
                item_name = a.Name, discount_price = (int)(a.Price.Value * 100), production_time = 0, quantity = (int)a.Quantity.Value, unit = "份", unit_price = (int)(a.OldPrice == null ? 0 : a.OldPrice.Value * 100)
            });

            dwdOrder.items = JsonConvert.SerializeObject(products).ToEncodeSpecial();
            dwdOrder.Generate();

            return(await RequestAsync <DWD_Content>("/api/v3/order-send.json", dwdOrder.Sign(), dwdOrder.Params()));
        }
Beispiel #3
0
        /// <summary>
        /// 请求通用接口
        /// </summary>
        /// <param name="api">接口</param>
        /// <param name="sign">签名</param>
        /// <param name="data">数据</param>
        /// <returns></returns>
        public async Task <DWD_Result <T> > RequestAsync <T>(string api, string sign, string data) where T : class, new()
        {
            var trans = new DWD_Trans {
                pk = AppKey, timestamp = UtilHelper.ConvertDateTimeToInt(DateTime.Now)
            };

            trans.sig = UtilHelper.SHA1(Secret + sign + Secret);
            trans.Generate();

            using (var client = new HttpClient())
            {
                var content = new StringContent(trans.Params() + "&" + data);
                content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
                var res = await client.PostAsync(Domain + api, content);

                var result = await res.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <DWD_Result <T> >(result));
            }
        }
Beispiel #4
0
        /// <summary>
        /// 达达获取城市列表
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> DadaCityList()
        {
            using (var hc = new HttpClient())
            {
                var appData = HttpContext.RequestServices.GetService <AppData>();
                var trans   = new DadaTrans {
                    Timestamp = UtilHelper.ConvertDateTimeToInt(DateTime.Now)
                };
                trans.App_key    = appData.DadaAppKey;
                trans.App_secret = appData.DadaAppSecret;
                trans.Source_id  = appData.DadaSourceId;
                trans.Body       = "";
                trans.Generator();
                var p = JsonConvert.SerializeObject(trans, new JsonSerializerSettings {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });
                var body = new StringContent(p);
                body.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var result = await hc.PostAsync(appData.DadaDomain + "/api/cityCode/list", body);

                return(Ok(await result.Content.ReadAsStringAsync()));
            }
        }
Beispiel #5
0
        /// <summary>
        /// 模拟达达
        /// </summary>
        /// <param name="orderCode"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        private async Task <string> DadaSimulation(string orderCode, string url, string msg = null)
        {
            var appData = HttpContext.RequestServices.GetService <AppData>();
            var trans   = new DadaTrans {
                Timestamp = UtilHelper.ConvertDateTimeToInt(DateTime.Now)
            };

            trans.App_key    = appData.DadaAppKey;
            trans.App_secret = appData.DadaAppSecret;
            trans.Source_id  = appData.DadaSourceId;
            trans.Body       = JsonConvert.SerializeObject(new { order_id = orderCode, reason = msg });
            trans.Generator();
            using (var hc = new HttpClient())
            {
                var p = JsonConvert.SerializeObject(trans, new JsonSerializerSettings {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });
                var body = new StringContent(p);
                body.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var result = await hc.PostAsync(appData.DadaDomain + url, body);

                return(await result.Content.ReadAsStringAsync());
            }
        }