private void FillFromFreedomHeader(DeliveryParameters deliveryParameters) { var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient(); var responseOrderInfo = orderApiClient.GetOrderInfo_V2(orderApiClient.CreateCredentials(), deliveryParameters.OrderId); if (responseOrderInfo.Success == 0) { throw new InvalidOperationException(responseOrderInfo.Message); } deliveryParameters.Status = responseOrderInfo.Status; deliveryParameters.ShipMethodId = responseOrderInfo.ShipMethodID; deliveryParameters.ShipMethod = responseOrderInfo.ShipMethod; }
private void FillItemWeights(DeliveryParameters deliveryParameters) { BiWellEntities db = new BiWellEntities(); foreach (var item in deliveryParameters.Items) { var itemWeight = db.ItemWeights.Find(item.ItemId); if (itemWeight == null) { throw new InvalidOperationException($"Весовая характеристика не найдена для {item.ItemId}: {item.Name}"); } item.Weight = itemWeight.Weight; } }
/// <summary> /// 用户调用该接口可实现自己联系发货(线下物流) /// </summary> /// <param name="param"></param> /// <param name="auth"></param> /// <returns></returns> public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth) { Result result = new Result(); var urlstr = url + "/Order/addShipGoods"; var parameters = new NameValueCollection { { "orderCode", param.MallOrderId }, { "expressNo", param.HytExpressNo }, { "key", key } }; var rtn = HttpHelper.PostData(urlstr, parameters); var json = JObject.Parse(rtn); result.Status = Convert.ToBoolean(json["Status"].ToString()); result.Message = Convert.ToString(json["Message"].ToString()); result.StatusCode = Convert.ToInt32(json["StatusCode"].ToString()); return(result); }
private List <DeliveryParameters> ReadOrdersToDeliveryEx() { //Stopwatch stopWatch = new Stopwatch(); //stopWatch.Start(); var result = new List <DeliveryParameters>(); using (var context = new BiWellEntities()) { context.Database.Log = s => Debug.WriteLine(s); //var dateFrom = DateTime.Today.AddDays(-Properties.Settings.Default.Freedom_RecentPeriodLength); var dbOrders = context.order_table .Where(o => o.status == "Posted") .Where(o => o.shipping_method_id != null) .Where(o => o.shipping_method_id != Properties.Settings.Default.Freedom_SelfPickupShipMethodId) .OrderByDescending(o => o.modified_at) .Take(Properties.Settings.Default.BiWell_OrdersToDeliveryCount); foreach (var dbOrder in dbOrders) { var orderToDelivery = new DeliveryParameters { OrderId = dbOrder.order_id, CreatedAt = dbOrder.created_at, ModifiedAt = dbOrder.modified_at }; orderToDelivery.Status = dbOrder.status; orderToDelivery.ShipMethodId = dbOrder.shipping_method_id.Value; orderToDelivery.ShipMethod = context.shipping_method.FirstOrDefault(m => m.id == dbOrder.shipping_method_id.Value)?.description; FillFromFreedomDetails(orderToDelivery); FillItemWeights(orderToDelivery); result.Add(orderToDelivery); } } //stopWatch.Stop(); //TimeSpan ts = stopWatch.Elapsed; return(result); }
private void FillCheckoutParameters(DeliveryParameters deliveryParameters, int orderId) { var checkoutApiClient = new RestClient(Properties.Settings.Default.CheckoutBaseUrl); var request = new RestRequest("service/login/ticket/{apiKey}", Method.GET); request.AddUrlSegment("apiKey", Properties.Settings.Default.CheckoutApiKey); IRestResponse <TicketResponse> response = checkoutApiClient.Execute <TicketResponse>(request); TicketResponse ticketResponse = response.Data; if (ticketResponse.error) { throw new InvalidOperationException("Ошибка получения сессионного ключа: " + ticketResponse.errorMessage); } deliveryParameters.ticket = ticketResponse.ticket; deliveryParameters.callbackURL = $@"http://payment.biwell.ru/app/order/payment/{orderId}"; }
private List <DeliveryParameters> ReadOrdersToDelivery() { var result = new List <DeliveryParameters>(); var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient(); var orderApiCred = orderApiClient.CreateCredentials(); var requestOrderListRecent = new GetOrderListRecentRequest(); requestOrderListRecent.Credentials = orderApiCred; requestOrderListRecent.PeriodType = Properties.Settings.Default.Freedom_RecentPeriodType; requestOrderListRecent.PeriodLength = Properties.Settings.Default.Freedom_RecentPeriodLength; requestOrderListRecent.EvalDateLastModified = true; var responseOrderList = orderApiClient.GetOrderListRecent(requestOrderListRecent); foreach (var orderList in responseOrderList.GetOrderListRecentResult) { var orderToDelivery = new DeliveryParameters { OrderId = orderList.OrderID, CreatedAt = orderList.CreatedDate, ModifiedAt = orderList.LastModifiedDate }; FillFromFreedomHeader(orderToDelivery); if (orderToDelivery.IsPosted && !orderToDelivery.IsSelfPickup) { FillFromFreedomDetails(orderToDelivery); FillItemWeights(orderToDelivery); result.Add(orderToDelivery); } } return(result); }
/// <summary> /// 用户调用该接口可实现自己联系发货(线下物流) /// </summary> /// <param name="param">参数实体</param> /// <param name="auth">授权参数</param> /// <returns>处理结果</returns> /// <remarks>2016-6-11 杨浩 创建</remarks> public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth) { var client = new HaiDaiApi(auth.DealerApp.AppSecret, auth.DealerApp.AppKey, auth.ShopAccount, auth.DealerApp.Extend.Trim()); var result = new Result() { Status = false }; var dicOrder = SetParameters(auth.AuthorizationCode); dicOrder.Add("shipNo", param.HytExpressNo); dicOrder.Add("shipType", param.CompanyCode); dicOrder.Add("sn", param.MallOrderId.ToString()); //返回字段 //订单号 //测试服务器接口 string url = config.ApiUrlTest + "/api/depot/order!addShipGoods.do"; var response = client.ShipGoods(url, dicOrder); if (response.result == 1 || response.message.Contains("已发货")) { result.Status = true; result.StatusCode = 1; result.Message = response.message; } else { result.Status = false; result.StatusCode = -1; result.Message = response.message; } return(result); }
/// <summary> /// 用户调用该接口可实现自己联系发货(线下物流) /// </summary> /// <param name="param">参数实体</param> /// <param name="auth">授权参数</param> /// <returns>处理结果</returns> /// <reamrks>2018-04-10 罗勤瑶 创建</reamrks> public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth) { var result = new Result() { Status = true }; var _param = new Dictionary <string, string>(); //海外购订单发货 GeGeJiaDeliverGoods req = new GeGeJiaDeliverGoods(); //订单ID req.orderNumber = param.MallOrderId; //物流公司名称 req.expressName = param.CompanyCode; //运单号 req.expressNo = param.HytExpressNo; //订单类型,0:渠道订单,1:格格家订单,2:格格团订单,3:格格团全球购订单,4:环球捕手订单,5:燕网订单,6:b2b订单,7:手q,8:云店 string parm = "{\"params\":{\"type\":1,\"orderNumber\":\"" + req.orderNumber + "\",\"expressName\":\"" + req.expressName + "\",\"expressNo\":\"" + req.expressNo + "\"},\"partner\":\"" + auth.DealerApp.AppSecret + "\",\"timestamp\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\"}"; //MD5加密签名 string sign = MD5Encrypt(auth.DealerApp.AppKey + parm + auth.DealerApp.AppKey).ToUpper(); var response = PostJson("http://openapi.gegejia.com:8902/api/order/sendOrder", parm, sign); var _response = JObject.Parse(response.ToString()); if (_response.Property("errMsg") != null) { result.Status = false; result.Message = _response.Property("errMsg").ToString(); result.errCode = _response.Property("errCode").ToString(); } return(result); }
/// <summary> /// 用户调用该接口可实现自己联系发货(线下物流) /// </summary> /// <param name="param">参数实体</param> /// <param name="auth">授权参数</param> /// <returns>处理结果</returns> /// <reamrks>2017-08-16 杨浩 创建</reamrks> public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth) { var result = new Result() { Status = true }; var _param = new Dictionary <string, string>(); string sendId = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100000, 999999).ToString(); string signStr = "appKey=" + auth.DealerApp.AppKey + "&sendID=" + sendId + "&key=" + auth.DealerApp.AppSecret; string sign = MD5Encrypt(signStr).ToUpper(); var companyArry = param.CompanyCode.Split('_'); string logisticsName = ""; string logisticsCode = companyArry[0]; if (companyArry.Length > 1) { logisticsName = companyArry[1]; } string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml += string.Format(@"<HipacPush> <Head> <version>1.0</version> <service>backLogisticNo</service> <sendID>{0}</sendID> <appKey>{1}</appKey> <sign>{2}</sign> </Head> <Body> <Orders> <Order> <orderNum>{3}</orderNum> <LogisticsInfoList> <LogisticsInfo> <logisticsName>{4}</logisticsName> <logisticsNo>{5}</logisticsNo> <logisticsCode>{6}</logisticsCode> </LogisticsInfo> </LogisticsInfoList> </Order> </Orders> </Body> </HipacPush>", sendId, auth.DealerApp.AppKey, sign, param.MallOrderId, logisticsName, param.HytExpressNo, logisticsCode); var xms = new XmlDocumentExtender(); string resultStr = Hyt.Util.WebUtil.PostString(string.Format("http://gw.hipac.cn/pub/{0}04030302/transNotify.do", auth.ShopAccount), xml, "text/xml"); xms.LoadXml(resultStr); /* * * <?xml version="1.0" encoding="UTF-8"?> * <HipacPush> * <Head> * <!-- 版本 默认为1.0 --> * <version>1.0</version> * <!-- 接口名称 --> * <service>backLogisticNo</service> * <!-- 推送报文唯一值YYYYDDMMHHmmss+6位随机数字 --> * <sendID>20171102152126152072</sendID> * <appKey>XYGS20171020</appKey> * <retCode>SUCCESS</retCode> * <sign>7CBCF21556820EEEF40528A6BF522727</sign> * </Head> * <Body> * <bizCode>SUCCESS</bizCode> * <bizMsg>成功</bizMsg> * <Order> * <!-- 订单编号 --> * <orderNum>YT201710311424931334</orderNum> * </Order> * </Body> * </HipacPush> * */ var order = xms.SelectSingleNode("/HipacPush/Body"); if (order["bizCode"].InnerText.ToUpper() != "SUCCESS") { result.Status = false; result.Message = order["bizMsg"].InnerText; } return(result); }
private void FillFromFreedomDetails(DeliveryParameters deliveryParameters) { var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient(); var orderDetailsResponse = orderApiClient.GetOrderDetailsInfo_V2(orderApiClient.CreateCredentials(), deliveryParameters.OrderId); if (orderDetailsResponse.Success == 0) { throw new InvalidOperationException(orderDetailsResponse.Message); } List <DeliveryItem> deliveryItems = new List <DeliveryItem>(); foreach (var responseItem in orderDetailsResponse.OrderDetailsResponse) { DeliveryItem deliveryItem = new DeliveryItem { ItemId = responseItem.ProductID, Name = responseItem.Description, Quantity = responseItem.Quantity, Cost = decimal.Parse(responseItem.TaxableAmount, CultureInfo.InvariantCulture), PayCost = decimal.Parse(responseItem.TaxableAmount, CultureInfo.InvariantCulture) }; FillItemCosts(deliveryItem); deliveryItems.Add(deliveryItem); } var responseOrderInfo = orderApiClient.GetOrderInfo_V2(orderApiClient.CreateCredentials(), deliveryParameters.OrderId); if (responseOrderInfo.Success == 0) { throw new InvalidOperationException(responseOrderInfo.Message); } OrderClientInfo orderClientInfo = OrderClientInfo.ExtractFromOrder(responseOrderInfo); // extracting order client info var onlineApiClient = ByDesignAPIHelper.CreateOnlineAPIClient(); ClientContactInfo contactInfo = new ClientContactInfo(); if (orderClientInfo.IsRep) { var responseRepInfo = onlineApiClient.GetRepInfo_V3(onlineApiClient.CreateCredentials(), orderClientInfo.ClientNumber); if (responseRepInfo.Success == 0) { throw new InvalidOperationException(responseOrderInfo.Message); } contactInfo.FirstName = responseRepInfo.Firstname; contactInfo.LastName = responseRepInfo.Lastname; contactInfo.Email = responseRepInfo.Email; contactInfo.Phone = responseRepInfo.Phone1; } else { var responseCustInfo = onlineApiClient.GetCustomerInfo_v3(onlineApiClient.CreateCredentials(), orderClientInfo.ClientNumber); if (responseCustInfo.Success == 0) { throw new InvalidOperationException(responseOrderInfo.Message); } contactInfo.FirstName = responseCustInfo.FirstName; contactInfo.LastName = responseCustInfo.LastName; contactInfo.Email = responseCustInfo.Email; contactInfo.Phone = responseCustInfo.Phone1; } Address deliveryAddress = new Address { PostIndex = responseOrderInfo.ShipPostalCode, Country = responseOrderInfo.ShipCountry, State = responseOrderInfo.ShipState, Place = responseOrderInfo.ShipCity, Street_1 = responseOrderInfo.ShipStreet1, Street_2 = responseOrderInfo.ShipStreet2 }; DeliveryRecipient recipient = new DeliveryRecipient { FullName = responseOrderInfo.ShipName1, Phone = responseOrderInfo.ShipPhone, Email = responseOrderInfo.ShipEmail }; deliveryParameters.Items = deliveryItems.ToArray(); deliveryParameters.DeliveryAddress = deliveryAddress; deliveryParameters.Recipient = recipient; deliveryParameters.ContactInfo = contactInfo; var responseTotals = orderApiClient.GetTotals(orderApiClient.CreateCredentials(), deliveryParameters.OrderId); if (responseTotals.Success == 0) { throw new InvalidOperationException(responseTotals.Message); } deliveryParameters.ShippingTotal = decimal.Parse(responseTotals.ShippingTotal, CultureInfo.InvariantCulture); }
public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth) { throw new NotImplementedException(); }
/// <summary> /// 用户调用该接口可实现自己联系发货(线下物流) /// </summary> /// <param name="param">参数实体</param> /// <param name="auth">授权参数</param> /// <returns>处理结果</returns> /// <reamrks>2017-08-16 黄杰 创建</reamrks> public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth) { var result = new Result() { Status = true }; var _param = new Dictionary <string, string>(); #region 海外购订单出库 //海外购订单出库 var req = new OverseasOrderSopOutstorageRequest(); //订单ID req.orderId = param.MallOrderId; //流水号 req.tradeNo = ""; var response = client.Execute(req, auth.AuthorizationCode, DateTime.Now.ToLocalTime()); var _response = JObject.Parse(response.Body); #endregion //返回的错误,如果返回的结果为false的话,则进入这里面 if (_response.Property("error_response") != null && _response["error_response"]["code"].ToString() != "10400001") { /*{ * "error_response": { * "code": "10400001", * "zh_desc": "63883901756订单已出库", * "en_desc": "orders have been out of library" * } * }*/ result.Status = false; result.Message = _response["error_response"]["zh_desc"].ToString() + "|code=" + _response["error_response"]["code"].ToString(); result.StatusCode = int.Parse(_response["error_response"]["code"].ToString()); } else { #region 海外购订单发货 #region 京东快递获取 /* * {"logistics_list":[ * * {"sequence":"3","logistics_id":463,"logistics_name":"圆通快递", "logistics_remark":"","agree_flag":"协议物流","is_cod":false}, * {"sequence":"6","logistics_id":465,"logistics_name":"邮政EMS","logistics_remark":"","agree_flag":"协议物流","is_cod":false}, * {"sequence":"8","logistics_id":467,"logistics_name":"顺丰快递","logistics_remark":"","agree_flag":"协议物流","is_cod":false}, * {"sequence":"9","logistics_id":1274,"logistics_name":"厂家自送","logistics_remark":"百世快递","agree_flag":"协议物流","is_cod":false}, * {"sequence":"11","logistics_id":1327,"logistics_name":"韵达快递","logistics_remark":"韵达物流","agree_flag":"协议物流","is_cod":false}, * {"sequence":"1","logistics_id":1499,"logistics_name":"中通速递","logistics_remark":"","agree_flag":"协议物流","is_cod":false}, * {"sequence":"2","logistics_id":1747,"logistics_name":"优速快递","logistics_remark":"","agree_flag":"协议物流","is_cod":false}, * {"sequence":"12","logistics_id":2094,"logistics_name":"快捷速递","logistics_remark":"新的快递公司","agree_flag":"协议物流","is_cod":false}, * {"sequence":"4","logistics_id":2170,"logistics_name":"邮政快递包裹","logistics_remark":"","agree_flag":"协议物流","is_cod":false}, * {"sequence":"7","logistics_id":313214,"logistics_name":"如风达","logistics_remark":"DHL德国邮政","agree_flag":"协议物流","is_cod":false}, * {"sequence":"13","logistics_id":332098,"logistics_name":"用户自提","logistics_remark":"百世汇通","agree_flag":"协议物流","is_cod":false} * * ] ,"vender_id":202210} * */ //var logisticsReqs = new DeliveryLogisticsGetRequest(); //var _res = client.Execute(logisticsReqs,auth.AuthorizationCode, DateTime.Now.ToLocalTime()); #endregion //海外购订单发货 var reqs = new OverseasOrderSopDeliveryRequest(); //订单ID reqs.orderId = req.orderId; //物流公司ID reqs.logisticsId = param.CompanyCode; //运单号 reqs.waybill = param.HytExpressNo; //流水号 reqs.tradeNo = ""; var responses = client.Execute(reqs, auth.AuthorizationCode, DateTime.Now.ToLocalTime()); var _responses = JObject.Parse(responses.Body); #endregion //返回的错误 if (_responses.Property("error_response") != null) { string code = _response["error_response"]["code"].ToString(); if (code == "10400001")//已发货 { result.Status = true; } else { result.Status = false; } result.Message = _responses["error_response"]["zh_desc"].ToString() + "|code=" + code; result.StatusCode = int.Parse(code); } } return(result); }
/// <summary> /// 苏宁订单发货(线下物流) /// </summary> /// <param name="param">参数实体</param> /// <param name="auth">授权参数</param> /// <returns>处理结果</returns> /// <remarks>2017-09-14 黄杰 创建</remarks> public Result SendDelivery(DeliveryParameters param, AuthorizationParameters auth) { var result = new Result() { Status = true }; var _param = new Dictionary <string, string>(); #region 获取订单行项目号 string appMethods = "suning.custom.order.query"; string appRequestTimes = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string versionNos = "v1.2"; //orderStatus订单头状态(10:买家已付款,20:卖家已发货,21:部分发货,30:交易成功,40:交易关闭) string resparams = "<sn_request><sn_body><orderQuery><startTime>" + param.OrderParam.StartDate.ToString("yyyy-MM-dd HH:mm:ss") + "</startTime><pageNo>" + param.OrderParam.PageIndex + "</pageNo><pageSize>" + param.OrderParam.PageSize + "</pageSize><endTime>" + param.OrderParam.EndDate.ToString("yyyy-MM-dd HH:mm:ss") + "</endTime><orderStatus>10</orderStatus></orderQuery></sn_body></sn_request>"; string formats = "json"; string signs = getSignInfo(config.AppSecret, appMethods, appRequestTimes, config.AppKey, versionNos, resparams); string responses = GetPost(appMethods, config.AppKey, signs, resparams, appRequestTimes, formats, versionNos, config.ApiUrl); var trade = JObject.Parse(responses); var trades = trade["sn_responseContent"]["sn_body"]["orderQuery"]; var paymentList = ""; foreach (var i in trades) { //获取orderDetail的值 var job = i["orderDetail"]; for (int s = 0; s < job.Count(); s++) { var item = job[s]; //获取b2c行项目号 paymentList = item["bLineNumber"].ToString(); } } #endregion string appMethod = "suning.custom.seaorderdelivery.add"; string appRequestTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string versionNo = "v1.2"; //deliveryType发货方式按01:海外直邮方式发货02:商家保税区发货;03:苏宁保税区发货; string resparam = "<sn_request><sn_body><seaOrderDelivery><deliveryDetails><phoneIdentifyCode></phoneIdentifyCode><deliveryType>01</deliveryType><expressNo>" + param.HytExpressNo + "</expressNo><orderLineNumber>" + paymentList + "</orderLineNumber><expressCompanyCode>" + param.CompanyCode + "</expressCompanyCode></deliveryDetails><orderCode>" + param.MallOrderId + "</orderCode></seaOrderDelivery></sn_body></sn_request>"; string format = "json"; string sign = getSignInfo(config.AppSecret, appMethod, appRequestTime, config.AppKey, versionNo, resparam); string response = GetPost(appMethod, config.AppKey, sign, resparam, appRequestTime, format, versionNo, config.ApiUrl); var _response = JObject.Parse(response.ToString()); if (_response.Property("sn_responseContent") != null) { result.Status = false; result.Message = "";//_response["sn_responseContent"]["sn_error"]["error_msg"].ToString(); result.errCode = _response["sn_responseContent"]["sn_error"]["error_code"].ToString(); } return(result); }