/// <summary>
        /// 创建财务收款单
        /// </summary>
        /// <param name="refundBalanceInfo"></param>
        private void CreateSOIncome(RefundBalanceInfo refundBalanceInfo)
        {
            SOIncomeInfo soIncomeInfo = new SOIncomeInfo()
            {
                OrderSysNo = refundBalanceInfo.SysNo.Value,
                OrderType  = SOIncomeOrderType.RO_Balance,
                OrderAmt   = refundBalanceInfo.CashAmt.Value * -1,
                IncomeAmt  = (refundBalanceInfo.RefundPayType == RefundPayType.TransferPointRefund)
                ? 0 : refundBalanceInfo.CashAmt.Value * -1,
                GiftCardPayAmt = -refundBalanceInfo.GiftCardAmt.Value,
                PointPay       = -refundBalanceInfo.PointAmt.Value,
                IncomeStyle    = SOIncomeOrderStyle.RO_Balance,
                ReferenceID    = "",
                Status         = SOIncomeStatus.Origin,
                Note           = "",
                CompanyCode    = refundBalanceInfo.CompanyCode
            };

            ExternalDomainBroker.CreateSOIncome(soIncomeInfo);

            if (refundBalanceInfo.RefundPayType == RefundPayType.TransferPointRefund)
            {
                int userSysNo = ExternalDomainBroker.GetUserSysNo(AppSettingManager.GetSetting("RMA", RMAConst.AutoRMAPhysicalUserName),
                                                                  AppSettingManager.GetSetting("RMA", RMAConst.AutoRMALoginUserName), AppSettingManager.GetSetting("RMA", RMAConst.AutoRMASourceDirectoryKey));
                ExternalDomainBroker.AutoConfirmIncomeInfo(soIncomeInfo.SysNo.Value, refundBalanceInfo.SysNo.Value, userSysNo);
            }
        }
Example #2
0
        public ActionResult SendFindPasswordSMS(FormCollection form)
        {
            string cell = CookieHelper.GetCookie <String>("FindPasswordCustomerCellPhone");

            if (!string.IsNullOrEmpty(cell))
            {
                SMSInfo item = new SMSInfo();
                //item.CustomerSysNo = int.Parse(CookieHelper.GetCookie<String>("FindPasswordCustomerSysNo"));
                item.CreateUserSysNo = int.Parse(CookieHelper.GetCookie <String>("FindPasswordCustomerSysNo"));
                item.CellNumber      = cell;
                item.Status          = SMSStatus.NoSend;
                item.Type            = SMSType.FindPassword;
                item.Priority        = 100;
                item.RetryCount      = 0;

                string code = VerifyImage.CreateRandomNumber();

                CookieHelper.SaveCookie <string>("FindPasswordSMSCode", code);
                item.SMSContent = string.Format(AppSettingManager.GetSetting("SMSTemplate", "AlertConfirmPhoneCode"),
                                                DateTime.Now.ToString("MM月dd日 HH:mm"), code);
                if (CommonFacade.InsertNewSMS(item))
                {
                    return(Json("s", JsonRequestBehavior.AllowGet));
                }
            }
            return(Json("服务器忙,稍后重试", JsonRequestBehavior.AllowGet));
        }
        public void HandleEvent(PurchaseOrderWaitingInStockMessage eventMessage)
        {
            string getFromService     = AppSettingManager.GetSetting("PO", "Po_WaitingInStock_SSB_FromService");
            string getToService       = AppSettingManager.GetSetting("PO", "Po_WaitingInStock_SSB_ToService");
            string getArticleCategory = AppSettingManager.GetSetting("PO", "Po_WaitingInStock_SSB_ArticleCategory");
            string getArticleType1    = AppSettingManager.GetSetting("PO", "Po_WaitingInStock_SSB_ArticleType1");
            string getArticleType2    = AppSettingManager.GetSetting("PO", "Po_WaitingInStock_SSB_ArticleType2");
            string getDBName          = AppSettingManager.GetSetting("PO", "Po_WaitingInStock_SSB_DataBaseName");
            string getVersion         = AppSettingManager.GetSetting("PO", "Po_WaitingInStock_SSB_MessageHead_Version");

            PurchaseOrderWaitingInStockSendMsg msg = new PurchaseOrderWaitingInStockSendMsg()
            {
                MessageHead = new PurchaseOrderWaitingInStockMessageHead()
                {
                    MessageType     = eventMessage.SendType,
                    CompanyCode     = eventMessage.CompanyCode.Trim(),
                    Version         = getVersion,
                    ReferenceNumber = eventMessage.PONumber
                },
                Body = new PurchaseOrderWaitingInStockMessageBody()
                {
                    message = eventMessage
                }
            };

            //发送SSB消息:
            msg.Body.message.CompanyCode = msg.Body.message.CompanyCode.Trim();
            SSBSender.SendV3 <PurchaseOrderWaitingInStockSendMsg>(getFromService, getToService, getArticleCategory, getArticleType1, getArticleType2, msg, getDBName, true);
        }
        public JsonResult ArticleInsert(ArticleVO articleVO)
        {
            articleVO.Content = HttpUtility.UrlDecode(articleVO.Content);
            int articleId = ArticleBasisService.Insert(articleVO);
            int agentId   = 0;

            if (articleVO.Application == ArticleEnums.LegalComplianceApplication)
            {
                agentId = int.Parse(AppSettingManager.GetSetting("WorkWXConfig", "LegalComplianceApplicationAgentId"));
            }
            else if (articleVO.Application == ArticleEnums.ExpertManagement)
            {
                agentId = int.Parse(AppSettingManager.GetSetting("WorkWXConfig", "ExpertManagementAgentId"));
            }
            // 微信推送消息
            new RestClient().Post(ConfigurationManager.AppSettings["WxMessageUrl"].ToString(), new
            {
                agentId  = agentId,
                content  = string.Format("新推文:{0}", articleVO.Title),
                partyIds = articleVO.ArticleDepartmentList != null && articleVO.ArticleDepartmentList.Count > 0
                ? string.Join("|", articleVO.ArticleDepartmentList.Select(p => p.DepartmentId)) : "",
                userIds = articleVO.UserIds
            }, RequestFormat.Json);
            return(Json(new AjaxResult()
            {
                Success = true, Data = articleId
            }));
        }
