using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using POSV.Entity;
using POSV.HttpResponse;
using POSV.Utils;
namespace POSV.HttpApi
{
///
/// POS相关API
///
public class PosApi:BaseApi
{
protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
///
/// POS注册码验证
///
///
///
///
public static Tuple ValidatePollCode(string tenantNo , string authCode)
{
bool isException = false;
try
{
//调用业务系统开放平台
var api = OpenApiUtils.Instance.NextApi(ApiType.Business);
//构建请求参数
SortedList parameters = new SortedList();
parameters.Add("type" , "pollcode");
parameters.Add("tenantId" , tenantNo);
parameters.Add("pollcode" , authCode);
//收到应答
var response = HttpClientUtils.PostAsync(api , api.Open , parameters);
if (Constant.IsSuccessful(response))
{
//转换应答结果为对象
var result = JsonUtils.Deserialize>(response);
//请求通过
if ("1".Equals(result.Status))
{
var pollCode = result.Data;
pollCode.TenantId = tenantNo;
pollCode.AuthCode = authCode;
return new Tuple(true , result.Message , pollCode);
}
else
{
return new Tuple(false , result.Message , null);
}
}
else
{
string errMessage = PaserErrors(response);
return new Tuple(false , errMessage , null);
}
}
catch (Exception ex)
{
isException = true;
logger.Error(ex , ex.Message);
return new Tuple(false , "注册码验证异常" , null);
}
finally
{
//如果POS注冊成功,同步會員系統
if (!isException)
{
}
}
}
public static Tuple MemberRegister(PollCode poll , Authc authc)
{
bool isException = false;
try
{
//调用业务系统开放平台
var api = OpenApiUtils.Instance.NextApi(ApiType.Card);
//构建请求参数
SortedList parameters = new SortedList();
parameters.Add("type" , "posregister");
parameters.Add("tenantId" , authc.TenantId);
parameters.Add("busNo" , authc.TenantId + "00");
parameters.Add("shopId" , authc.StoreId);
parameters.Add("shopNo" , authc.StoreNo);
parameters.Add("shopName" , authc.StoreName);
var storeType = poll.Response.StoreType;
parameters.Add("shopTypeId" , storeType == null ? string.Empty : storeType.Id);
parameters.Add("shopTypeNo" , storeType == null ? string.Empty : storeType.No);
parameters.Add("shopTypeSign" , storeType == null ? string.Empty : storeType.Sign);
parameters.Add("shopTypeName" , storeType == null ? string.Empty : storeType.Name);
parameters.Add("shopAddress" , storeType == null ? string.Empty : storeType.Address);
parameters.Add("posId" , authc.PosId);
parameters.Add("posNo" , authc.PosNo);
parameters.Add("computerName" , authc.CompterName);
parameters.Add("MACAddress" , authc.MacAddress);
parameters.Add("serialNumber" , authc.DiskSerialNumber);
parameters.Add("cpuNumber" , authc.CpuSerialNumber);
var ignore = new List();
ignore.Add("shopAddress");
ignore.Add("posId");
ignore.Add("computerName");
ignore.Add("MACAddress");
ignore.Add("serialNumber");
ignore.Add("cpuNumber");
parameters.Add("sign" , OpenApiUtils.Instance.Sign(api , parameters , ignore));
//收到应答
var response = HttpClientUtils.PostAsync(api , api.Open , parameters);
if (Constant.IsSuccessful(response))
{
//转换应答结果为对象
var result = JsonUtils.Deserialize>(response);
//请求通过
if ("1".Equals(result.Status))
{
return new Tuple(true , result.Message);
}
else
{
return new Tuple(false , result.Message);
}
}
else
{
string errMessage = PaserErrors(response);
return new Tuple(false , errMessage);
}
}
catch (Exception ex)
{
isException = true;
logger.Error(ex , ex.Message);
return new Tuple(false , "会员POS注册异常");
}
finally
{
}
}
///
/// POS注册
///
///
///
///
public static Tuple PosRegister(Authc authc , PollCode pollCode)
{
try
{
//连接开放平台
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
//重置当前的应用密钥
api.AppKey = pollCode.Response.AppKey;
api.AppSecret = pollCode.Response.AppSecret;
//构建请求参数
SortedList parameters = OpenApiUtils.Instance.NewParameters(api);
parameters.Add("method" , "pos.register");
parameters.Add("appSign" , Constant.APP_SIGN);
parameters.Add("terminalType" , Constant.TERMINAL_TYPE);
parameters.Add("pollcode" , pollCode.AuthCode);
parameters.Add("name" , authc.CompterName);
parameters.Add("MACAddress" , authc.MacAddress);
parameters.Add("serialNumber" , authc.DiskSerialNumber);
parameters.Add("cpuNumber" , authc.CpuSerialNumber);
var ignore = new List();
ignore.Add("name");
ignore.Add("MACAddress");
ignore.Add("serialNumber");
ignore.Add("cpuNumber");
parameters.Add("sign" , OpenApiUtils.Instance.Sign(api , parameters , ignore));
string response = HttpClientUtils.PostAsync(api , api.Url , parameters);
if (Constant.IsSuccessful(response))
{
var result = JsonUtils.Deserialize>(response);
//成功
if(result.Status == 1)
{
authc.TenantId = pollCode.TenantId;
authc.StoreId = result.Data.StoreId;
authc.StoreNo = result.Data.StoreNo;
authc.StoreName = result.Data.StoreName;
authc.PosNo = result.Data.PosNo;
authc.PosId = result.Data.PosId;
var storeType = pollCode.Response.StoreType;
authc.StroeTypeId = storeType != null ? storeType.Id : string.Empty;
authc.StroeTypeNo = storeType != null ? storeType.No : string.Empty;
authc.StroeTypeName = storeType != null ? storeType.Name : string.Empty;
authc.StroeTypeSign = storeType != null ? storeType.Sign : string.Empty;
authc.StroeAddress = storeType != null ? storeType.Address : string.Empty;
return new Tuple(true , result.Message , authc);
}
else
{
return new Tuple(false , result.Message , null);
}
}
else
{
string errMessage = PaserErrors(response);
return new Tuple(false , errMessage , null);
}
}
catch (Exception ex)
{
logger.Error(ex , ex.Message);
return new Tuple(false , "POS注册异常" , null);
}
}
}
}