コード例 #1
0
ファイル: HomeController.cs プロジェクト: tar944/BankPayment
        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());
        }
コード例 #2
0
ファイル: SamanController.cs プロジェクト: tar944/BankPayment
        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));
        }
コード例 #3
0
        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);
        }