public async Task <IActionResult> CallBack() { Guid payId = Guid.Parse(Request.Query["id"]); string trackCode = Request.Query["trackCode"]; bool status = bool.Parse(Request.Query["status"]); string message = Request.Query["message"]; if (status == false) { int errorCode = int.Parse(Request.Query["errorCode"]); BankErrorCodeEnum errCode = (BankErrorCodeEnum)errorCode; ViewBag.Result = message; } else { try { //Todo: Please deliver product to customer here var res = await client.Verify(payId); if (res.Status == Connector.Enum.ApiStatusCodeEnum.Success && res.Body.Status) { //Transaction Done ViewBag.Result = res.Body.Message; } else { //Transaction Failed ViewBag.Result = res.Body.Message + "<br/>" + "تا 24 ساعت دیگر مبلغ به حساب شما بازگردانده خواهد شد"; } } catch { //Reverse Transaction } } return(View()); }
public async Task <IActionResult> Callback(string token, string secondTrackCode) { _webBaseUrl = string.Format("{0}://{1}", Request.Scheme, Request.Host); _logger.LogDebug("CallBack"); _logger.LogDebug("token:" + token); _logger.LogDebug("secondTrackCode:" + secondTrackCode); Transaction transaction = await _transactionRepository.Get(Guid.Parse(secondTrackCode)); if (transaction.Status != (byte)TransactionStatusEnum.Initial) { return(BadRequest()); } string longurl = transaction.CallbackUrl; var uriBuilder = new UriBuilder(longurl); var query = HttpUtility.ParseQueryString(uriBuilder.Query); string message = ""; var refNum = Request.Form["RefNum"]; BankErrorCodeEnum bankErrorCode = BankErrorCodeEnum.UnkownError; try { if (RequestUnpack()) { if (_transactionState.Equals("OK")) { bankErrorCode = BankErrorCodeEnum.NoError; transaction.BankErrorCode = (byte)bankErrorCode; transaction.Status = (byte)TransactionStatusEnum.BankOk; transaction.ModifiedOn = DateTime.Now; transaction.ModifiedBy = 1; transaction.BankTrackCode = refNum; await _transactionRepository.Update(transaction); query["id"] = transaction.Id.ToString(); query["trackCode"] = transaction.UserTrackCode.ToString(); query["status"] = true.ToString(); query["errorCode"] = bankErrorCode.ToString(); query["message"] = message; uriBuilder.Query = query.ToString(); longurl = uriBuilder.ToString(); var url3 = string.Format(longurl); return(Redirect(url3)); } else { _isError = true; _errorMsg = "متاسفانه بانک خريد شما را تاييد نکرده است"; if (_transactionState.Equals("CanceledByUser") || _transactionState.Equals(string.Empty)) { // Transaction was canceled by user _isError = true; _errorMsg = "تراكنش توسط خريدار كنسل شد"; bankErrorCode = BankErrorCodeEnum.CanceledByUser; } //InvalidParameters else if (_transactionState.Equals("InvalidParameters")) { // Amount of revers teransaction is more than teransaction _errorMsg = "پارامترهای ارسال شده به بانک اشتباه است"; bankErrorCode = BankErrorCodeEnum.InvalidParameters; } else if (_transactionState.Equals("InvalidAmount")) { // Amount of revers teransaction is more than teransaction _errorMsg = "مبلغ تراکنش معکوس بیشتر از مبلغ تراکنش است"; bankErrorCode = BankErrorCodeEnum.InvalidAmount; } else if (_transactionState.Equals("InvalidTransaction")) { // Can not find teransaction _errorMsg = "تراکنش معتبر نمی باشد"; bankErrorCode = BankErrorCodeEnum.InvalidTransaction; } else if (_transactionState.Equals("InvalidCardNumber")) { // Card number is wrong _errorMsg = "شماره کارت معتبر نمی باشد"; bankErrorCode = BankErrorCodeEnum.InvalidCardNumber; } else if (_transactionState.Equals("NoSuchIssuer")) { // Issuer can not find _errorMsg = "صادر کننده پیدا نشد"; bankErrorCode = BankErrorCodeEnum.NoSuchIssuer; } else if (_transactionState.Equals("ExpiredCardPickUp")) { // The card is expired _errorMsg = "کارت انتخاب شده منقضی شده است"; bankErrorCode = BankErrorCodeEnum.ExpiredCardPickUp; } else if (_transactionState.Equals("AllowablePINTriesExceededPickUp")) { // For third time user enter a wrong PIN so card become invalid _errorMsg = "پین انتخاب شده محدودیت کارت دارد"; bankErrorCode = BankErrorCodeEnum.AllowablePINTriesExceededPickUp; } else if (_transactionState.Equals("IncorrectPIN")) { // Pin card is wrong _errorMsg = "پین کد اشتباه است"; bankErrorCode = BankErrorCodeEnum.IncorrectPIN; } else if (_transactionState.Equals("ExceedsWithdrawalAmountLimit")) { // Exceeds withdrawal from amount limit _errorMsg = "پرداخت بیشتر از از حد مجاز می باشد"; bankErrorCode = BankErrorCodeEnum.ExceedsWithdrawalAmountLimit; } else if (_transactionState.Equals("TransactionCannotBeCompleted")) { // PIN and PAD are currect but Transaction Cannot Be Completed _errorMsg = "تراکنش کامل نشد"; bankErrorCode = BankErrorCodeEnum.TransactionCannotBeCompleted; } else if (_transactionState.Equals("ResponseReceivedTooLate")) { // Timeout occur _errorMsg = "جواب کاربر بیشتر از حد مجاز طول کشید"; bankErrorCode = BankErrorCodeEnum.ResponseReceivedTooLate; } else if (_transactionState.Equals("SuspectedFraudPickUp")) { // User did not insert cvv2 & expiredate or they are wrong. _errorMsg = "کاربر اطلاعات کارت خود را به درستی وارد نکرده است"; bankErrorCode = BankErrorCodeEnum.SuspectedFraudPickUp; } else if (_transactionState.Equals("NoSufficientFunds")) { // there are not suficient funds in the account _errorMsg = "موجودی کافی نمی باشد"; bankErrorCode = BankErrorCodeEnum.NoSufficientFunds; } else if (_transactionState.Equals("IssuerDownSlm")) { // The bank server is down _errorMsg = "سرور بانک غیرفعال است"; bankErrorCode = BankErrorCodeEnum.BankServerIsDown; } else if (_transactionState.Equals("TMEError")) { // unknown error occur _errorMsg = "خطای ناشناخته"; bankErrorCode = BankErrorCodeEnum.UnkownError; } } } } catch (Exception ex) { _errorMsg = ex.Message; _logger.LogError(ex.Message); } _logger.LogError(_errorMsg); var mid1 = Request.Form["MID"]; transaction.Status = (byte)TransactionStatusEnum.Failed; transaction.BankErrorCode = (byte)bankErrorCode; transaction.BankErrorMessage = _errorMsg; transaction.ModifiedOn = DateTime.Now; transaction.ModifiedBy = 1; await _transactionRepository.Update(transaction); query["id"] = transaction.Id.ToString(); query["trackCode"] = transaction.UserTrackCode.ToString(); query["status"] = false.ToString(); query["errorCode"] = ((byte)bankErrorCode).ToString(); query["message"] = _errorMsg; uriBuilder.Query = query.ToString(); longurl = uriBuilder.ToString(); var url = string.Format(longurl); return(Redirect(url)); }
public static BankErrorCodeEnum ErrorResult(string ID) { BankErrorCodeEnum bankErrorCodeEnum = BankErrorCodeEnum.UnkownError; switch (ID) { case "-100": //result = "پرداخت لغو شده"; return(BankErrorCodeEnum.CanceledByUser); case "0": //result = "تراكنش با موفقيت انجام شد"; return(BankErrorCodeEnum.NoError); case "11": return(BankErrorCodeEnum.InvalidCardNumber); //result = "شماره كارت نامعتبر است "; case "12": return(BankErrorCodeEnum.NoSufficientFunds); //result = "موجودي كافي نيست "; case "13": return(BankErrorCodeEnum.InvalidPassword); //result = "رمز نادرست است "; //break; case "14": return(BankErrorCodeEnum.InvalidPassword); //result = "تعداد دفعات وارد كردن رمز بيش از حد مجاز است "; //break; case "15": return(BankErrorCodeEnum.InvalidCardNumber); //result = "كارت نامعتبر است "; //break; case "16": return(BankErrorCodeEnum.ExceedsWithdrawalAmountLimit); //result = "دفعات برداشت وجه بيش از حد مجاز است "; //break; case "17": return(BankErrorCodeEnum.CanceledByUser); //result = "كاربر از انجام تراكنش منصرف شده است "; //break; case "18": return(BankErrorCodeEnum.ExpiredCardPickUp); // result = "تاريخ انقضاي كارت گذشته است "; // break; case "19": return(BankErrorCodeEnum.ExceedsWithdrawalAmountLimit); //result = "مبلغ برداشت وجه بيش از حد مجاز است "; //break; case "111": return(BankErrorCodeEnum.BankIssuerIsInvalid); // result = "صادر كننده كارت نامعتبر است "; // break; case "112": return(BankErrorCodeEnum.UnkownError); // result = "خطاي سوييچ صادر كننده كارت "; // break; case "113": return(BankErrorCodeEnum.UnkownError); //result = "پاسخي از صادر كننده كارت دريافت نشد "; //break; case "114": return(BankErrorCodeEnum.AllowablePINTriesExceededPickUp); //result = "دارنده كارت مجاز به انجام اين تراكنش نيست"; //break; case "21": return(BankErrorCodeEnum.UnkownError); //result = "پذيرنده نامعتبر است "; //break; case "23": return(BankErrorCodeEnum.UnkownError); //result = "خطاي امنيتي رخ داده است "; //break; case "24": return(BankErrorCodeEnum.UnkownError); //result = "اطلاعات كاربري پذيرنده نامعتبر است "; //break; case "25": return(BankErrorCodeEnum.UnkownError); //result = "مبلغ نامعتبر است "; //break; case "31": return(BankErrorCodeEnum.UnkownError); //result = "پاسخ نامعتبر است "; //break; case "32": return(BankErrorCodeEnum.UnkownError); //result = "فرمت اطلاعات وارد شده صحيح نمي باشد "; //break; case "33": return(BankErrorCodeEnum.UnkownError); //result = "حساب نامعتبر است "; //break; case "34": return(BankErrorCodeEnum.InternalError); //result = "خطاي سيستمي "; //break; case "35": return(BankErrorCodeEnum.InvalidDate); //result = "تاريخ نامعتبر است "; //break; case "41": return(BankErrorCodeEnum.UnkownError); //result = "شماره درخواست تكراري است ، دوباره تلاش کنید"; //break; case "42": return(BankErrorCodeEnum.UnkownError); //result = "يافت نشد Sale تراكنش"; //break; case "43": return(BankErrorCodeEnum.AlreadyVerified); //result = "داده شده است Verify قبلا درخواست"; //break; case "44": return(BankErrorCodeEnum.UnkownError); //result = "يافت نشد Verfiy درخواست"; //break; case "45": return(BankErrorCodeEnum.UnkownError); //result = "شده است Settle تراكنش"; //break; case "46": return(BankErrorCodeEnum.UnkownError); //result = "نشده است Settle تراكنش"; //break; case "47": return(BankErrorCodeEnum.UnkownError); //result = "يافت نشد Settle تراكنش"; //break; case "48": return(BankErrorCodeEnum.UnkownError); //result = "شده است Reverse تراكنش"; //break; case "49": return(BankErrorCodeEnum.UnkownError); //result = "يافت نشد Refund تراكنش"; //break; case "412": return(BankErrorCodeEnum.InvalidBillCode); //result = "شناسه قبض نادرست است "; //break; case "413": return(BankErrorCodeEnum.InvalidPaymentCode); //result = "شناسه پرداخت نادرست است "; //break; case "414": return(BankErrorCodeEnum.NoSuchIssuer); //result = "سازمان صادر كننده قبض نامعتبر است "; //break; case "415": return(BankErrorCodeEnum.ResponseReceivedTooLate); //result = "زمان جلسه كاري به پايان رسيده است "; //break; case "416": return(BankErrorCodeEnum.UnkownError); //result = "خطا در ثبت اطلاعات "; //break; case "417": return(BankErrorCodeEnum.UnkownError); //result = "شناسه پرداخت كننده نامعتبر است "; //break; case "418": return(BankErrorCodeEnum.UnkownError); //result = "اشكال در تعريف اطلاعات مشتري "; //break; case "419": return(BankErrorCodeEnum.UnkownError); //result = "تعداد دفعات ورود اطلاعات از حد مجاز گذشته است "; //break; case "421": return(BankErrorCodeEnum.InvalidIP); //result = "نامعتبر است IP"; //break; case "51": return(BankErrorCodeEnum.OperationAlreadyDone); //result = "تراكنش تكراري است "; //break; case "54": return(BankErrorCodeEnum.UnkownError); //result = "تراكنش مرجع موجود نيست "; //break; case "55": return(BankErrorCodeEnum.InvalidTransaction); //result = "تراكنش نامعتبر است "; //break; case "61": return(BankErrorCodeEnum.UnkownError); //result = "خطا در واريز "; //break; default: return(BankErrorCodeEnum.UnkownError); //result = string.Empty; //break; } return(BankErrorCodeEnum.UnkownError); }