Example #5
0
        /// <summary>
        /// 同步对账单
        /// </summary>
        /// <param name="billType">
        /// 交易类型
        /// 1 交易对账
        /// 2 实扣税费对账
        /// 3 保证金对账
        /// 4 外币账户对账
        /// </param>
        /// <param name="date">日期,格式:yyyyMMdd</param>
        /// <returns></returns>
        public bool SyncTradeBill(string billType, string date)
        {
            //获取所有需要对账的关务对接相关信息
            var list = ObjectFactory <SOIncomeProcessor> .Instance.QueryVendorCustomsInfo();;

            //循环 逐个对账
            foreach (VendorCustomsInfo customsInfo in list)
            {
                Dictionary <string, string> reqParams = new Dictionary <string, string>();
                //一级商户代码
                reqParams["SRC_NCODE"] = customsInfo.CBTSRC_NCode;
                //对账日期
                reqParams["DATE"] = date;
                //账单类别
                reqParams["ACCOUNT_TYPE"] = billType;

                StringBuilder reqXml = new StringBuilder();
                reqXml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><EasipayB2CRequest><ReqData>");
                foreach (KeyValuePair <string, string> kvp in reqParams)
                {
                    reqXml.AppendFormat("<{0}><![CDATA[{1}]]></{0}>", kvp.Key, kvp.Value);
                }
                reqXml.Append("</ReqData></EasipayB2CRequest>");

                string   resResult      = HttpPostRequestReturnString(AppSettingManager.GetSetting("Invoice", "CheckUrl"), BuildPostReqData(reqXml.ToString(), customsInfo), true);
                string[] resResultArray = resResult.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string item in resResultArray)
                {
                    string[] itemArray = item.Split('|');
                    if (itemArray == null || itemArray.Length != 15)
                    {
                        ECCentral.Service.Utility.Logger.WriteLog(string.Format("同步对账单失败,本条记录:{0}", item), "同步对账单");
                        continue;
                    }
                    TransactionCheckBill bill = new TransactionCheckBill()
                    {
                        TransactionType = itemArray[0].Equals("P") ? CheckTransactionType.P : CheckTransactionType.R,
                        SoSysNo         = int.Parse(itemArray[1]),
                        SerialNo        = string.Format("{0}{1}", itemArray[0].Equals("P") ? "P" : "R", itemArray[2]),
                        SubOrderTime    = itemArray[3],
                        ProcessingTime  = itemArray[4],
                        TotalAmount     = decimal.Parse(itemArray[5]),
                        ProductAmount   = decimal.Parse(itemArray[6]),
                        ForexCurrency   = itemArray[7],
                        ForexAmount     = decimal.Parse(itemArray[8]),
                        Tariff          = decimal.Parse(itemArray[10]),
                        FareAmount      = decimal.Parse(itemArray[11]),
                        FareCurrency    = itemArray[12],
                        SubtotalAmount  = decimal.Parse(itemArray[13]),
                        MerchantName    = itemArray[14]
                    };
                    if (!string.IsNullOrWhiteSpace(itemArray[9]))
                    {
                        bill.Exchange = decimal.Parse(itemArray[9]);
                    }
                    ObjectFactory <IInvoiceDA> .Instance.InsertTransactionCheckBill(bill);
                }
            }
            return(true);
        }
Example #6
0
        /// <summary>
        ///     验证身份 验证签名的有效性,(TODO:待优化,需要重构)
        /// </summary>
        /// <param name="encodeJwt">转码之后的jwt信息</param>
        /// <param name="validatePayLoad"></param>
        /// <returns></returns>
        public static bool ValidateToken(string encodeJwt, Func <Dictionary <string, object>, bool> validatePayLoad)
        {
            var jwtOptions = AppSettingManager.Get <ESoftorJwtOption>("ESoftor:Jwt");

            var success = true;
            var jwtArr  = encodeJwt.Split('.');
            var header  = Base64UrlEncoder.Decode(jwtArr[0]).FromJsonString <Dictionary <string, object> >();
            var payLoad = Base64UrlEncoder.Decode(jwtArr[1]).FromJsonString <Dictionary <string, object> >();

            var hs256 = new HMACSHA256(Encoding.ASCII.GetBytes(jwtOptions.Secret));

            //首先验证签名是否正确(必须的)
            success = success && string.Equals(jwtArr[2], Base64UrlEncoder.Encode(hs256.ComputeHash(Encoding.UTF8.GetBytes(string.Concat(jwtArr[0], ".", jwtArr[1])))));
            if (!success)
            {
                return(success);//签名不正确直接返回
            }
            //其次验证是否在有效期内(也应该必须)
            var now = Convert.ToInt64(DateTime.UtcNow.ToJsGetTime());

            success = success && (now >= long.Parse(payLoad["nbf"].ToString()) && now < long.Parse(payLoad["exp"].ToString()));

            //再其次 进行自定义的验证
            success = success && validatePayLoad(payLoad);

            return(success);
        }
