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