You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
3.7 KiB
C#

using POSV.Card;
using POSV.HttpApi;
using POSV.Proxy.Base;
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace POSV.Proxy.Member.Trade
{
public class MemberTradeProxy : ProxyBase
{
#region Web API
/// <summary>
/// 消费退款
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
private Tuple<bool, string, StockEntityResponse<CardTraderRefundResponse>> jw_trade_refund(CardTradeRefundRequest request)
{
Tuple<bool, string, StockEntityResponse<CardTraderRefundResponse>> result = null;
try
{
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Card);
SortedList<string, string> parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method", "jw.trade.refund");
parameters.Add("tradeVoucherNo", request.TradeVoucherNo);
parameters.Add("tradeNo", request.TradeNo);
parameters.Add("ticketNo", request.TicketNo);
parameters.Add("totalAmount", request.TotalAmount.ToString());
parameters.Add("totalPoint", request.TotalPoint.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<string>();
parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignoreParameters));
parameters.Add("reason", request.Reason);
parameters.Add("cardInfo", JsonUtils.Serialize(request.CardInfo));
LOGGET.Info("消费退款请求:" + JsonUtils.Serialize(parameters));
string response = HttpClientUtils.PostAsync(api, api.Url, parameters);
LOGGET.Info("消费退款接收:" + response);
//获取成功
if (Constant.IsSuccessful(response))
{
var data = JsonUtils.Deserialize<StockEntityResponse<CardTraderRefundResponse>>(response);
if (data.Status == 1)
{
result = new Tuple<bool, string, StockEntityResponse<CardTraderRefundResponse>>(true, data.Message, data);
}
else
{
result = new Tuple<bool, string, StockEntityResponse<CardTraderRefundResponse>>(false, data.ErrMessage, data);
}
}
else
{
var _errorMessage = PaserErrors(response);
result = new Tuple<bool, string, StockEntityResponse<CardTraderRefundResponse>>(false, _errorMessage, null);
}
}
catch (Exception ex)
{
LOGGET.Error(ex, "消费退款充值");
result = new Tuple<bool, string, StockEntityResponse<CardTraderRefundResponse>>(false, "消费退款,请检测网络连接", null);
}
return result;
}
#endregion
public Tuple<bool, string, CardTraderRefundResponse> MemberTradeRefund(CardTradeRefundRequest request)
{
var _data = this.jw_trade_refund(request);
if (!_data.Item1)
{
return new Tuple<bool, string, CardTraderRefundResponse>(false, string.IsNullOrEmpty(_data.Item3?.ErrMessage) ? _data.Item2 : _data.Item3?.ErrMessage, null);
}
return new Tuple<bool, string, CardTraderRefundResponse>(true, "", _data.Item3.Data);
}
}
}