Example #7
0
        public void HandleEvent(PurchaseOrderCloseMessage eventMessage)
        {
            string getFromService     = AppSettingManager.GetSetting("PO", "Po_Close_SSB_FromService");
            string getToService       = AppSettingManager.GetSetting("PO", "Po_Close_SSB_ToService");
            string getArticleCategory = AppSettingManager.GetSetting("PO", "Po_Close_SSB_ArticleCategory");
            string getArticleType1    = AppSettingManager.GetSetting("PO", "Po_Close_SSB_ArticleType1");
            string getArticleType2    = AppSettingManager.GetSetting("PO", "Po_Close_SSB_ArticleType2");
            string getDBName          = AppSettingManager.GetSetting("PO", "Po_Close_SSB_DataBaseName");

            PurchaseOrderCloseSendMsg msg = new PurchaseOrderCloseSendMsg()
            {
                MessageHead = new PurchaseOrderCloseMessageHead()
                {
                    Version         = AppSettingManager.GetSetting("PO", "Po_Close_SSB_MessageHead_Version"),
                    MessageType     = AppSettingManager.GetSetting("PO", "Po_Close_SSB_MessageHead_Type"),
                    CompanyCode     = eventMessage.CompanyCode.Trim(),
                    ReferenceNumber = eventMessage.PONumber
                },
                message = eventMessage
            };

            //发送SSB消息:
            msg.message.CompanyCode = msg.message.CompanyCode.Trim();
            SSBSender.SendV3 <PurchaseOrderCloseSendMsg>(getFromService, getToService, getArticleCategory, getArticleType1, getArticleType2, msg, getDBName, true);
        }
Example #8
0
        public ActionResult Index()
        {
            var routeValues = RouteData.Values;

            if (routeValues.Keys != null && routeValues.Keys.Count > 0)
            {
                if (routeValues.Keys.ToList <string>().Exists(f => f.ToLower() == "subdomain"))
                {
                    string subdomain = routeValues["subdomain"].ToString();
                    if (string.IsNullOrWhiteSpace(subdomain))
                    {
                        return(View());
                    }

                    var forbiddenSD = AppSettingManager.GetSetting("Store", "ForbiddenSecondDomain").Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                    if (forbiddenSD.ToList <string>().Exists(f => f.Trim().ToLower() == subdomain.Trim().ToLower()))
                    {
                        //该二级域名为平台专用,不可申请,所以将直接转到首页!
                        return(View());
                    }

                    StoreDomainPage storePage = StoreFacade.GetStoreIndexPageBySubDomain(subdomain.Trim());
                    if (storePage != null)
                    {
                        return(new StoreController().Index(storePage.SellerSysNo, storePage.HomePageSysNo, false));
                    }
                }
            }


            return(View());
        }
Example #9
0
        public virtual GrossMarginMsg GetGrossMargin(CountdownInfo entity)
        {
            GrossMarginMsg msg         = new GrossMarginMsg();
            decimal        GrossMargin = 0;
            decimal        GrossMarginWithOutPointAndGift = 0;
            decimal        GrossMarginRate = 0;
            decimal        GrossMarginRateWithOutPointAndGift = 0;
            var            giftSysNo   = 0;
            var            couponSysNo = 0;

            //获取蛋劵和赠品编号
            if (entity.ProductSysNo.HasValue)
            {
                ObjectFactory <ICountdownQueryDA> .Instance.GetGiftAndCouponSysNo(entity.ProductSysNo.Value, out giftSysNo, out couponSysNo);

                if (giftSysNo != -1)
                {
                    msg.GiftSysNo = giftSysNo;
                }
                if (couponSysNo != -1)
                {
                    msg.CouponSysNo = couponSysNo;
                }
            }
            ObjectFactory <CountdownAppService> .Instance.GetGrossMargin(entity, out GrossMargin, out GrossMarginWithOutPointAndGift, out GrossMarginRate, out GrossMarginRateWithOutPointAndGift);

            msg.GrossMargin = GrossMargin;
            msg.GrossMarginWithOutPointAndGift = GrossMarginWithOutPointAndGift;
            msg.GrossMarginRate = GrossMarginRate;
            msg.GrossMarginRateWithOutPointAndGift = GrossMarginRateWithOutPointAndGift;
            msg.CountDownMargin     = Convert.ToDecimal(AppSettingManager.GetSetting("MKT", "CountDownMargin"));
            msg.CountDownMarginRate = Convert.ToDecimal(AppSettingManager.GetSetting("MKT", "CountDownMarginRate"));
            return(msg);
        }
