PDA

View Full Version : مشکل در تراکنش پرداخت الکترونیک



bbc_sh
دوشنبه 05 اسفند 1387, 22:11 عصر
سلام دوستان
نمیدونم این پست رو اینجا درست مطرح کردم یا نه, اگه اشتباهی زدم ببخشید.
من توی سایتم یه بخش پرداخت الکترونیک دارم که به وب سرویس بانک اقتصاد نوین متصل هست.همه مراحل درست کار میکنه.کاربر بعد از زدن پرداخت به وب سرویس بانک متصل میشه و بعد از وارد کردن مشخصات کارت, و زدن تایید به صفحه نتیجه تراکنش (بانک) میره اونجا هم تراکنش بون خطا هست , بعد از زدن تایید فرایند که مشتری به سایت فروشنده بر میگرده باید پیامی رو ببینه ولی من وقتی امتحان میکنم این پیام رو می بینم :-18مشکلی در تایید خرید شما وجود دارد.در حالی که نتیجه تراکنش بدون خطا بود.!!!در ضمن تراکنش های من یک ریالی هست آیا ممکنه دلیلش این باشه؟؟؟؟ هم با رمز کارتی که بانک واسه تست داده امتحان کردم و هم با کارت خودم ولی هر دو بار این خطا رو در سایت خودم میبینم.این شماره خطا هم توی لیست خطاهایی که توی پی دی اف بانک هست نیست ,فقط تا -17 داره!!!!!
لطفا دوستانی که اطلاع دارن راهنمایی کنند.ممنون میشم

milade
سه شنبه 06 اسفند 1387, 08:51 صبح
سلام
از اونجا که شما میبایست مقادیر برگشتی از سوی بانک رو کنترل کنید ، احتمالا" در کد نویسی اشکال دارید .
شاید یکی از مقادیر رو فراموش کردید مقدار بدید .
موفق باشید

bbc_sh
سه شنبه 06 اسفند 1387, 09:47 صبح
من توی سایتم یه بخش پرداخت الکترونیک دارم که به وب سرویس بانک اقتصاد نوین متصل هست.همه مراحل درست کار میکنه.کاربر بعد از زدن پرداخت به وب سرویس بانک متصل میشه و بعد از وارد کردن مشخصات کارت, و زدن تایید به صفحه نتیجه تراکنش (بانک) میره اونجا هم تراکنش بون خطا هست , بعد از زدن تایید فرایند که مشتری به سایت فروشنده بر میگرده باید پیامی رو ببینه ولی من وقتی امتحان میکنم این پیام رو می بینم :-18مشکلی در تایید خرید شما وجود دارد.در حالی که نتیجه تراکنش بدون خطا بود.!!!در ضمن تراکنش های من یک ریالی هست آیا ممکنه دلیلش این باشه؟؟؟؟ هم با رمز کارتی که بانک واسه تست داده امتحان کردم و هم با کارت خودم ولی هر دو بار این خطا رو در سایت خودم میبینم.این شماره خطا هم توی لیست خطاهایی که توی پی دی اف بانک هست نیست ,فقط تا -17 داره!!!!!کدهایی که من واسه گرفتن مقادیر برگشتی استفاده کردم این هست(توی رویداد پیج لود هست):

ServicePointManager.ServerCertificateValidationCal lback = new RemoteCertificateValidationCallback(ValidateServer Certificate);

string RefNum = HttpContext.Current.Request.Params.Get("RefNum");
string ResNum = HttpContext.Current.Request.Params.Get("ResNum");
string State = HttpContext.Current.Request.Params.Get("State");

string MerchantID = "xxxxxxxxx-xxxxxxxxx";
string Password = "xxxxxxxxx";
SqlConnection con = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
double amount = Double.Parse(Session["amount"].ToString());
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader reader;

