protected void btnPayment_Click(object sender, EventArgs e) { if (!txtAmount.Text.IsInt64()) { ShowMessageBox("مبلغ وارد شده نامعتبر است", "خطا", MessageBoxType.Error); return; } if (txtAmount.Text.ToLong() < 100000) { ShowMessageBox("مبلغ وارد شده نامعتبر است", "خطا", MessageBoxType.Error); return; } if (!txtChildBranchCode.Text.IsInt32() || BMIBranchProvider.FindUnits(txtChildBranchCode.Text.ToInt32()) == null) { ShowMessageBox("کد شعبه وارد شده نامعتبر است", "خطا", MessageBoxType.Error); return; } var currentuser = KidsOnlineUser.Kids_UserInfo; string RequestKey; long Amount = SystemConfigs.IsInTestMode ? 1 : txtAmount.Text.ToLong() + 40000; long OrderId = OrderIdGenerator.Instance.GetNextOrderId(); string AdditionalData = string.Format("پرداخت مبلغ افتتاح حساب آرزو" + "==>{0}", KidsOnlineUser.SSOUser.UserID); string CustomerEmailAddress = KidsOnlineUser.SSOUser.Email; string POSTHTML = MerchantHelpers.PaymentUtility(SystemConfigs.ServiceUrl, true, SystemConfigs.PaymentUrl, SystemConfigs.MerchantId, Amount, OrderId, SystemConfigs.TransactionKey, SystemConfigs.TerminalId, SystemConfigs.ReturnURL, AdditionalData, CustomerEmailAddress, "", out RequestKey); POSTHTML += @"</form>"; currentuser.ChildAccBranchNo = txtChildBranchCode.Text.ToInt32(); var CurrentTransaction = new KidsUsers_Payments { Amount = Amount, CreateDateTime = DateTime.Now, OrderId = OrderId, RequestKey = RequestKey, UserIPAddress = HttpContext.Current.Request.UserHostAddress, }; currentuser.KidsUsers_Payments.Add(CurrentTransaction); KidsUser_DataProvider.SaveKidsUser(currentuser, this, KidsSecureFormBaseClass.RefreshOnlineKidsUserInfo); SessionItems.CurrentTransaction = CurrentTransaction; SessionItems.FormBody = POSTHTML; Response.Redirect("~/Payment/MerchantBeforePost.aspx", true); ///////////////////////////////// }
private void VerifyTransaction(KidsUsers_Payments CurrentTransaction) { if (CurrentTransaction.AppStatusCode == null) { try { CheckStatusResult GetStatus_Result = MerchantHelpers.CheckRequestStatus(SystemConfigs.ServiceUrl, true, CurrentTransaction.OrderId, SystemConfigs.MerchantId, SystemConfigs.TerminalId, SystemConfigs.TransactionKey, CurrentTransaction.RequestKey, CurrentTransaction.Amount ); if (GetStatus_Result.AppStatusCode == 0 && GetStatus_Result.AppStatusDescription == "COMMIT") { UpdateKidsUserPayment(CurrentTransaction, GetStatus_Result); pnlResult.Visible = true; lblAmount.Text = CurrentTransaction.Amount.ToString(); lblAmount_Letter.Text = CurrentTransaction.Amount.ToString().num2str(); lblOrderId.Text = CurrentTransaction.OrderId.ToString(); lblTraceNo.Text = CurrentTransaction.SystemTraceNo.ToString(); lblRefrenceNo.Text = CurrentTransaction.RetrivalRefNo; lblTranDate.Text = PersianDateTime.MiladiToPersian(DateTime.Now).ToLongDateTimeString(); lblMessage.Text = @"پرداخت شما با موفقیت انجام گرفته است.<br> شما از 72 ساعت دیگر با مراجعه به این سایت میتوانید از شماره حساب خود آگاه گردیده و با مراجعه به شعب بانک ملی نسبت به فعالسازی حساب خود و دریافت کارت حساب خود اقدام نمایید"; } else { SetFailedTransaction(CurrentTransaction, GetStatus_Result); } } catch (Exception exp) { LogUtility.WriteEntryEventLog("CheckStatusHelper", exp, EventLogEntryType.Error); lblMessage.Text = "(03)با عرض پوزش در حال حاضر امکان سرویس دهی موجود نمی باشد.در صورت کسر مبلغ از حساب شما , مبلغ بطور خودکار به حساب شما بازگشت داده خواهد شد."; } } else lblMessage.Text = "عملیات لازم جهت پردازش این تراکنش قبلا انجام شده است.جهت مشاهده مجدد آن به اطلاعات ارسالی به آدرس ایمیل خود مراجعه فرمایید"; }
private void SetFailedTransaction(KidsUsers_Payments payment, CheckStatusResult PaymentResult) { payment.MarkAsModified(); payment.RetrivalRefNo = PaymentResult.RefrenceNumber; payment.SystemTraceNo = PaymentResult.TraceNo; payment.AppStatusCode = PaymentResult.AppStatusCode; payment.AppStatusDescription = PaymentResult.AppStatusDescription; payment.CustomerCardNo = PaymentResult.CustomerCardNumber; KidsUser_DataProvider.SaveKidsUserPayment(payment); RefreshOnlineKidsUserInfo(false); ShowMessageBox(string.Format(@"خطا در پرداخت:<br> کد خطا :{0}<br> شرح خطا :{1} ", payment.AppStatusCode, payment.AppStatusDescription), "خطا در پرداخت", MessageBoxType.Error); }
private void UpdateKidsUserPayment(KidsUsers_Payments payment, CheckStatusResult PaymentResult) { var currentuser = payment.KidsUser; currentuser.MarkAsModified(); payment.MarkAsModified(); payment.RetrivalRefNo = PaymentResult.RefrenceNumber; payment.SystemTraceNo = PaymentResult.TraceNo; payment.AppStatusCode = PaymentResult.AppStatusCode; payment.AppStatusDescription = PaymentResult.AppStatusDescription; payment.CustomerCardNo = PaymentResult.CustomerCardNumber; currentuser.ChildAccNo = null; currentuser.StatusHistory = string.Format("{0},{1}", currentuser.CurrentStatus, (int)KidsUserStatus.WaiteForAccCreation); List<CustomerAccInfo> childBMIAccounts = BMICustomer_DataProvider.GetAccByMellicode(currentuser.ChildMelliCode); List<CustomerAccInfo> parentBMIAccounts = BMICustomer_DataProvider.GetAccByMellicode(currentuser.ParentMelliCode); if (parentBMIAccounts.Any()) { if (childBMIAccounts.Any()) { currentuser.CurrentStatus = (int)KidsUserStatus.WaiteForAccCreation; } else { currentuser.CurrentStatus = (int)KidsUserStatus.WaiteForAccCreation_WithSabtConfirmation; } } else { throw new ApplicationException("Invalid User State"); } KidsUser_DataProvider.SaveKidsUser(currentuser, this, RefreshOnlineKidsUserInfo); ShowMessageBox("اطلاعات حساب شما با موفقیت ثبت شد", "ثبت اطلاعات حساب آرزو", MessageBoxType.Information); }
public static void SaveKidsUserPayment(KidsUsers_Payments payment) { using (var ctx = new BMIKidsEntities(ConnectionString)) { try { if (payment.ChangeTracker.State == ObjectState.Added) { payment.CreateDateTime = DateTime.Now; payment.LastUpdateDateTime = null; } else payment.LastUpdateDateTime = DateTime.Now; ctx.KidsUsers_Payments.ApplyChanges(payment); ctx.SaveChanges(); payment.AcceptChanges(); } catch (Exception ex) { LogUtility.WriteEntryEventLog("SaveSystemUser_DataProvider_UpdateTransaction", ex, EventLogEntryType.Information); if (ex.InnerException != null) throw ex.InnerException; throw; } } }