Example #10
0
        public string ResetPassword(string username)
        {
            var    hostname   = AppSettingManager.GetAppSettingsData(ConstantManager.AppSetting.LpVariables, ConstantManager.AppSetting.Hostname, string.Empty);
            Guid   guid       = Guid.NewGuid();
            var    user       = _db.MstUsers.Where(x => x.Email.Equals(username) && x.IsActive).FirstOrDefault();
            string msg        = string.Empty;
            string link       = $"{hostname}/auth/ValidatePasswordLink?txn={guid.ToString()}&user={username}";
            string removeLink = $"{hostname}/auth/removeResetPasswordLink?txn={guid.ToString()}";;

            if (user != null)
            {
                user.IsPasswordReset   = true;
                user.PasswordResetCode = guid.ToString();
                user.ModifiedDate      = DateTime.Now;
                _db.Entry(user).State  = EntityState.Modified;
                if (_db.SaveChanges() > 0)
                {
                    msg = "sent";
                    var temp    = System.IO.File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "emailTemplate", "resetpassword.html"));
                    var message = new Message(new string[] { "*****@*****.**", username }, "Password Reset", temp.Replace("##removereset##", removeLink).Replace("##resetlink##", link));
                    _emailSender.SendEmail(message);
                }
                else
                {
                    msg = "notsent";
                }
            }
            else
            {
                msg = "Invalid username.";
            }
            return(msg);
        }
Example #11
0
        public bool ValidateResetLink(string txn)
        {
            int resetlinkexpire = AppSettingManager.GetAppSettingsData <int>(ConstantManager.AppSetting.LpVariables, ConstantManager.AppSetting.ResetLinkExpireInHour, "24");
            var user            = _db.MstUsers.Where(x => x.PasswordResetCode.Equals(txn) && x.IsActive && x.IsPasswordReset == true && DateTime.Now <= x.ModifiedDate.Value.AddHours(resetlinkexpire)).FirstOrDefault();

            return(user != null ? true : false);
        }
Example #12
0
        /// <summary>
        /// 构造请求协议
        /// </summary>
        /// <param name="trackingNumberList"></param>
        /// <returns></returns>
        private string BuildQueryRequestXml(List <string> trackingNumberList)
        {
            string requestService  = AppSettingManager.GetSetting("SO", "SFExpressRequestService");
            string requestLang     = AppSettingManager.GetSetting("SO", "SFExpressRequestLang");
            string customerID      = AppSettingManager.GetSetting("SO", "SFExpressCustomerID");
            string checkWord       = AppSettingManager.GetSetting("SO", "SFExpressCheckWord");
            string trackingNumbers = "";

            foreach (string str in trackingNumberList)
            {
                trackingNumbers += string.Format("{0},", str);
            }
            trackingNumbers = trackingNumbers.TrimEnd(',');

            string requestXml = @"<Request service='#RequestService#' lang='#RequestLang#'>
<Head>#CustomerID#,#Checkword#</Head><Body>
<RouteRequest tracking_type='1' method_type='1' tracking_number='#TrackingNumbers#'/>
</Body></Request>";

            requestXml = requestXml.Replace("#RequestService#", requestService);
            requestXml = requestXml.Replace("#RequestLang#", requestLang);
            requestXml = requestXml.Replace("#CustomerID#", customerID);
            requestXml = requestXml.Replace("#Checkword#", checkWord);
            requestXml = requestXml.Replace("#TrackingNumbers#", trackingNumbers);

            return(requestXml);
        }
Example #13
0
        /// <summary>
        ///     创建token对象
        /// </summary>
        /// <param name="claims">身份信息集合</param>
        /// <param name="expiresMinutes">过期时间(分钟)</param>
        /// <returns>创建的token对象</returns>
        public static string CreateToken(Claim[] claims, int expiresMinutes = 20)
        {
            var jwtOptions = AppSettingManager.Get <ESoftorJwtOption>("ESoftor:Jwt") ??
                             new ESoftorJwtOption()
            {
                Audience = AppSettingManager.Get("ESoftor:Jwt:Audience"),
                Issuer   = AppSettingManager.Get("ESoftor:Jwt:Issuer"),
                Secret   = AppSettingManager.Get("ESoftor:Jwt:Secret")
            };

            SecurityKey        key         = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtOptions.Secret));
            SigningCredentials credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature);

            DateTime now = DateTime.UtcNow;

            SecurityTokenDescriptor descriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Audience           = jwtOptions.Audience,
                Issuer             = jwtOptions.Issuer,
                SigningCredentials = credentials,
                NotBefore          = now,
                IssuedAt           = now,
                Expires            = now.Add(TimeSpan.FromMinutes(expiresMinutes))
            };

            JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
            SecurityToken           token        = tokenHandler.CreateToken(descriptor);

            return(tokenHandler.WriteToken(token));
        }
Example #14
0
        /// <summary>
        /// 处理增值税业务中的证书
        /// </summary>
        /// <param name="vat"></param>
        private void CertificateFileHandel(ValueAddedTaxInfo vat)
        {
            string fileIdentity  = vat.CertificateFileName;
            string getConfigPath = AppSettingManager.GetSetting("Customer", "CertificateFilesPath");

            if (!string.IsNullOrEmpty(fileIdentity))
            {
                if (!fileIdentity.Contains(getConfigPath))
                {
                    string fileName = Path.GetFileName(Encoding.UTF8.GetString(Convert.FromBase64String(fileIdentity)));
                    vat.CertificateFileName = getConfigPath + "\\" + fileName;
                    if (!Path.IsPathRooted(getConfigPath))
                    {
                        //是相对路径:
                        getConfigPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, getConfigPath);
                    }
                    string getDestinationPath = Path.Combine(getConfigPath, fileName);
                    string getFolder          = Path.GetDirectoryName(getDestinationPath);
                    if (!Directory.Exists(getFolder))
                    {
                        Directory.CreateDirectory(getFolder);
                    }
                    //将上传的文件从临时文件夹剪切到目标文件夹:
                    FileUploadManager.MoveFile(fileIdentity, getDestinationPath);

                    FileUploadManager.DeleteFile(fileIdentity);
                }
            }
        }
