using POSV.Card;
using POSV.HttpApi;
using POSV.Proxy.Base;
using POSV.Proxy.Common;
using POSV.Rechargefree;
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace POSV.Proxy.Member.Recharge
{
public class CustomRechargeProxy : ProxyBase
{
#region Web API
///
/// 自定义充值
///
///
///
private Tuple> card_recharge_free(RechargeFreeRequest request)
{
Tuple> result = null;
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Card);
SortedList parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "card.recharge.free");
parameters.Add("cardNo", request.CardNo);
parameters.Add("schemeId", request.SchemeId);
parameters.Add("amount", request.Amount.ToString());
parameters.Add("giftPoint", request.GiftPoint.ToString());
parameters.Add("giftAmount", request.GiftAmount.ToString());
parameters.Add("shopNo", request.ShopNo);
parameters.Add("posNo", request.PosNo);
parameters.Add("workerNo", request.WorkerNo);
parameters.Add("sourceSign", request.SourceSign);
var ignoreParameters = new List();
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignoreParameters));
parameters.Add("payType", request.PayType);
parameters.Add("payVoucherNo", request.PayVoucherNo);
LOGGET.Info("卡自定义充值请求:" + JsonUtils.Serialize(parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
LOGGET.Info("卡自定义充值接收:" + response);
//获取成功
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
{
var _errorMessage = PaserErrors(response);
result = new Tuple>(false, _errorMessage, null);
}
}
catch (Exception ex)
{
LOGGET.Error(ex, "卡自定义充值");
result = new Tuple>(false, "卡自定义充值,请检测网络连接", null);
}
return result;
}
///
/// 自定义充值方案查询
///
///
///
private Tuple> card_recharge_scheme_free(RechargeSchemeFreeRequest request)
{
Tuple> result = null;
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Card);
SortedList parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "card.recharge.scheme.free");
parameters.Add("cardTypeId", request.CardTypeId);
parameters.Add("shopNo", request.ShopNo);
parameters.Add("posNo", request.PosNo);
var ignoreParameters = new List();
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignoreParameters));
LOGGET.Info("自定义充值方案查询请求:" + JsonUtils.Serialize(parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
LOGGET.Info("自定义充值方案查询接收:" + response);
//获取成功
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
{
var _errorMessage = PaserErrors(response);
result = new Tuple>(false, _errorMessage, null);
}
}
catch (Exception ex)
{
LOGGET.Error(ex, "自定义充值方案查询");
result = new Tuple>(false, "自定义充值方案查询,请检测网络连接", null);
}
return result;
}
#endregion
///
/// 获取充值方案ID
///
///
///
public ReturnInfo> RechargeSchemeLis(string cardTypeId)
{
ReturnInfo> returnInfo = new ReturnInfo>();
try
{
returnInfo.Code = ReturnState.Failed;
var request = new CardRechargeSchemeListRequest();
request.CardTypeId = cardTypeId;
request.ShopNo = Global.Instance.Authc.StoreNo;
request.PosNo = Global.Instance.Authc.PosNo;
var response = CardUtils.CardRechargeSchemeList(request);
if (!response.Item1)
{
returnInfo.ErrorMessage = response.Item2;
return returnInfo;
}
returnInfo.Code = ReturnState.Succeed;
returnInfo.Data = response.Item3.List;
return returnInfo;
}
catch (Exception ex)
{
LOGGET.Error(ex);
returnInfo.ErrorMessage = ex.Message;
return returnInfo;
}
}
public ReturnInfo RechargeSchemeLis(RechargeSchemeFreeRequest request)
{
ReturnInfo returnInfo = new ReturnInfo();
try
{
var _data = this.card_recharge_scheme_free(request);
if (!_data.Item1)
{
returnInfo.ErrorMessage = _data.Item2;
return returnInfo;
}
returnInfo.Data = _data.Item3.Data;
returnInfo.Code = ReturnState.Succeed;
return returnInfo;
}
catch (Exception ex)
{
throw;
}
}
public ReturnInfo Recharge(RechargeFreeRequest request)
{
ReturnInfo returnInfo = new ReturnInfo();
try
{
var _data = this.card_recharge_free(request);
if (!_data.Item1)
{
returnInfo.ErrorMessage = _data.Item2;
return returnInfo;
}
returnInfo.Data = _data.Item3.Data;
returnInfo.Code = ReturnState.Succeed;
return returnInfo;
}
catch (Exception ex)
{
LOGGET.Error(ex);
returnInfo.ErrorMessage = ex.Message;
return returnInfo;
}
}
}
}