if (State == "OK")
{
if (RefNum == " ")
{
Label1.Text = " .خرید شما توسط بانک تأیید شده ولی رسید دیجیتالی تأیید نگشت ";
cmd.CommandText = "up_factor";
cmd.Parameters.AddWithValue("@r_state", "تأیید نشد");
cmd.Parameters.AddWithValue("@p_state", "تأیید شد");
cmd.Parameters.AddWithValue("@ResNum", ResNum);
con.Open();
cmd.ExecuteNonQuery();

}

else
{
//جستجوی رسید دیجیتالی در پایگاه داده

cmd.CommandText = "sel_Count_RefNum";
cmd.Parameters.AddWithValue("@RefNum", RefNum);
con.Open();
reader = cmd.ExecuteReader();
reader.Read();
int cou= Int32.Parse(reader[0].ToString());
if (cou==0)
{
reader.Close();

enwebservice.ReferencePayment service = new enwebservice.ReferencePayment();

double Result = service.verifyTransaction(RefNum, MerchantID);
//double Result = 1.0;
cmd.Parameters.Clear();
cmd.CommandText = "in_RefNum";
cmd.Parameters.AddWithValue("@RefNum", RefNum);
int res = Int32.Parse(ResNum);
cmd.Parameters.AddWithValue("@FID",res );
cmd.ExecuteNonQuery();
con.Close();
if (Result > 0.0)
{

if (Result == amount)
{

Label1.Text = " .خرید شما با موفقیت انجام شد";
con.Open();
cmd.Parameters.Clear();
cmd.CommandText = "up_factor";
cmd.Parameters.AddWithValue("@r_state", "تأیید شد");
cmd.Parameters.AddWithValue("@p_state", "تأیید شد");
cmd.Parameters.AddWithValue("@ResNum", res);
cmd.ExecuteNonQuery();
}

else if (Result < amount)
{
Label1.Text = " .مبلغ پرداختی شما کمتر از مبلغی است که شما باید بپردازید ";
double RevAmount = Result;

int Res = service.reverseTransaction(RefNum, MerchantID, Password, RevAmount);

}
else if (Result > amount)
{
int a = Convert.ToInt32(Session["amount"].ToString());
double RevAmount = Result - a;
int Res = service.reverseTransaction(RefNum, MerchantID, Password, RevAmount);

Label1.Text = ".خرید شما با موفقیت انجام شد.مقدار پرداختی شما بیش از مقدار قابل پرداخت است.مقدار اضافی برگشت داده شد ";
cmd.Parameters.Clear();

cmd.CommandText = "up_factor";
cmd.Parameters.AddWithValue("@r_state", "تأیید شد");
cmd.Parameters.AddWithValue("@p_state", "تأیید شد");
cmd.Parameters.AddWithValue("@ResNum", res);
con.Open();
cmd.ExecuteNonQuery();
}
//ذخیره شماره سپرده
}
else
Label1.Text = " .مشکلی در تأیید خرید شما وجود دارد " + Result;
}
else
Label1.Text = " .رسید دیجیتالی شما قبلاً مصرف شده است ";
}
}
else
Label1.Text = " .خرید شما توسط بانک تأیید نشد " + State;


}
public static bool ValidateServerCertificate(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}

مهدی کرامتی
سه شنبه 06 اسفند 1387, 10:16 صبح
شما میبایست بررسی کنی و ببینی آیا در مرحله ای که این پیام رو دریافت میکنی پول از حساب کاربر کسر میشه یا نه. با کارت خودت بعنوان مشتری سیستم رو تست کن، بعد از یک ساعت چک کن ببین مبلغ مورد نظر ازش کم شده یا نه. اگر کم شده مشکل در وب سرویس اونهاست که پاسخ نادرست میده.
سیستم پرداخت بانک اقتصاد نوین ورژن قدیمی همون سیستم پرداخت بانک سامان (نوشته شده توسط Kishware) است، و بخاطر اینکه سیستم مال خودشون نیست هر باگی که توش پیدا میشه یک سال طول میکشه تا برطرف کنند. بهتره با بانک های دیگه مثل بانک سامان یا پارسیان برای پرداخت آنلاین کار کنی.

milade
سه شنبه 06 اسفند 1387, 10:26 صبح
سلام
احتمالا" مقدار اون قدر کم هست !، که مقدار Result کمتر از 0.0 برگشت داده میشه !
پیشنهاد میکنم مقدار Result رو چاپ کن ببین چه قدره ، اگه صفر بود که یعنی مقدار کم بوده و اصلا" بانک در نظر نگرفتتش ، اما اگه مقدار داشت ، کدت اشکال داره .
راستی یه نگاه بنداز ببین وقتی مثلا" 10 ریال پرداخت میکنی از حسابت کم میشه یا نه ؟!
موفق باشید

bbc_sh
سه شنبه 06 اسفند 1387, 22:55 عصر
من رفتم به قسمت مدیریت پرداخت های الکترونیک کاربر توی سایت بانک اقتصاد نوین,تراکنش های خودمو دیدم,وضعیت تراکنش ها برگشت خورده بود. توی همین قسمت بالای صفحه موجودی قابل برداشت کارت رو نوشته ,من یه خرید 10 ریالی انجام دادم و بعد از 7-8 ساعت که دوباره اومدم موجودی تغییری نکرده بود و کمتر نشده بود .

milade
چهارشنبه 07 اسفند 1387, 06:59 صبح
سلام
خوب پس میشه گفت که مقدار اون قدر کم بوده که بانک محاسبش نمیکنه !
من اطلاعی درباره این بانک ندارم و با پارسیان کار کردم ، پیشنهاد میکنم با واحد پشتیبانیشون تماس بگیرین تا حداقل پرداختیی رو بهتون بگن !
موفق باشید

alicomputer
جمعه 11 بهمن 1392, 19:53 عصر
من تو جواب گرفتم ار سایت اقتصاد نوین مشکل دارم. نمی دونم چطوری باید جواب را از سایت بگیرم کسی اطلاعات در این مورد داره؟...