Example #15
0
        /// <summary>
        /// 更改用户密码
        /// </summary>
        /// <param name="customerId">用户Id</param>
        /// <param name="oldPassword">旧密码</param>
        /// <param name="newPassword">新密码</param>
        /// <returns>更新结果</returns>
        public static bool UpdateCustomerPassword(string customerId, string oldPassword, string newPassword)
        {
            var result = CustomerDA.UpdateCustomerPassword(customerId, oldPassword, newPassword);

            if (result)
            {
                //密码修改成功后发送短信
                var customer = CustomerFacade.GetCustomerByID(customerId);
                if (customer.IsPhoneValided == 1)
                {
                    var sms = new SMSInfo();
                    sms.CellNumber       = customer.CellPhone;
                    sms.CompanyCode      = ConstValue.CompanyCode;
                    sms.CreateTime       = DateTime.Now;
                    sms.CreateUserSysNo  = customer.SysNo;
                    sms.LanguageCode     = ConstValue.LanguageCode;
                    sms.Priority         = 1;
                    sms.SMSContent       = AppSettingManager.GetSetting("SMSTemplate", "AlertUpdatePassword");
                    sms.Status           = SMSStatus.NoSend;
                    sms.StoreCompanyCode = ConstValue.StoreCompanyCode;
                    sms.Type             = SMSType.AlertUpdatePassword;
                    sms.RetryCount       = 0;
                    CommonDA.InsertNewSMS(sms);
                }
            }
            return(result);
        }
Example #16
0
        public async Task <IActionResult> CheckSignature()
        {
            var signature = HttpContext.Request.Params("signature");
            var echostr   = HttpContext.Request.Params("echostr");
            var timestamp = HttpContext.Request.Params("timestamp");
            var nonce     = HttpContext.Request.Params("nonce");

            string[] ArrTmp = { AppSettingManager.Get("ESoftor:Jwt:Secret"), timestamp, nonce };
            Array.Sort(ArrTmp);  //字典排序
            string tmpStr = string.Join("", ArrTmp);

            //tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = Security.HashHelper.GetSha1(tmpStr);
            tmpStr = tmpStr.ToLower();
            if (tmpStr == signature)
            {
                var json = new
                {
                    appid = AppSettingManager.Get("Authentication:WeChat:AppId"),//AppKey
                    timestamp,
                    nonceStr = nonce,
                    signature
                };
                return(await Task.FromResult(Content(json.ToJsonString())));
            }
            var json1 = new
            {
                appid = AppSettingManager.Get("Authentication:WeChat:AppId"),//AppKey
                timestamp,
                nonceStr  = nonce,
                signature = tmpStr
            };

            return(await Task.FromResult(Content(json1.ToJsonString())));
        }
Example #17
0
        public RefundResult Refund(RefundEntity refundEntity)
        {
            RefundResult result = new RefundResult();

            result.IsSync = true;
            NetPayInfo netpayInfo = ObjectFactory <NetPayProcessor> .Instance.GetValidBySOSysNo(refundEntity.SOSysNo);

            string    partner        = AppSettingManager.GetSetting("Invoice", "IPSPartner");
            string    IPSSecurityKey = AppSettingManager.GetSetting("Invoice", "IPSSecurityKey");
            string    sign           = Sign(string.Format("{0}{1}{2}{3}{4}", partner, refundEntity.SOSysNo.ToString(), refundEntity.OrderDate.ToString("yyyyMMdd"), refundEntity.RefundAmt.ToString("f2"), IPSSecurityKey));
            RefundMsg msg            = new IPSPay.ServiceSoapClient().Refund(partner, sign, refundEntity.OrderDate.ToString("yyyyMMdd"), refundEntity.SOSysNo.ToString(), (double)refundEntity.RefundAmt, "");

            if (msg.ErrCode == "0000")
            {
                if (msg.Sign == Sign(string.Format("{0}{1}{2}{3}{4}{5}{6}", partner, msg.TradeBillNo, msg.TradeTime, msg.RealRefundAmount.ToString("f2"), msg.CanRefundAmount.ToString("f2"), msg.RefundBillNo, IPSSecurityKey)))
                {
                    result.Result = true;
                }
                else
                {
                    result.Result  = false;
                    result.Message = "验签失败";
                }
            }
            else
            {
                result.Result  = false;
                result.Message = GetMessage(msg.ErrCode);
                //result.Message += refundEntity.SOSysNo.ToString() + " " + refundEntity.OrderDate.ToString("YYYYMMDD");
            }

            return(result);
        }
Example #18
0
        public ActionResult SendLoginValidSMS(FormCollection form)
        {
            //step one :get customer cellphone from db
            string customerID = form["CustomerID"];

            if (string.IsNullOrEmpty(customerID))
            {
                return(Json("用户名未提供,发送验证码失败。", JsonRequestBehavior.AllowGet));
            }

            string vendorUserCellphone = CommonService.GetVendorCellPhone(customerID);

            //step two :send sms
            if (string.IsNullOrEmpty(vendorUserCellphone))
            {
                return(Json("账户未绑定手机或是未完成验证绑定,获取验证码失败。", JsonRequestBehavior.AllowGet));
            }
            else
            {
                string code = ValidationCodeHelper.CreateValidateCode(5);
                Session["ValidateCode"] = code;
                CookieHelper.SaveCookie <string>("VerifyCode", code.Trim());
                string SMSContent = string.Format(AppSettingManager.GetSetting("SMSTemplate", "CreateConfirmPhoneCode"),
                                                  DateTime.Now.ToString("MM月dd日 HH:mm"), code);
                if (SMSService.SendSMS(vendorUserCellphone, SMSContent))
                {
                    return(Json("s", JsonRequestBehavior.AllowGet));
                }
            }
            return(Json("服务器忙,稍后重试", JsonRequestBehavior.AllowGet));
        }
