using POSV.HttpApi; using POSV.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace POSV.GuangChang { public class GuangChangUtils { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); protected static Dictionary _errorDesc = new Dictionary(); static GuangChangUtils() { //------------------------------------------------------ //系统没有定义的错误代码 _errorDesc.Add("9999", "应答的报文解析异常"); } /// /// 订单退款部分退款 /// /// /// public static Tuple> VposOrderRefundPart(VposOrderRefundPartRequest request) { Tuple> result = null; try { string jsonString = JsonUtils.Serialize(request.RefundPart); OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business); SortedList parameters = OpenApiUtils.Instance.NewParameters(api); parameters.Add("method", "vpos.order.refund.part"); parameters.Add("storeId", request.StoreId); parameters.Add("tradeNo", request.TradeNo); parameters.Add("payRefundNo", request.PayRefundNo); parameters.Add("jsonString", jsonString); var ignoreParameters = new List(); ignoreParameters.Add("tradeNo"); ignoreParameters.Add("payRefundNo"); ignoreParameters.Add("jsonString"); parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignoreParameters)); string response = HttpClientUtils.PostAsync(api, api.Url, parameters); //获取成功 if (Constant.IsSuccessful(response)) { var data = JsonUtils.Deserialize>(response); if (data.Status == 1) { result = new Tuple>(true, data.Message, data); } else { result = new Tuple>(false, data.ErrMessage, data); } } else { string errorMessage = PaserErrors(response); result = new Tuple>(false, errorMessage, null); } } catch (Exception ex) { logger.Error(ex, "订单退款异常"); result = new Tuple>(false, "订单退款异常,请检查网络连接", null); } return result; } /// /// 订单退款 /// /// /// public static Tuple> VposOrderRefund(VposOrderRefundRequest request) { Tuple> result = null; try { OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business); SortedList parameters = OpenApiUtils.Instance.NewParameters(api); parameters.Add("method", "vpos.order.refund"); parameters.Add("storeId", request.StoreId); parameters.Add("tradeNo", request.TradeNo); parameters.Add("payRefundNo", request.PayRefundNo); var ignoreParameters = new List(); ignoreParameters.Add("tradeNo"); ignoreParameters.Add("payRefundNo"); parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignoreParameters)); string response = HttpClientUtils.PostAsync(api, api.Url, parameters); //获取成功 if (Constant.IsSuccessful(response)) { var data = JsonUtils.Deserialize>(response); if (data.Status == 1) { result = new Tuple>(true, data.Message, data); } else { result = new Tuple>(false, data.ErrMessage, data); } } else { string errorMessage = PaserErrors(response); result = new Tuple>(false, errorMessage, null); } } catch (Exception ex) { logger.Error(ex, "订单退款异常"); result = new Tuple>(false, "订单退款异常,请检查网络连接", null); } return result; } /// /// 美食广场订单明细 /// /// /// public static Tuple> VposOrderDetail(VposOrderDetailRequest request) { Tuple> result = null; try { OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business); SortedList parameters = OpenApiUtils.Instance.NewParameters(api); parameters.Add("method", "vpos.order.detail"); parameters.Add("storeId", request.StoreId); parameters.Add("tradeNo", request.TradeNo); var ignoreParameters = new List(); ignoreParameters.Add("tradeNo"); parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignoreParameters)); string response = HttpClientUtils.PostAsync(api, api.Url, parameters); //获取成功 if (Constant.IsSuccessful(response)) { var data = JsonUtils.Deserialize>(response); if (data.Status == 1) { result = new Tuple>(true, data.Message, data); } else { result = new Tuple>(false, data.ErrMessage, data); } } else { string errorMessage = PaserErrors(response); result = new Tuple>(false, errorMessage, null); } } catch (Exception ex) { logger.Error(ex, "订单详情信息获取异常"); result = new Tuple>(false, "订单详情获取异常,请检查网络连接", null); } return result; } /// /// 美食广场订单列表 /// /// /// public static Tuple> VposOrderList(VposOrderListRequest request) { Tuple> result = null; try { OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business); SortedList parameters = OpenApiUtils.Instance.NewParameters(api); parameters.Add("method", "vpos.order.list"); parameters.Add("storeId", request.StoreId); parameters.Add("pageNumber", string.Format("{0}", request.PageNumber)); parameters.Add("pageSize", string.Format("{0}", request.PageSize)); if (request.Mobile!=null &&!"".Equals(request.Mobile)) { parameters.Add("mobile", request.Mobile); } if (request.SeqNo != null && !"".Equals(request.SeqNo)) { parameters.Add("seqNo", request.SeqNo); } parameters.Add("startTime", request.StartTime); parameters.Add("endTime", request.EndTime); parameters.Add("status", string.Format("{0}", request.Status)); var ignoreParameters = new List(); ignoreParameters.Add("pageNumber"); ignoreParameters.Add("pageSize"); ignoreParameters.Add("mobile"); ignoreParameters.Add("seqNo"); ignoreParameters.Add("startTime"); ignoreParameters.Add("endTime"); ignoreParameters.Add("status"); parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignoreParameters)); string response = HttpClientUtils.PostAsync(api, api.Url, parameters); //获取成功 if (Constant.IsSuccessful(response)) { var data = JsonUtils.Deserialize>(response); if (data.Status == 1) { result = new Tuple>(true, data.Message, data); } else { result = new Tuple>(false, data.ErrMessage, data); } } else { string errorMessage = PaserErrors(response); result = new Tuple>(false, errorMessage, null); } } catch (Exception ex) { logger.Error(ex, "订单查询异常"); result = new Tuple>(false, "订单询异常,请检查网络连接", null); } return result; } protected static string PaserErrors(string response) { string result = string.Empty; try { logger.Error(response); Errors mainError = JsonUtils.Deserialize(response); if (_errorDesc.ContainsKey(mainError.Code)) { result = _errorDesc[mainError.Code]; } else { result = mainError.Message; } List subError = mainError.SubErrors; if (subError != null && subError.Count > 0) { SubErrors error = subError[0]; if (_errorDesc.ContainsKey(error.Code)) { result = _errorDesc[error.Code]; } else { result = error.Message; } } } catch (Exception ex) { logger.Error(ex, "非法的错误信息格式"); result = _errorDesc["9999"]; } return result; } } }