|
|
|
|
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<string, string> _errorDesc = new Dictionary<string, string>();
|
|
|
|
|
|
|
|
|
|
static GuangChangUtils()
|
|
|
|
|
{
|
|
|
|
|
//------------------------------------------------------
|
|
|
|
|
//系统没有定义的错误代码
|
|
|
|
|
_errorDesc.Add("9999", "应答的报文解析异常");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 订单退款部分退款
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>> VposOrderRefundPart(VposOrderRefundPartRequest request)
|
|
|
|
|
{
|
|
|
|
|
Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>> result = null;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string jsonString = JsonUtils.Serialize(request.RefundPart);
|
|
|
|
|
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
|
|
|
|
|
SortedList<string, string> 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<string>();
|
|
|
|
|
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<GuangChangEntityResponse<VposOrderRefund>>(response);
|
|
|
|
|
if (data.Status == 1)
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(true, data.Message, data);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(false, data.ErrMessage, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errorMessage = PaserErrors(response);
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(false, errorMessage, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logger.Error(ex, "订单退款异常");
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(false, "订单退款异常,请检查网络连接", null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 订单退款
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>> VposOrderRefund(VposOrderRefundRequest request)
|
|
|
|
|
{
|
|
|
|
|
Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>> result = null;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
|
|
|
|
|
SortedList<string, string> 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<string>();
|
|
|
|
|
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<GuangChangEntityResponse<VposOrderRefund>>(response);
|
|
|
|
|
if (data.Status == 1)
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(true, data.Message, data);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(false, data.ErrMessage, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errorMessage = PaserErrors(response);
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(false, errorMessage, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logger.Error(ex, "订单退款异常");
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderRefund>>(false, "订单退款异常,请检查网络连接", null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 美食广场订单明细
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Tuple<bool, string, GuangChangEntityResponse<VposOrderDetail>> VposOrderDetail(VposOrderDetailRequest request)
|
|
|
|
|
{
|
|
|
|
|
Tuple<bool, string, GuangChangEntityResponse<VposOrderDetail>> result = null;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
|
|
|
|
|
SortedList<string, string> 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<string>();
|
|
|
|
|
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<GuangChangEntityResponse<VposOrderDetail>>(response);
|
|
|
|
|
if (data.Status == 1)
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderDetail>>(true, data.Message, data);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderDetail>>(false, data.ErrMessage, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errorMessage = PaserErrors(response);
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderDetail>>(false, errorMessage, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logger.Error(ex, "订单详情信息获取异常");
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, string, GuangChangEntityResponse<VposOrderDetail>>(false, "订单详情获取异常,请检查网络连接", null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 美食广场订单列表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Tuple<bool, string, GuangChangPagerResponse<VposOrder>> VposOrderList(VposOrderListRequest request)
|
|
|
|
|
{
|
|
|
|
|
Tuple<bool, string, GuangChangPagerResponse<VposOrder>> result = null;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
|
|
|
|
|
SortedList<string, string> 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<string>();
|
|
|
|
|
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<GuangChangPagerResponse<VposOrder>>(response);
|
|
|
|
|
if (data.Status == 1)
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangPagerResponse<VposOrder>>(true, data.Message, data);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result = new Tuple<bool, string, GuangChangPagerResponse<VposOrder>>(false, data.ErrMessage, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errorMessage = PaserErrors(response);
|
|
|
|
|
result = new Tuple<bool, string, GuangChangPagerResponse<VposOrder>>(false, errorMessage, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logger.Error(ex, "订单查询异常");
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, string, GuangChangPagerResponse<VposOrder>>(false, "订单询异常,请检查网络连接", null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected static string PaserErrors(string response)
|
|
|
|
|
{
|
|
|
|
|
string result = string.Empty;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
logger.Error(response);
|
|
|
|
|
|
|
|
|
|
Errors mainError = JsonUtils.Deserialize<Errors>(response);
|
|
|
|
|
if (_errorDesc.ContainsKey(mainError.Code))
|
|
|
|
|
{
|
|
|
|
|
result = _errorDesc[mainError.Code];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result = mainError.Message;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<SubErrors> 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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|