Example #19
0
        public void Run(string emailTo, string emailCC, string companyCode)
        {
            m_emailTO     = emailTo;
            m_emailCC     = emailCC;
            m_companyCode = companyCode;

            DateTime startTime = new DateTime();
            DateTime endTime   = new DateTime();

            endTime = DateTime.Now;
            //获取多少天前数据
            int timeSpan = 0;

            if (!int.TryParse(AppSettingManager.GetSetting(SOConst.DomainName, "SOJob_InternalMemoReport_TimeSpan"), out timeSpan))
            {
                timeSpan = 60;
            }

            startTime = endTime.AddDays(-timeSpan);

            var imemoList = ObjectFactory <ISODA> .Instance.GetInternalMemoReportList(startTime, DateTime.Now, m_companyCode);

            if (imemoList != null && imemoList.Count > 0)
            {
                List <InternalMemoReport> reports = ConvertReports(imemoList);
                SendMail(reports);
            }
        }
Example #20
0
        /// <summary>
        /// 构造请求的协议数据
        /// </summary>
        /// <param name="reqXmlValue"></param>
        /// <returns></returns>
        private string BuildPostReqData(string reqXmlValue)
        {
            StringBuilder postData = new StringBuilder();

            postData.AppendFormat("SENDER_CODE={0}", AppSettingManager.GetSetting("Invoice", "SENDER_CODE"));
            postData.AppendFormat("&TRX_CONTENT={0}", Base64Encode(reqXmlValue).Replace("+", "%2B"));
            postData.AppendFormat("&SIGNATURE={0}", SignData(reqXmlValue));
            return(postData.ToString());
        }
Example #21
0
        /// <summary>
        /// 订单网关查询
        /// </summary>
        /// <param name="soSysNo">订单编号</param>
        /// <returns></returns>
        public TransactionQueryBill QueryBill(string soSysNo)
        {
            string queryUrl = AppSettingManager.GetSetting("Invoice", "QueryUrl");

            int SOID = 0;

            int.TryParse(soSysNo, out SOID);
            VendorCustomsInfo customsInfo = ObjectFactory <ISOBizInteract> .Instance.LoadVendorCustomsInfo(SOID);

            Dictionary <string, string> reqParams = new Dictionary <string, string>();

            reqParams["SRC_NCODE"] = customsInfo.CBTSRC_NCode;
            reqParams["TRX_TYPE"]  = "00";
            reqParams["BILL_NO"]   = soSysNo;

            StringBuilder reqXml = new StringBuilder();

            reqXml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><EasipayB2CRequest><ReqData>");
            foreach (KeyValuePair <string, string> kvp in reqParams)
            {
                reqXml.AppendFormat("<{0}><![CDATA[{1}]]></{0}>", kvp.Key, kvp.Value);
            }
            reqXml.Append("</ReqData></EasipayB2CRequest>");
            var resultXml = HttpPostRequestReturnXml(queryUrl, BuildPostReqData(reqXml.ToString(), customsInfo));

            var result = new TransactionQueryBill();

            var code = resultXml.SelectSingleNode("EasipayB2CResponse/ResData/RTN_CODE").InnerText;       //请求结果

            result.Message = resultXml.SelectSingleNode("EasipayB2CResponse/ResData/RTN_INFO").InnerText; //拒绝原因

            if (code == "000000")
            {
                result.IsTrue = true;
                string trxState = resultXml.SelectSingleNode("EasipayB2CResponse/ResData/TRX_STATE").InnerText;
                result.BillNo    = resultXml.SelectSingleNode("EasipayB2CResponse/ResData/BILL_NO").InnerText;
                result.PayAmount = resultXml.SelectSingleNode("EasipayB2CResponse/ResData/PAY_AMOUNT").InnerText;
                result.RdoTime   = resultXml.SelectSingleNode("EasipayB2CResponse/ResData/RDO_TIME").InnerText;
                switch (trxState)
                {
                case "QS":
                    result.TrxState = "等待支付";
                    break;

                case "S":
                    result.TrxState = "支付成功";
                    break;

                case "F":
                    result.TrxState = "支付失败";
                    break;
                }
            }

            return(result);
        }
Example #22
0
        private string SFExpressQuery(string requestXml)
        {
            string          host   = AppSettingManager.GetSetting("SO", "SFExpressQueryHost");
            string          action = AppSettingManager.GetSetting("SO", "SFExpressAction");
            WebServiceProxy wsd    = new WebServiceProxy(host, action);

            object[] paramArray = { requestXml };

            return(wsd.ExecuteQuery(action, paramArray).ToString());
        }
Example #23
0
        private string GetInvoicePrintStocks(string companyCode)
        {
            string cfg = AppSettingManager.GetSetting("Invoice", "InvoicePrintStocks-" + companyCode);

            if (!string.IsNullOrEmpty(cfg))
            {
                return(cfg);
            }
            return(String.Empty);
        }
