示例#1
0
 /// <summary>
 /// Reads the Json response and applies it to local properties.
 /// </summary>
 /// <param name="result"></param>
 private AccountServiceResponse ParseResult(string result)
 {
     try
     {
         AccountServiceResponse res = JsonUtility.FromJson <AccountServiceResponse>(result);
         // Unity's JsonUtility does not support deserializing Dictionary, we manually parse it, dirty & ugly af, better then using a 3rd party lib
         if (res.ReturnCode == AccountServiceReturnCodes.Success)
         {
             string[] parts = result.Split(new[] { "\"ApplicationIds\":{" }, StringSplitOptions.RemoveEmptyEntries);
             parts = parts[1].Split('}');
             string applicationIds = parts[0];
             if (!string.IsNullOrEmpty(applicationIds))
             {
                 parts = applicationIds.Split(new[] { ',', '"', ':' }, StringSplitOptions.RemoveEmptyEntries);
                 res.ApplicationIds = new Dictionary <string, string>(parts.Length / 2);
                 for (int i = 0; i < parts.Length; i = i + 2)
                 {
                     res.ApplicationIds.Add(parts[i], parts[i + 1]);
                 }
             }
             else
             {
                 Debug.LogError("The server did not return any AppId, ApplicationIds was empty in the response.");
                 return(null);
             }
         }
         return(res);
     }
     catch (Exception ex) // probably JSON parsing exception, check if returned string is valid JSON
     {
         Debug.LogException(ex);
         return(null);
     }
 }
示例#2
0
 public ActionResult Close(CloseAccount model)
 {
     try
     {
         AccountServiceResponse rsp = model.Save();
         if (string.IsNullOrWhiteSpace(rsp.CodeText))
         {
             rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
         }
         return(Json(rsp));
     }
     catch (ConflictException ex)
     {
         _logger.Error(LogTypes.AccountClose, ex);
         AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.AccountConflict);
         rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
         return(Json(rsp));
     }
     catch (Exception ex)
     {
         _logger.Error(LogTypes.AccountClose, ex);
         AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError);
         rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
         return(Json(rsp));
     }
 }
    /// <summary>
    /// Reads the Json response and applies it to local properties.
    /// </summary>
    /// <param name="result"></param>
    private void ParseResult(string result)
    {
        if (string.IsNullOrEmpty(result))
        {
            this.Message = "Server's response was empty. Please register through account website during this service interruption.";
            return;
        }

        try
        {
            AccountServiceResponse res = UnityEngine.JsonUtility.FromJson <AccountServiceResponse>(result);
            this.ReturnCode = res.ReturnCode;
            this.Message    = res.Message;
            if (this.ReturnCode == 0)
            {
                // returnCode == 0 means: all ok. message is new AppId
                this.AppId = this.Message;
            }
            else
            {
                // any error gives returnCode != 0
                this.AppId = string.Empty;
            }
        }
        catch (Exception ex) // probably JSON parsing exception, check if returned string is valid JSON
        {
            this.ReturnCode = -1;
            this.Message    = ex.Message;
        }
    }
