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); } } } }