Example #24
0
        /// <summary>
        /// 获取一次最多的记录数
        /// </summary>
        /// <returns></returns>
        private int GetTopCount()
        {
            int result = 0;

            if (!int.TryParse(AppSettingManager.GetSetting(SOConst.DomainName, "SOJob_FPCheck_TopCount"), out result))
            {
                result = 2000;
            }
            return(result);
        }
Example #25
0
        public static bool VerifyReceive(this RMARequestInfo request, RMARequestInfo requestInDb)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            // verify required fields
            CommonCheck.VerifyNotNull("申请单ID", request.SysNo);
            CommonCheck.VerifyNotNull("仓库", request.ReceiveWarehouse);
            CommonCheck.VerifyNotNull("接收日期", request.CustomerSendTime);
            CommonCheck.VerifyNotNull("订单号", request.SOSysNo);
            //if (!(request.ShipViaCode.ToLower().Contains("ozzo") ||
            //      request.ShipViaCode.ToLower().Contains("奥硕")))
            if (!request.ShipViaCode.ToLower().Contains(AppSettingManager.GetSetting("RMA", "PushShipTypeName")))
            {
                CommonCheck.VerifyNotNull("邮包编号", request.TrackingNumber);
            }

            // verify request fields' max length
            request.VerifyFieldsLength();

            if (requestInDb.Status.HasValue && requestInDb.Status.Value != RMARequestStatus.Origin)
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "CannotReceiveWithoutOriginRequest");
                throw new BizException(msg);
            }
            if (request.Registers == null || request.Registers.Count < 1)
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "ObjectIsRequired");
                msg = string.Format(msg, "订单列表");
                throw new BizException(msg);
            }
            request.Registers.ForEach(
                reg =>
            {
                if (!reg.BasicInfo.IsHaveInvoice.HasValue ||
                    !reg.BasicInfo.IsFullAccessory.HasValue ||
                    !reg.BasicInfo.IsFullPackage.HasValue)
                {
                    string msg = ResouceManager.GetMessageString("RMA.Request", "LostRegisterReceiveInformations");
                    throw new BizException(msg);
                }
            }
                );
            if (request.ShipViaCode == RMAConst.ShipVia_PostOffice)
            {
                if (request.PostageToPoint.HasValue && request.PostageToPoint.Value > 50)
                {
                    string msg = ResouceManager.GetMessageString("RMA.Request", "PostageToPointShouldLessThan50");
                    throw new BizException(msg);
                }
            }
            return(true);
        }
Example #26
0
        /// <summary>
        /// 退款
        /// 保证流水号唯一退款前缀添加R
        /// </summary>
        /// <param name="entity">退款实体信息</param>
        /// <returns>退款结果</returns>
        public RefundResult Refund(RefundEntity entity)
        {
            string refundUrl = AppSettingManager.GetSetting("Invoice", "TenPayRefundUrl");

            Dictionary <string, string> reqParams = new Dictionary <string, string>();

            reqParams["input_charset"]   = "UTF-8";
            reqParams["sign_key_index"]  = "1";
            reqParams["service_version"] = "1.1";
            reqParams["partner"]         = AppSettingManager.GetSetting("Invoice", "TenPayParnter");
            reqParams["out_trade_no"]    = entity.SOSysNo.ToString();
            reqParams["out_refund_no"]   = entity.RefundSysNo.ToString();
            reqParams["total_fee"]       = (entity.SOAmt * 100).ToString();
            reqParams["refund_fee"]      = (entity.RefundAmt * 100).ToString();
            reqParams["op_user_id"]      = AppSettingManager.GetSetting("Invoice", "TenPayParnter");
            reqParams["op_user_passwd"]  = GetMD5(AppSettingManager.GetSetting("Invoice", "TenPayParnterPwd"));
            reqParams["sign_type"]       = "MD5";
            //reqParams["notify_url"] = GetMD5(AppSettingManager.GetSetting("Invoice", "TenPayRefundNotifyUrl"));

            string reqData = "";

            string[] allKeys = reqParams.Keys.ToArray();
            Array.Sort(allKeys);
            foreach (var item in allKeys)
            {
                reqData += string.Format("{0}={1}&", item, reqParams[item]);
            }
            string sign = GetMD5(reqData + string.Format("key={0}", AppSettingManager.GetSetting("Invoice", "TenPaySecretKey")));

            reqData += string.Format("sign={0}", sign);

            var resultXml = HttpRequestReturnXml(string.Format("{0}?{1}", refundUrl, reqData), "GET", "");

            var result = new RefundResult();
            var code   = resultXml.SelectSingleNode("root/retcode").InnerText;//请求结果

            if (code == "0")
            {
                result.Result = true;
                var soSysNo = entity.SOSysNo.ToString();                                          //商户订单号
                result.ExternalKey = resultXml.SelectSingleNode("root/transaction_id").InnerText; //退款流水,支付宝国际无
                var refundAmout = entity.RefundAmt.ToString("F2");                                //退款总金额
            }
            else
            {
                result.Message = resultXml.SelectSingleNode("root/retmsg").InnerText;//拒绝原因
            }

            //记录日志
            string resultNote = string.Format("用户[{0}]对订单号:{1} 调用了退款接口.调用结果;{2} 调用返回信息:{3},{4} PostUrl:{5} ", ServiceContext.Current.UserSysNo, entity.SOSysNo, code, result.Message, resultXml.ToXmlString(), refundUrl);

            ExternalDomainBroker.CreateOperationLog(resultNote, BizLogType.RMA_Refund_Refund, entity.RefundSysNo, entity.CompanyCode);
            return(result);
        }