示例#4
0
        public ActionResult AreaRecharing(RechargingAccount model)
        {
            try
            {
                string pageHtml          = string.Empty;
                int    tatolCount        = 0;
                List <RechargingLog> rsp = model.AreaRecharges(out pageHtml, out tatolCount);

                return(Json(new { ModelList = rsp, html = pageHtml, tatolCount = tatolCount }));
            }
            catch (ConflictException ex)
            {
                _logger.Error(LogTypes.AccountRecharge, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.AccountConflict);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
            catch (Exception ex)
            {
                _logger.Error(LogTypes.AccountRecharge, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
        }
示例#5
0
        public AccountServiceResponse InnerExecute(Func <IAccountDealService, AccountServiceResponse> func)
        {
            try
            {
                var database = new Database("ecard");
                using (var instance = new DatabaseInstance(database))
                {
                    instance.BeginTransaction();
                    IAccountDealService accountDealService = GetAccountDealService(instance);

                    AccountServiceResponse rsp = func(accountDealService);
                    if (rsp.Code == ResponseCode.Success)
                    {
                        instance.Commit();
                    }
                    return(rsp);
                }
            }
            catch (Exception ex)
            {
                Log.Error("error", ex);
                return(new AccountServiceResponse(ResponseCode.SystemError)
                {
                    CodeText = ex.Message
                });
            }
        }
示例#6
0
        public ActionResult SystemPay(SystemPayAccount item)
        {
            //string serialNo = SerialNoHelper.Create();
            try
            {
                //var account = _accountService.GetByName(item.AccountName);
                //var rsp = account != null ? _accountDealService.Pay(new PayRequest(item.AccountName, "", item.PosName, item.Amount, serialNo, account.AccountToken, Constants.SystemShopName) { IsForce = true }) : new AccountServiceResponse(ResponseCode.NonFoundAccount);
                AccountServiceResponse rsp = item.DoPay();
                if (string.IsNullOrWhiteSpace(rsp.CodeText))
                {
                    rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                }
                if (rsp.Code == 0)
                {
                    rsp.CodeText = "交易成功";
                }
                return(Json(rsp));
            }

            catch (Exception ex)
            {
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
        }
示例#7
0
 private void RegisterWithEmailSuccessCallback(AccountServiceResponse res)
 {
     EditorUtility.ClearProgressBar();
     if (res.ReturnCode == AccountServiceReturnCodes.Success)
     {
         string key = ((int)ServiceTypes.Chat).ToString();
         string appId;
         if (res.ApplicationIds.TryGetValue(key, out appId))
         {
             currentSettings.AppId = appId;
             EditorUtility.SetDirty(currentSettings);
             this.showRegistrationDone = true;
             Selection.objects         = new UnityEngine.Object[] { currentSettings };
         }
         else
         {
             DisplayErrorMessage("Registration successful, but no Chat AppId returned");
         }
     }
     else if (res.ReturnCode == 12) // todo: gather all error codes
     {
         this.showDashboardLink = true;
     }
     else
     {
         DisplayErrorMessage(res.Message);
     }
 }
示例#8
0
        public AccountServiceResponse DoRecharge()
        {
            var user = SecurityHelper.GetCurrentUser();

            if (user is ShopUserModel)
            {
                var shopUser = user.CurrentUser as ShopUser;
                var shop     = ShopService.GetById(shopUser.ShopId);
                if (shop == null)
                {
                    return new AccountServiceResponse(-1)
                           {
                               CodeText = "无效商户"
                           }
                }
                ;
                Account account     = null;
                var     accountUser = (AccountUser)_membershipService.GetByMobile(AccountName.Trim());
                if (accountUser != null)
                {
                    account = AccountService.QueryByOwnerId(accountUser).FirstOrDefault();
                    //return new AccountServiceResponse(ResponseCode.NonFoundAccount) { CodeText = "找不到会员,请检查输入是否正确,会员卡状态是否正常!" };
                }
                else
                {
                    account = AccountService.GetByName(AccountName.Trim());
                }
                // var account = AccountService.GetByName(AccountName.Trim());
                if (account == null || account.State != AccountStates.Normal)
                {
                    return new AccountServiceResponse(ResponseCode.NonFoundAccount)
                           {
                               CodeText = "找不到会员,请检查输入是否正确,会员卡状态是否正常!"
                           }
                }
                ;
                var sn = SerialNoHelper.Create();
                AccountServiceResponse rsp = new AccountServiceResponse(0);
                rsp = AccountDealService.Recharge(new PayRequest(account.Name, "", "", Amount, sn, "", shop.Name, shop.Name), true);
                if (rsp.Code == ResponseCode.Success)
                {
                    //做日志
                    // Logger.LogWithSerialNo(LogTypes.Deal, sn, account.AccountId, rsp.AccountType, account.Name);
                }
                return(rsp);
            }
            else if (user is AdminUserModel)
            {
                return(Save());
            }
            else
            {
                return(new AccountServiceResponse(-1)
                {
                    CodeText = "无效商户"
                });
            }
        }
示例#9
0
 public RollbackType Rollback(int id)
 {
     try
     {
         using (var tran = TransactionHelper.BeginTransaction())
         {
             var serialNo    = SerialNoHelper.Create();
             var shopDealLog = this.ShopDealLogService.GetById(id);
             if (shopDealLog == null)
             {
                 throw new Exception(Localize("nofoundDeal"));
             }
             var dealLog = this.DealLogService.GetById(shopDealLog.Addin);
             if (dealLog == null)
             {
                 throw new Exception(Localize("nofoundDeal"));
             }
             var account = AccountService.GetById(dealLog.AccountId);
             if (account == null)
             {
                 throw new Exception(Localize("nofoundAccount"));
             }
             AccountServiceResponse rsp = null;
             RollbackType           r   = RollbackType.None;
             if (dealLog.SubmitTime.Date != DateTime.Now.Date)
             {
                 rsp = AccountDealService.CancelPay(new CancelPayRequest(dealLog.AccountName, "", dealLog.SourcePosName, Math.Abs(dealLog.Amount), serialNo, dealLog.SerialNo, account.AccountToken,
                                                                         dealLog.SourceShopName)
                 {
                     IsForce = true
                 });
                 r = RollbackType.Cancel;
             }
             else
             {
                 rsp = AccountDealService.Roolback(new PayRequest_(dealLog.AccountName, "", dealLog.SourcePosName, Math.Abs(dealLog.Amount), serialNo, dealLog.SerialNo, account.AccountToken,
                                                                   dealLog.SourceShopName)
                 {
                     IsForce = true
                 });
                 r = RollbackType.Undo;
             }
             if (rsp.Code != ResponseCode.Success)
             {
                 throw new Exception(string.Format("{0}", ModelHelper.GetBoundText(rsp, x => x.Code)));
             }
             LogHelper.LogWithSerialNo(LogTypes.DealLogRollback, serialNo, dealLog.DealLogId, dealLog.SerialServerNo, dealLog.SerialNo);
             tran.Commit();
             return(r);
         }
     }
     catch (Exception ex)
     {
         Logger.Error(LogTypes.DealLogRollback, ex);
         return(RollbackType.None);
     }
 }
示例#10
0
        protected override byte[] OnGetData()
        {
            if (Result == ResponseCode.Success && !BadDeals.Check(BatchNo, SerialNo, ShopName, PosName))
            {
                string accountName = AccountName.Substring(0, AccountNameLength);
                string token       = GetToken();
                _i8583.settabx_data(1, accountName);

                //KeysEntry key = GetCurrentKey();
                var       PosKey = Context.AccountDealService.GetPosKey(ShopName, PosName);
                KeysEntry key    = PosKey == null ? null : new KeysEntry()
                {
                    Key1 = PosKey.Key1, Key2 = PosKey.Key2, PosName = PosName, ShopName = ShopName
                };
                if (Result == ResponseCode.Success)
                {
                    string passwrod = "";
                    if (this.AccountName.IndexOf("d") > -1)
                    {
                        passwrod = GetPassword(accountName);//´ÅÌõ¿¨
                    }
                    else
                    {
                        passwrod = GetPassword(this.AccountName);//IC¿¨
                    }
                    string seriaNo = _i8583.gettabx_data(60);
                    if (seriaNo.Length > 12)
                    {
                        seriaNo = seriaNo.Substring(0, 12);
                    }
                    AccountServiceResponse rsp =
                        Context.AccountDealService.CancelDonePrePay(new CancelPayRequest(accountName, passwrod, PosName, DealAmount,
                                                                                         BatchNo + SerialNo, seriaNo,
                                                                                         token, ShopName));
                    Result = rsp.Code;
                    //this._i8583.settabx_data(37, rsp.DealCode);

                    if (Result == ResponseCode.Success)
                    {
                        this._i8583.settabx_data(37, SerialNo);
                        SerialServerNo = rsp.SerialServerNo.PadLeft(12, '0');
                        Amount         = rsp.Amount;
                        var i8583 = _i8583.Clone();
                        i8583.settabx_data(63, "");
                        var    data = i8583.Pack8583("0210");
                        string mac  = LCDES.MACEncrypt(data, key.Key2, 2);
                        mac = Helper.WrapMac("cancel_done_prepay", mac);
                        _i8583.settabx_data(63, mac);
                    }
                }
            }
            return(_i8583.Pack8583("0210"));
        }
    private void RegisterWithEmailSuccessCallback(AccountServiceResponse res)
    {
        EditorUtility.ClearProgressBar();
        if (res.ReturnCode == AccountServiceReturnCodes.Success)
        {
            string key = ((int)ServiceTypes.Pun).ToString();
            string appId;
            if (res.ApplicationIds.TryGetValue(key, out appId))
            {
                this.mailOrAppId = appId;
                PhotonNetwork.PhotonServerSettings.UseCloud(this.mailOrAppId);
                key = ((int)ServiceTypes.Chat).ToString();
                if (res.ApplicationIds.TryGetValue(key, out appId))
                {
                    PhotonNetwork.PhotonServerSettings.ChatAppID = appId;
                }
                else if (PhotonEditorUtils.HasChat)
                {
                    Debug.LogWarning("Registration successful but no Chat AppId returned");
                }
                key = ((int)ServiceTypes.Voice).ToString();
                if (res.ApplicationIds.TryGetValue(key, out appId))
                {
                    PhotonNetwork.PhotonServerSettings.VoiceAppID = appId;
                }
                else if (PhotonEditorUtils.HasVoice)
                {
                    Debug.LogWarning("Registration successful but no Voice AppId returned");
                }
                PhotonEditor.SaveSettings();
                this.photonSetupState = PhotonSetupStates.GoEditPhotonServerSettings;
            }
            else
            {
                DisplayErrorMessage("Registration successful but no PUN AppId returned");
            }
        }
        else
        {
            PhotonEditor.SaveSettings();

            if (res.ReturnCode == AccountServiceReturnCodes.EmailAlreadyRegistered)
            {
                this.photonSetupState = PhotonSetupStates.EmailAlreadyRegistered;
            }
            else
            {
                DisplayErrorMessage(res.Message);
            }
        }
    }
示例#12
0
        protected override byte[] OnGetData()
        {
            if (this.Result == ResponseCode.Success && !BadDeals.Check(BatchNo, SerialNo, ShopName, PosName))
            {
                string accountName = this.AccountName.Substring(0, AccountNameLength);
                string token       = GetToken();
                _i8583.settabx_data(1, accountName);

                //KeysEntry key = GetCurrentKey();
                var       PosKey = Context.AccountDealService.GetPosKey(ShopName, PosName);
                KeysEntry key    = PosKey == null ? null : new KeysEntry()
                {
                    Key1 = PosKey.Key1, Key2 = PosKey.Key2, PosName = PosName, ShopName = ShopName
                };

                if (Result == ResponseCode.Success)
                {
                    var    seriaNo  = BatchNo + SerialNo;
                    string passwrod = "";
                    if (this.AccountName.IndexOf("d") > -1)
                    {
                        passwrod = GetPassword(accountName);//´ÅÌõ¿¨
                    }
                    else
                    {
                        passwrod = GetPassword(this.AccountName);//IC¿¨
                    }
                    //var pos = _posRepository.GetPosByName(PosName);
                    AccountServiceResponse rsp =
                        Context.AccountDealService.DonePrePay(new Ecard.Infrastructure.PrePayRequest(BatchNo + this.OldSerialNo, this.OldPayDate, accountName, passwrod, PosName, DealAmount, seriaNo,
                                                                                                     token, ShopName));
                    //rsp = _accountService.Pay(pos, ShopName, accountName, passwrod, DealAmount, dealItem, token);

                    Result = rsp.Code;
                    if (Result == ResponseCode.Success)
                    {
                        this._i8583.settabx_data(37, SerialNo);
                        SerialServerNo = rsp.SerialServerNo.PadLeft(12, '0');
                        Amount         = rsp.Amount;
                        var i8583 = _i8583.Clone();
                        i8583.settabx_data(63, "");
                        var    data = i8583.Pack8583("0210");
                        string mac  = LCDES.MACEncrypt(data, key.Key2, 2);
                        mac = Helper.WrapMac("done_prepay", mac);
                        _i8583.settabx_data(63, mac);
                    }
                }
            }
            return(_i8583.Pack8583("0210"));
        }
示例#13
0
 public static string Format(string template, string typeText, AccountServiceResponse rsp)
 {
     if (rsp == null)
     {
         return(template.Replace("#amount#", "")
                .Replace("#point#", "")
                .Replace("#type#", "")
                .Replace("#now#", DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒")));
     }
     return(template.Replace("#amount#", rsp.Amount.ToString())
            .Replace("#point#", rsp.Point.ToString())
            .Replace("#type#", typeText)
            .Replace("#now#", DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒")));
 }
示例#14
0
        public ActionResult QueryWithoutToken(QueryAccount item)
        {
            try
            {
                // var account = _accountService.GetByName(item.AccountName);
                Account account     = null;
                var     accountUser = (AccountUser)_membershipService.GetByMobile(item.AccountName);
                if (accountUser != null)
                {
                    account = _accountService.QueryByOwnerId(accountUser).FirstOrDefault();
                    //return new AccountServiceResponse(ResponseCode.NonFoundAccount) { CodeText = "找不到会员,请检查输入是否正确,会员卡状态是否正常!" };
                }
                else
                {
                    account = _accountService.GetByName(item.AccountName);
                }
                if (account == null || (account.State != AccountStates.Normal && account.State != AccountStates.Invalid))
                {
                    var rsp = new AccountServiceResponse(ResponseCode.NonFoundAccount);

                    rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                    return(Json(rsp, JsonRequestBehavior.AllowGet));
                }
                var user = account.OwnerId.HasValue ? _membershipService.GetUserById(account.OwnerId.Value) : null;
                {
                    var rsp = new AccountServiceResponse(ResponseCode.Success, null, _shopService.GetById(account.ShopId), account, user);

                    rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                    rsp.CodeText = "查询成功";
                    return(Json(rsp, JsonRequestBehavior.AllowGet));
                }
            }
            catch (ConflictException ex)
            {
                _logger.Error(LogTypes.AccountQueryWithoutToken, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.AccountConflict);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
            catch (Exception ex)
            {
                _logger.Error(LogTypes.AccountQueryWithoutToken, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
        }
示例#15
0
 public bool RegisterByEmail(AccountServiceRequest request, Action <AccountServiceResponse> callback = null, Action <string> errorCallback = null)
 {
     if (request == null)
     {
         Debug.LogError("Registration request is null");
         return(false);
     }
     ChatEditor.StartCoroutine(
         ChatEditor.HttpPost(GetUrlWithQueryStringEscaped(request),
                             RequestHeaders,
                             null,
                             s =>
     {
         if (string.IsNullOrEmpty(s))
         {
             if (errorCallback != null)
             {
                 errorCallback("Server's response was empty. Please register through account website during this service interruption.");
             }
         }
         else
         {
             AccountServiceResponse ase = this.ParseResult(s);
             if (ase == null)
             {
                 if (errorCallback != null)
                 {
                     errorCallback("Error parsing registration response. Please try registering from account website");
                 }
             }
             else if (callback != null)
             {
                 callback(ase);
             }
         }
     },
                             e =>
     {
         if (errorCallback != null)
         {
             errorCallback(e);
         }
     })
         );
     return(true);
 }
示例#16
0
        public ActionResult Query(QueryAccount item)
        {
            try
            {
                //var account = _accountService.Query("Owner").FirstOrDefault(x => x.Name == item.AccountName
                //    && x.AccountToken == item.AccountToken
                //    && (x.State == AccountStates.Normal || x.State == AccountStates.Invalid));
                var account = _accountService.QueryAccount(item.AccountName, item.AccountToken).FirstOrDefault();

                if (account == null)
                {
                    var rsp = new AccountServiceResponse(ResponseCode.NonFoundAccount);

                    rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                    return(Json(rsp, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    User owner = null;
                    if (account.OwnerId.HasValue)
                    {
                        owner = _membershipService.GetUserById(account.OwnerId.Value) as AccountUser;
                    }
                    var rsp = new AccountServiceResponse(ResponseCode.Success, null, _shopService.GetById(account.ShopId), account, owner);

                    rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                    return(Json(rsp, JsonRequestBehavior.AllowGet));
                }
            }
            catch (ConflictException ex)
            {
                _logger.Error(LogTypes.AccountQuery, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.AccountConflict);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
            catch (Exception ex)
            {
                _logger.Error(LogTypes.AccountQuery, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
        }
示例#17
0
        protected override byte[] OnGetData()
        {
            if (this.Result == ResponseCode.Success)
            {
                //string accountName = this.AccountName.Substring(0, 16);
                //string token = GetToken();
                //_i8583.settabx_data(1, accountName);

                //KeysEntry key = GetCurrentKey();
                var       PosKey = Context.AccountDealService.GetPosKey(ShopName, PosName);
                KeysEntry key    = PosKey == null ? null : new KeysEntry()
                {
                    Key1 = PosKey.Key1, Key2 = PosKey.Key2, PosName = PosName, ShopName = ShopName
                };
                if (Result == ResponseCode.Success)
                {
                    var shoptoName = ShopNameTo ?? "";
                    shoptoName = shoptoName.Trim();
                    //var pos = _posRepository.GetPosByName(PosName);

                    AccountServiceResponse rsp = Context.AccountDealService.QueryShop(PosName, ShopName, shoptoName);
                    //rsp = _accountService.Pay(pos, ShopName, accountName, passwrod, DealAmount, dealItem, token);

                    Result = rsp.Code;
                    if (Result == ResponseCode.Success)
                    {
                        Amount = rsp.Amount;

                        SerialServerNo = rsp.SerialServerNo;
                        var array = BuildForShop(rsp);
                        //_i8583.settabx_data(47, array);
                        var i8583 = _i8583.Clone();
                        i8583.settabx_data(63, "");
                        var    data = i8583.Pack8583("0110");
                        string mac  = LCDES.MACEncrypt(data, key.Key2, 2);
                        mac = Helper.WrapMac("deal", mac);
                        _i8583.settabx_data(63, mac);
                    }
                }
            }
            return(_i8583.Pack8583("0110"));
        }
示例#18
0
        public static byte[] BuildForShop(AccountServiceResponse rsp)
        {
            var encoding = I8583.Encoding;

            /*
             * > struct _QueryAccountInfo         //Aid通知结构
             * > {
             * {
             * u8 MerType; //0:加盟商户;1:非加盟商户
             * u8 MerInfo[20];      //商户描述:20字节
             * u8 MerChinaName[50]; //商户中文名:50字节;不足后补空格;(收款方姓名)
             * u8 MerNum[15]; //商户编码 :15字节(收款方代码)
             * u8 MerPhone[15]; //商户电话 15字节;不足后补空格
             * u8 MerMobilePhone[11]; //商户手机号码 :11字节不足后补空格;
             *
             * u8 MerAccounts[20]; //收款方账号 20字节
             * u8 MerPayType[20]; //付款方式描述20字节
             * u8 MerSettleDate[20];   //结算日期20字节
             *
             * // u8 MerAddress[100]; //商户地址:100字节;不足后补空格
             * }
             *
             * > }__attribute__((packed));   //压缩;;;
             * >
             */
            MemoryStream ms = new MemoryStream();

            ms.WriteByte((byte)(rsp.ShopType == ShopTypes.OutOfClub ? '1' : '0'));
            Write(ms, rsp.ShopToDescription, 20, encoding);
            Write(ms, rsp.ShopToDisplayName, 50, encoding);
            Write(ms, rsp.ShopToName, 15, encoding);
            Write(ms, rsp.ShopToPhoneNumber, 15, encoding);
            Write(ms, rsp.ShopToMobile, 11, encoding);

            Write(ms, rsp.ShopToAccountName, 20, encoding);
            Write(ms, rsp.ShopToDealWay, 20, encoding);
            //Write(ms, rsp.ShopToDealTime, 20, encoding);

            byte[] array = ms.ToArray();
            return(array);
        }
示例#19
0
        private void SuccessCallback(AccountServiceResponse response)
        {
            if (response.ReturnCode == AccountServiceReturnCodes.Success)
            {
                this.setupState = SetupState.RegisteredSuccessful;

                appIdOrEmail = response.ApplicationIds[((int)ServiceTypes.Realtime).ToString()];

                // Save App ID
                AppSettingsInstance.AppIdRealtime = appIdOrEmail;
            }
            else
            {
                this.setupState = SetupState.AlreadyRegistered;
                UnityEngine.Debug.LogWarning("It was not possible to process your request, please go to the Photon Cloud Dashboard.");
                UnityEngine.Debug.LogWarningFormat("Return Code: {0}", response.ReturnCode);
            }

            requestingAppId = false;
            EditorUtility.ClearProgressBar();
        }
示例#20
0
        public void Init(AccountServiceResponse rsp, int dealType)
        {
            Code  = rsp.Code;
            Error = ModelHelper.GetBoundText(this, x => x.Code);
            if (Code == ResponseCode.Success)
            {
                var dealLog = DealLogService.GetById(Convert.ToInt32(rsp.SerialServerNo));
                ShopName       = dealLog.ShopName;
                PosName        = dealLog.SourcePosName;
                AccountName    = dealLog.AccountName;
                Amount         = dealLog.Amount;
                SerialNo       = dealLog.SerialNo;
                ServerSerialNo = dealLog.SerialServerNo;

                if (Code == ResponseCode.Success)
                {
                    var account     = AccountService.GetByName(AccountName);
                    var shop        = ShopService.GetByName(ShopName);
                    var pos         = PosService.GetById(dealLog.SourcePosId);
                    var currentUser = SecurityHelper.GetCurrentUser().CurrentUser;
                    switch (dealType)
                    {
                    case DealTypes.Deal:

                        if (!string.IsNullOrWhiteSpace(HostSite.TicketTemplateOfDeal))
                        {
                            this.Ticket = MessageFormator.FormatTickForDeal(HostSite.TicketTemplateOfDeal, HostSite, dealLog, account, shop, pos, currentUser);
                        }
                        break;

                    case DealTypes.CancelDeal:
                        if (!string.IsNullOrWhiteSpace(HostSite.TicketTemplateOfCancelDeal))
                        {
                            this.Ticket = MessageFormator.FormatTickForDeal(HostSite.TicketTemplateOfCancelDeal, HostSite, dealLog, account, shop, pos, currentUser);
                        }
                        break;
                    }
                }
            }
        }
示例#21
0
 public ActionResult Recharging(RechargingAccount model)
 {
     try
     {
         AccountServiceResponse rsp = model.DoRecharge();
         rsp.CodeText = string.IsNullOrEmpty(rsp.CodeText) ? ModelHelper.GetBoundText(rsp, x => x.Code) : rsp.CodeText;
         return(Json(rsp));
     }
     catch (ConflictException ex)
     {
         _logger.Error(LogTypes.AccountRecharge, ex);
         AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.AccountConflict);
         rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
         return(Json(rsp));
     }
     catch (Exception ex)
     {
         _logger.Error(LogTypes.AccountRecharge, ex);
         AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError);
         rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
         return(Json(rsp));
     }
 }
示例#22
0
        public AccountServiceResponse Save()
        {
            try
            {
                Account account     = null;
                var     accountUser = (AccountUser)_membershipService.GetByMobile(AccountName.Trim());
                if (accountUser != null)
                {
                    account = AccountService.QueryByOwnerId(accountUser).FirstOrDefault();
                    //return new AccountServiceResponse(ResponseCode.NonFoundAccount) { CodeText = "找不到会员,请检查输入是否正确,会员卡状态是否正常!" };
                }
                else
                {
                    account = AccountService.GetByName(AccountName.Trim());
                }
                this.AccountName = account.Name;
                var serialNo = SerialNoHelper.Create();
                //var site = SiteService.Query(null).FirstOrDefault();

                User operatorUser         = SecurityHelper.GetCurrentUser().CurrentUser;
                RechargingCommand command = new RechargingCommand(serialNo, this.AccountName, this.Amount, this.HasReceipt, HowToDeal, operatorUser.UserId, null);

                UnityContainer.BuildUp(command);
                int code = command.Validate();
                if (code != ResponseCode.Success)
                {
                    return(new AccountServiceResponse(code));
                }

                //ApplyToModel apply = new ApplyToModel(command.DealWay.ApplyTo);
                //if (!apply.EnabledRecharging)
                //    return new AccountServiceResponse(ResponseCode.InvalidateDealWay);

                TransactionHelper.BeginTransaction();
                Logger.LogWithSerialNo(LogTypes.AccountRecharge, serialNo, command.Account.AccountId, AccountName, Amount);


                //if (command.DealWay.IsCash)
                //{
                //    CashDealLogService.Create(new CashDealLog(Amount, 0, SecurityHelper.GetCurrentUser().CurrentUser.UserId, SystemDealLogTypes.Recharge));
                //    command.IsCash = true;
                //}
                //if (!HostSite.IsRechargingApprove)
                command.Execute(operatorUser);
                var response = new AccountServiceResponse(ResponseCode.Success, command.CreateDealLog(), ShopService.GetById(command.Account.ShopId), command.Account, command.Owner);
                //else
                //    TaskService.Create(new Task(command, operatorUser.UserId) { AccountId = command.Account.AccountId, Amount = Amount });

                var dealLog = command.CreateDealLog();
                //if (!string.IsNullOrWhiteSpace(CurrentSite.TicketTemplateOfRecharge))
                //{
                //    var message = MessageFormator.FormatTickForRecharging(CurrentSite.TicketTemplateOfRecharge,
                //                                                          CurrentSite, this.HasReceipt, Amount,
                //                                                          command.DealWay.DisplayName, dealLog, command.Account, command.AccountType,
                //                                                          command.Owner, command.OperatorUser);
                //    PrintTicketService.Create(new PrintTicket(LogTypes.AccountRecharge, serialNo, message, command.Account));
                //    response.CodeText = message.FormatForJavascript();
                //}
                return(TransactionHelper.CommitAndReturn(response));
            }
            catch (Exception ex)
            {
                Logger.Error(LogTypes.AccountRecharge, ex);
                throw;
            }
        }
示例#23
0
        public AccountServiceResponse Save()
        {
            var serialNo = SerialNoHelper.Create();

            TransactionHelper.BeginTransaction();

            var account = AccountService.GetByName(AccountName);

            if (account == null)
            {
                return(new AccountServiceResponse(ResponseCode.NonFoundAccount));
            }
            if (account.State != AccountStates.Normal)
            {
                return(new AccountServiceResponse(ResponseCode.AccountStateInvalid));
            }
            AccountUser owner = null;

            if (account.OwnerId.HasValue)
            {
                owner = MembershipService.GetUserById(account.OwnerId.Value) as AccountUser;
            }
            var  accountType  = AccountTypeService.GetById(account.AccountTypeId);
            bool isRenew      = false;
            int  renewalMonth = 6;

            if (accountType != null)
            {
                isRenew      = accountType.IsRenew;
                renewalMonth = accountType.RenewMonths;
            }
            if (!isRenew)
            {
                return(new AccountServiceResponse(ResponseCode.NonRenewal));
            }
            var now = DateTime.Now;

            account.ExpiredDate = (now > account.ExpiredDate ? now : account.ExpiredDate).AddMonths(renewalMonth);
            AccountService.Update(account);
            Logger.LogWithSerialNo(LogTypes.AccountRenew, serialNo, account.AccountId, AccountName, accountType.RenewMonths);
            if (!string.IsNullOrWhiteSpace(HostSite.MessageTemplateOfAccountRenew))
            {
                if (owner != null && owner.IsMobileAvailable)
                {
                    if (accountType.IsSmsRenew)
                    {
                        var msg = MessageFormator.Format(HostSite.MessageTemplateOfAccountRenew, owner);
                        msg = MessageFormator.Format(msg, account);
                        SmsHelper.Send(owner.Mobile, msg);
                    }
                }
            }
            var response = new AccountServiceResponse(ResponseCode.Success, null, ShopService.GetById(account.ShopId), account, owner);

            if (!string.IsNullOrWhiteSpace(HostSite.TicketTemplateOfRenewAccount))
            {
                var msg = MessageFormator.FormatTickForRenewAccount(HostSite.TicketTemplateOfRenewAccount, serialNo, HostSite, account, owner, accountType,
                                                                    SecurityHelper.GetCurrentUser().CurrentUser);
                response.CodeText = msg;
                PrintTicketService.Create(new PrintTicket(LogTypes.AccountRenew, serialNo, msg, account));
            }
            return(TransactionHelper.CommitAndReturn(response));
        }
示例#24
0
        internal AccountServiceResponse DoPay()
        {
            //AccountServiceResponse rsp = new AccountServiceResponse(0);
            var user = SecurityHelper.GetCurrentUser();

            if (user is ShopUserModel)
            {
                var shopUser = user.CurrentUser as ShopUser;
                var shop     = _shopService.GetById(shopUser.ShopId);
                if (shop == null)
                {
                    return new AccountServiceResponse(-1)
                           {
                               CodeText = "无效商户"
                           }
                }
                ;
                Account account     = null;
                var     accountUser = (AccountUser)_membershipService.GetByMobile(AccountName.Trim());
                if (accountUser != null)
                {
                    account = AccountService.QueryByOwnerId(accountUser).FirstOrDefault();
                    //return new AccountServiceResponse(ResponseCode.NonFoundAccount) { CodeText = "找不到会员,请检查输入是否正确,会员卡状态是否正常!" };
                }
                else
                {
                    account = AccountService.GetByName(AccountName.Trim());
                }
                string password1 = "";
                var    passSvc   = UnityContainer.Resolve <IPasswordService>(HostSite.PasswordType);
                password1 = passSvc.Decrypto(AccountPwd);
                // var account = AccountService.GetByName(AccountName.Trim());
                if (account == null || account.State != AccountStates.Normal)
                {
                    return new AccountServiceResponse(ResponseCode.NonFoundAccount)
                           {
                               CodeText = "找不好会员,请检查输入是否正确,会员卡状态是否正常!"
                           }
                }
                ;
                var sn = SeriaNo; //SerialNoHelper.Create();
                AccountServiceResponse rsp = new AccountServiceResponse(0);
                if (PayWay == 2)  //会员卡交易扣卡余额
                {
                    rsp = AccountDealService.Pay(new PayRequest(account.Name, AccountPwd, "", Amount, SeriaNo, account.AccountToken, shop.Name, shop.Name), true);
                }
                else if (PayWay == 1)//现金交易,给现金积分
                {
                    rsp = AccountDealService.Integral(new PayRequest(account.Name, AccountPwd, "", Amount, SeriaNo, account.AccountToken, shop.Name, shop.Name), true);
                }
                else
                {
                    return(new AccountServiceResponse(-1)
                    {
                        CodeText = "无效支付方式"
                    });
                }

                if (rsp.Code == ResponseCode.Success)
                {
                    //做日志
                    // Logger.LogWithSerialNo(LogTypes.Deal, sn, account.AccountId, rsp.AccountType, account.Name);
                }
                return(rsp);
            }
            else
            {
                return(new AccountServiceResponse(-1)
                {
                    CodeText = "无效商户"
                });
            }
        }
示例#25
0
        public AccountServiceResponse Save()
        {
            var serialNo = SerialNoHelper.Create();

            TransactionHelper.BeginTransaction();
            var newAccount = AccountService.GetByName(AccountName);

            if (newAccount == null || newAccount.State != AccountStates.Ready)
            {
                return(new AccountServiceResponse(ResponseCode.NonFoundAccount));
            }

            var oldAccount = AccountService.GetByName(OldAccountName);

            if (oldAccount == null ||
                (oldAccount.State != AccountStates.Normal && oldAccount.State != AccountStates.Invalid))
            {
                return(new AccountServiceResponse(ResponseCode.NonFoundAccount));
            }
            oldAccount.Remark1      = "Ô­¿¨ºÅ£º" + newAccount.Name;
            oldAccount.Name         = newAccount.Name;
            oldAccount.AccountToken = newAccount.AccountToken;
            oldAccount.Password     = newAccount.Password;
            oldAccount.PasswordSalt = newAccount.PasswordSalt;
            var owner = (AccountUser)(oldAccount.OwnerId.HasValue ? MembershipService.GetUserById(oldAccount.OwnerId.Value) : null);

            Logger.LogWithSerialNo(LogTypes.AccountChangeName, serialNo, oldAccount.AccountId, OldAccountName, AccountName);
            var fee = HostSite.ChangeCardFee;

            if (fee.HasValue)
            {
                SystemDealLogService.Create(new SystemDealLog(serialNo, SecurityHelper.GetCurrentUser().CurrentUser)
                {
                    Addin    = oldAccount.AccountId.ToString(),
                    Amount   = fee.Value,
                    DealType = SystemDealLogTypes.ChangeCard
                });
                oldAccount.ChargingAmount += fee.Value;
                CashDealLogService.Create(new CashDealLog(fee.Value, 0, SecurityHelper.GetCurrentUser().CurrentUser.UserId, CashDealLogTypes.ChangeCard));
            }
            AccountService.Delete(newAccount);

            AccountService.Update(oldAccount);
            var response    = new AccountServiceResponse(ResponseCode.Success, null, ShopService.GetById(oldAccount.ShopId), oldAccount, owner);
            var accountType = AccountTypeService.GetById(oldAccount.AccountTypeId);

            if (!string.IsNullOrWhiteSpace(HostSite.MessageTemplateOfAccountChangeName))
            {
                if (owner != null && owner.IsMobileAvailable)
                {
                    var msg = MessageFormator.Format(HostSite.MessageTemplateOfAccountChangeName, owner);
                    SmsHelper.Send(owner.Mobile, msg);
                }
            }

            if (!string.IsNullOrWhiteSpace(HostSite.TicketTemplateOfChangeAccountName))
            {
                var msg = MessageFormator.FormatTickForChangeAccountName(
                    HostSite.TicketTemplateOfChangeAccountName,
                    HostSite,
                    serialNo,
                    OldAccountName,
                    oldAccount,
                    owner,
                    accountType,
                    SecurityHelper.GetCurrentUser().CurrentUser);
                PrintTicketService.Create(new PrintTicket(LogTypes.AccountChangeName, serialNo, msg, oldAccount));
                response.CodeText = msg;
            }

            return(TransactionHelper.CommitAndReturn(response));
        }
示例#26
0
        public ActionResult QueryWithUserInfo(QueryAccount item)
        {
            try
            {
                //var account = _accountService.Query("Owner").Where(x => (x.State == AccountStates.Normal || x.State == AccountStates.Invalid)
                //    && (x.Name == item.AccountName || x.Owner.DisplayName == item.AccountName || x.Owner.Mobile == item.AccountName)
                //    ).ToList();
                var account = string.IsNullOrWhiteSpace(item.AccountName) ? new List <Account>() :
                              _accountService.QueryForName(new AccountWithNameRequest()
                {
                    States           = new[] { AccountStates.Normal, AccountStates.Invalid },
                    Name             = item.AccountName,
                    OwnerDisplayName = item.AccountName,
                    OwnerMobile      = item.AccountName
                }).ToList();
                if (account.Count == 0)
                {
                    var rsp = new AccountServiceResponse(ResponseCode.NonFoundAccount);

                    rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                    return(Json(rsp, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    var users = _membershipService.QueryUsers <AccountUser>(new UserRequest()
                    {
                        UserIds = account.Where(x => x.OwnerId.HasValue).Select(x => x.OwnerId.Value).ToArray()
                    }).ToList();

                    if (account.Count == 1)
                    {
                        var single = account.Single();
                        var rsp    = new AccountServiceResponse(ResponseCode.Success, null, _shopService.GetById(single.ShopId), single, users.FirstOrDefault());

                        rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                        return(Json(rsp, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        var data = from x in account
                                   let owner = x.OwnerId.HasValue
                                                   ? users.FirstOrDefault(y => y.UserId == x.OwnerId.Value)
                                                   : null

                                               select new
                        {
                            AccountName      = x.Name,
                            OwnerMobile      = (owner == null ? "" : owner.Mobile) ?? "",
                            OwnerDisplayName = (owner == null ? "" : owner.DisplayName) ?? "",
                            OwnerIdentity    = (owner == null ? "" : owner.IdentityCard) ?? "",
                        };

                        return(Json(data, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (ConflictException ex)
            {
                _logger.Error(LogTypes.AccountQueryWithUserInfo, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.AccountConflict);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
            catch (Exception ex)
            {
                _logger.Error(LogTypes.AccountQueryWithUserInfo, ex);
                AccountServiceResponse rsp = new AccountServiceResponse(ResponseCode.SystemError);
                rsp.CodeText = ModelHelper.GetBoundText(rsp, x => x.Code);
                return(Json(rsp));
            }
        }