protected override PaymentProviderEndPaymentResponse endPayment(IDictionary <string, string> request, string code, string status)
        {
            var result = new PaymentProviderEndPaymentResponse <AyandehBankTranStatus>(Now);

            result.ProviderType = this.ProviderType;

            string authority = code;
            long   auth;

            if (!long.TryParse(authority, out auth))
            {
                result.Status = (int)AyandehBankTranStatus.InvalidBankStep2Code;
            }
            else if (!EndPaymentSucceeded(status))
            {
                result.Status = status;
            }
            else
            {
                var  pec       = new ir.shaparak.pec.EShopService();
                byte pecStatus = 0;
                long invoice   = 0;

                pec.PaymentEnquiry(Config.Credentials.Pin, auth, ref pecStatus, ref invoice);

                result.Query     = auth;
                result.Code      = invoice;
                result.Status    = pecStatus;
                result.Succeeded = (EndPaymentSucceeded(pecStatus) && auth != -1);
            }

            return(result);
        }
        protected virtual ShetabPaymentStep2 endPayment(string code, string status)
        {
            var result = new ShetabPaymentStep2 <ParsianBankTranStatus>();

            result.BankType = this.BankType;

            string authority = code;
            long   auth;

            if (!long.TryParse(authority, out auth))
            {
                result.Status = (int)ParsianBankTranStatus.InvalidBankStep2Code;
            }
            else if (!PaymentSucceeded(status))
            {
                result.Status = status;
            }
            else
            {
                var  pec       = new ir.shaparak.pec.EShopService();
                byte pecStatus = 0;
                long invoice   = 0;

                pec.PaymentEnquiry(Config.Credentials.Pin, auth, ref pecStatus, ref invoice);

                result.Query     = auth;
                result.Code      = invoice;
                result.Status    = pecStatus;
                result.Succeeded = (PaymentStep2Succeeded(pecStatus) && auth != -1);
            }

            return(result);
        }