Example #27
0
        /// <summary>
        /// 统计
        /// </summary>
        /// <param name="sysNo"></param>
        /// <returns></returns>
        public DataTable GetGiftCardFabricationItemSum(int sysNo)
        {
            DataCommand dc = DataCommandManager.GetDataCommand("GiftCard_GetGiftCardFabricationItemSum");

            dc.SetParameterValue("@GiftCardFabricationSysNo", sysNo);
            dc.SetParameterValue("@C3SysNo", AppSettingManager.GetSetting("MKT", "C3SysNoForGiftCardFabrication"));
            dc.SetParameterValue("@ManufacturerSysNo", AppSettingManager.GetSetting("MKT", "ManufacturerSysNoForGiftCardFabrication"));
            dc.SetParameterValue("@CompanyCode", "8601");

            return(dc.ExecuteDataTable());
        }
Example #28
0
        /// <summary>
        /// 订单网关查询
        /// </summary>
        /// <param name="soSysNo">订单编号</param>
        /// <returns></returns>
        public TransactionQueryBill QueryBill(string soSysNo)
        {
            string queryUrl = AppSettingManager.GetSetting("Invoice", "TenPayQueryUrl");

            Dictionary <string, string> reqParams = new Dictionary <string, string>();

            reqParams["input_charset"]   = "UTF-8";
            reqParams["service_version"] = "1.0";
            reqParams["sign_key_index"]  = "1";
            reqParams["partner"]         = AppSettingManager.GetSetting("Invoice", "TenPayParnter");
            reqParams["out_trade_no"]    = soSysNo.ToString();
            reqParams["sign_type"]       = "MD5";

            string reqData = "";

            string[] allKeys = reqParams.Keys.ToArray();
            Array.Sort(allKeys);
            foreach (var item in allKeys)
            {
                reqData += string.Format("{0}={1}&", item, reqParams[item]);
            }
            string sign = GetMD5(reqData + string.Format("key={0}", AppSettingManager.GetSetting("Invoice", "TenPaySecretKey")));

            reqData += string.Format("sign={0}", sign);

            var resultXml = HttpRequestReturnXml(string.Format("{0}?{1}", queryUrl, reqData), "GET", "");

            var result = new TransactionQueryBill();
            var code   = resultXml.SelectSingleNode("root/retcode").InnerText;//请求结果

            if (code == "0")
            {
                result.IsTrue = true;
                string trxState = resultXml.SelectSingleNode("root/trade_state").InnerText;
                result.BillNo    = resultXml.SelectSingleNode("root/out_trade_no").InnerText;
                result.PayAmount = resultXml.SelectSingleNode("root/total_fee").InnerText;
                result.RdoTime   = resultXml.SelectSingleNode("root/time_end").InnerText;
                switch (trxState)
                {
                case "0":
                    result.TrxState = "支付成功";
                    break;

                default:
                    result.TrxState = "等待买家付款";
                    break;
                }
            }
            else
            {
                result.Message = "查询失败";// resultXml.SelectSingleNode("root/retmsg").InnerText;//失败原因
            }
            return(result);
        }
Example #29
0
        public override IServiceCollection AddModule(IServiceCollection services)
        {
            services.AddScoped <IUserStore <User>, UserStore>();
            services.AddScoped <IRoleStore <Role>, RoleStore>();
            //services.AddScoped<SignInManager<User>>();
            //services.AddScoped<UserManager<User>>();
            //services.AddScoped<RoleManager<Role>>();

            services.AddScoped <IIdentityContract, IdentityService>();

            //注入当前用户,替换Thread.CurrentPrincipal的作用
            services.AddTransient <IPrincipal>(provider =>
            {
                IHttpContextAccessor accessor = provider.GetService <IHttpContextAccessor>();
                return(accessor?.HttpContext?.User);
            });

            Action <IdentityOptions> identityOptionsAction = options =>
            {
                //登录
                options.SignIn.RequireConfirmedEmail = true;
                //密码
                options.Password.RequireNonAlphanumeric = false;
                options.Password.RequireUppercase       = false;
                //用户
                options.User.RequireUniqueEmail = true;
                //锁定
                options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(15);
            };
            IdentityBuilder builder = services.AddIdentity <User, Role>(identityOptionsAction);

            builder.AddDefaultTokenProviders();

            //添加Authentication服务
            services
            .AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(jwt =>
            {
                string secret = AppSettingManager.Get("ESoftor:Jwt:Secret");
                jwt.TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidIssuer      = AppSettingManager.Get("ESoftor:Jwt:Issuer"),
                    ValidAudience    = AppSettingManager.Get("ESoftor:Jwt:Audience"),
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secret))
                };
                jwt.SecurityTokenValidators.Clear();
                //jwt.SecurityTokenValidators.Add(new OnlineUserJwtSecurityTokenHandler());//在线用户
            });
            return(services);
        }
        public override string DbConnection()
        {
            if (_provider == null)
            {
                string connString = AppSettingManager.Get("ESoftor:DbContexts:Default:ConnectString");
                return(connString);
            }
            var options = _provider.ESoftorOption();

            return(options.ESoftorDbOption.ConnectString);
        }