public async Task <IActionResult> VerifyRequest(BankVerifyViewModel vm) { try { // گرفتن اطلاعات فاکتور بر اساس شناسه خرید و شناسه گاربری var model = _usersPaymentRepository.GetByCondition(a => a.OrderId == vm.OrderId && a.Token == vm.Token); // رمز گذاری توکن var dataBytes = Encoding.UTF8.GetBytes(vm.Token); var symmetric = SymmetricAlgorithm.Create("TripleDes"); symmetric.Mode = CipherMode.ECB; symmetric.Padding = PaddingMode.PKCS7; var encryptor = symmetric.CreateEncryptor(Convert.FromBase64String(_bankConfig.MerchantKey), new byte[8]); var signedData = Convert.ToBase64String(encryptor.TransformFinalBlock(dataBytes, 0, dataBytes.Length)); var data = new { token = vm.Token, SignData = signedData }; var ipgUri = string.Format("{0}/api/v0/Advice/Verify", _bankConfig.PurchasePage); var res = CallApi <BankCallBackResultViewModel>(ipgUri, data); if (res != null && res.Result != null) { await _usersPaymentRepository.ResultOrder(model.ShopOrderId.Value, model.OrderId, model.UserId, res.Result.Succeed, res.Result.ResCode); if (res.Result.ResCode == "0") { vm.VerifyResultData = res.Result; res.Result.Succeed = true; ViewBag.Success = res.Result.Description; await _shopOrderRepository.SuccessedOrder(model.ShopOrderId.Value, model.UserId); await _shopProductRepository.SuccessedOrder(model.ShopOrderId.Value, model.UserId); return(RedirectToAction("Index", "UserOrder")); } ViewBag.Message = res.Result.Description; return(RedirectToAction("Index", "UserOrder")); } } catch (Exception ex) { ViewBag.Message = ex.ToString(); } return(Redirect("/")); }
public async Task <IActionResult> VerifyRequest(BankVerifyViewModel vm) { try { _logRepository.Add(new Log() { Text = $"Start => " }); // گرفتن اطلاعات فاکتور بر اساس شناسه خرید و شناسه گاربری var model = _usersPaymentRepository.GetByCondition(a => a.OrderId == vm.OrderId && a.Token == vm.Token); await _usersPaymentRepository.ResultOrderCallBack(model.ShopOrderId.Value, model.OrderId, UserId); // رمز گذاری توکن var dataBytes = Encoding.UTF8.GetBytes(vm.Token); var symmetric = SymmetricAlgorithm.Create("TripleDes"); symmetric.Mode = CipherMode.ECB; symmetric.Padding = PaddingMode.PKCS7; var encryptor = symmetric.CreateEncryptor(Convert.FromBase64String(_bankConfig.MerchantKey), new byte[8]); var signedData = Convert.ToBase64String(encryptor.TransformFinalBlock(dataBytes, 0, dataBytes.Length)); var data = new { token = vm.Token, SignData = signedData }; var ipgUri = string.Format("{0}/api/v0/Advice/Verify", _bankConfig.PurchasePage); var res = CallApi <BankCallBackResultViewModel>(ipgUri, data); _logRepository.Add(new Log() { Text = $"1 => " + ((res != null && res.Result != null) ? "" : "") }); if (res != null && res.Result != null) { await _usersPaymentRepository.ResultOrder(model.ShopOrderId.Value, model.OrderId, UserId, res.Result.Succeed, res.Result.ResCode); _logRepository.Add(new Log() { Text = $"2 => " + res.Result.ResCode.ToString() }); if (res.Result.ResCode == "3000") { vm.VerifyResultData = res.Result; res.Result.Succeed = true; ViewBag.Success = res.Result.Description; // تغییر وضعیت فاکتور از پیش خرید به خرید شده await _shopOrderRepository.SuccessedOrder(model.ShopOrderId.Value, model.UserId); // تغییر وضعیت سبد خرید await _shopProductRepository.SuccessedOrder(model.ShopOrderId.Value, model.UserId); // ثبت کردن اطلاعات در وضعیت await _shopOrderStatusRepository.InsertAsync(new ShopOrderStatusInsertViewModel() { Date = DateTime.Now, ShopOrderId = model.ShopOrderId.Value, Status = ShopOrderStatusSSOT.Ordered }); //// ارسال اس ام اس به کاربر جهت ثبت سفارش //var text = $"{model.OrderId};{DateTime.Now.ToPersianDay()}"; //var phoneNumber = _userRepository.GetByCondition(a => a.Id == model.UserId).PhoneNumber; //var smsResult = _smsRestClient.SendByBaseNumber(text, phoneNumber, (int)SmsBaseCodeSSOT.SetOrder); //// ارسال اس ام اس به مدیریت //var ResultTest = $"{DateTime.Now.ToPersianDay()};{model.OrderId}"; //var ResultSms = _smsRestClient.SendByBaseNumber(ResultTest, "09122013443", (int)SmsBaseCodeSSOT.Result); _logRepository.Add(new Log() { Text = $"3 => " + "Start send message" }); // ارسال اس ام اس به کاربر جهت ثبت سفارش var text = $"{model.ShopOrderId};{DateTime.Now.ToPersianDay()}"; var phoneNumber = _userRepository.GetByCondition(a => a.Id == model.UserId).PhoneNumber; var smsResult = _smsRestClient.SendByBaseNumber(text, phoneNumber, (int)SmsBaseCodeSSOT.SetOrder); // ارسال اس ام اس به مدیریت var ResultTest = $"{DateTime.Now.ToPersianDay()};{model.ShopOrderId}"; var sms1Result = _smsRestClient.SendByBaseNumber(ResultTest, "09122013443", (int)SmsBaseCodeSSOT.Result); var sms2Result = _smsRestClient.SendByBaseNumber(ResultTest, "09351631398", (int)SmsBaseCodeSSOT.Result); var sms3Result = _smsRestClient.SendByBaseNumber(ResultTest, "09104996615", (int)SmsBaseCodeSSOT.Result); _logRepository.Add(new Log() { Text = $"sms -> FirstUser>{sms1Result.RetStatus}-{sms1Result.Value}-{sms1Result.StrRetStatus}" }); _logRepository.Add(new Log() { Text = $"sms -> SecondUser>{sms2Result.RetStatus}-{sms2Result.Value}-{sms2Result.StrRetStatus}" }); _logRepository.Add(new Log() { Text = $"sms -> ThirtUser>{sms3Result.RetStatus}-{sms3Result.Value}-{sms3Result.StrRetStatus}" }); _logRepository.Add(new Log() { Text = $"3 => " + "End send message" }); return(RedirectToAction("Result", "UserOrder", new { orderId = res.Result.OrderId, shopOrderId = model.ShopOrderId })); } ViewBag.Message = res.Result.Description; return(RedirectToAction("Result", "UserOrder", new { orderId = model.OrderId, shopOrderId = model.ShopOrderId })); } } catch (Exception ex) { ViewBag.Message = ex.ToString(); _logRepository.Add(new Log() { Text = $"Error => {ex.ToString()}" }); } return(Redirect("/")); }