|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using POSV.Entity;
|
|
|
|
|
using POSV.HttpResponse;
|
|
|
|
|
using POSV.Utils;
|
|
|
|
|
|
|
|
|
|
namespace POSV.HttpApi
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// POS相关API
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class PosApi:BaseApi
|
|
|
|
|
{
|
|
|
|
|
protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// POS注册码验证
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="tenantNo"></param>
|
|
|
|
|
/// <param name="authCode"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Tuple<bool , string , PollCode> ValidatePollCode(string tenantNo , string authCode)
|
|
|
|
|
{
|
|
|
|
|
bool isException = false;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//调用业务系统开放平台
|
|
|
|
|
var api = OpenApiUtils.Instance.NextApi(ApiType.Business);
|
|
|
|
|
//构建请求参数
|
|
|
|
|
SortedList<string , string> parameters = new SortedList<string , string>();
|
|
|
|
|
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<OpenResponse<PollCode>>(response);
|
|
|
|
|
|
|
|
|
|
//请求通过
|
|
|
|
|
if ("1".Equals(result.Status))
|
|
|
|
|
{
|
|
|
|
|
var pollCode = result.Data;
|
|
|
|
|
|
|
|
|
|
pollCode.TenantId = tenantNo;
|
|
|
|
|
pollCode.AuthCode = authCode;
|
|
|
|
|
|
|
|
|
|
return new Tuple<bool , string , PollCode>(true , result.Message , pollCode);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return new Tuple<bool , string , PollCode>(false , result.Message , null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errMessage = PaserErrors(response);
|
|
|
|
|
return new Tuple<bool , string , PollCode>(false , errMessage , null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
isException = true;
|
|
|
|
|
|
|
|
|
|
logger.Error(ex , ex.Message);
|
|
|
|
|
|
|
|
|
|
return new Tuple<bool , string , PollCode>(false , "注册码验证异常" , null);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
//如果POS注冊成功,同步會員系統
|
|
|
|
|
if (!isException)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Tuple<bool , string> MemberRegister(PollCode poll , Authc authc)
|
|
|
|
|
{
|
|
|
|
|
bool isException = false;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//调用业务系统开放平台
|
|
|
|
|
var api = OpenApiUtils.Instance.NextApi(ApiType.Card);
|
|
|
|
|
//构建请求参数
|
|
|
|
|
SortedList<string , string> parameters = new SortedList<string , string>();
|
|
|
|
|
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<string>();
|
|
|
|
|
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<OpenResponse<NullObject>>(response);
|
|
|
|
|
|
|
|
|
|
//请求通过
|
|
|
|
|
if ("1".Equals(result.Status))
|
|
|
|
|
{
|
|
|
|
|
return new Tuple<bool , string>(true , result.Message);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return new Tuple<bool , string>(false , result.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errMessage = PaserErrors(response);
|
|
|
|
|
|
|
|
|
|
return new Tuple<bool , string>(false , errMessage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
isException = true;
|
|
|
|
|
|
|
|
|
|
logger.Error(ex , ex.Message);
|
|
|
|
|
|
|
|
|
|
return new Tuple<bool , string>(false , "会员POS注册异常");
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// POS注册
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="authc"></param>
|
|
|
|
|
/// <param name="pollCode"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Tuple<bool , string , Authc> PosRegister(Authc authc , PollCode pollCode)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//连接开放平台
|
|
|
|
|
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
|
|
|
|
|
|
|
|
|
|
//重置当前的应用密钥
|
|
|
|
|
api.AppKey = pollCode.Response.AppKey;
|
|
|
|
|
api.AppSecret = pollCode.Response.AppSecret;
|
|
|
|
|
|
|
|
|
|
//构建请求参数
|
|
|
|
|
SortedList<string , string> 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<string>();
|
|
|
|
|
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<EntityResponse<PosRegister>>(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<bool , string , Authc>(true , result.Message , authc);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return new Tuple<bool , string , Authc>(false , result.Message , null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errMessage = PaserErrors(response);
|
|
|
|
|
return new Tuple<bool , string , Authc>(false , errMessage , null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logger.Error(ex , ex.Message);
|
|
|
|
|
|
|
|
|
|
return new Tuple<bool , string , Authc>(false , "POS注册异常" , null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|