PDA

View Full Version : مشکل در اتصال به درگاه پرداخت آنلاین بانک ملی با ASP.Net



j.noruzi@gmail.com
شنبه 16 مرداد 1389, 22:23 عصر
با سلام
برای اتصال به درگاه پرداخت الکترونیک بانک ملی که همون دامون هستش به مشکل بر خوردم.

پشتیبان های فنی هم که ازشون می پرسی تو ASP.Net چجوری هست می گن ما نمی دونیم، اگه می خوای یه شرکت رو معرفی کنیم که کامپوننت نوشتن، واسه این کار و با دریافت هزینه راهنماییتون می کنن( احتمالا تبلیغ و تبانی با اونا).

باز خوبه اینا این سیستم رو از یه نمونه خارجی کپی کردن و خوشبختانه نمونه خارجی همه نمونه کد ها رو تو همه زبانها گذاشته.
نمونه خارجی AuthorizeNet.com هست. داکیومتاش هم محشره.
لا اقل اونم ترجمه می کردن خوب می شد.
خلاصه من نمونه کد اتصال یا همون Integration با دامون رو می زارم. این کد ارسال درخواست هست. در آینده کد دریافت پاسخ رو هم می زارم.
لینک دانلود: http://Adak-co.ir/Guides/DamoonIntegration.rar

نا گفته نمونه این به روش SIM هست.
امیدوارم مفید بوده باشه.
بای

hadiranji
دوشنبه 08 شهریور 1389, 13:26 عصر
معمولا بانکها از متد post برای ارسال پاسخ استفاده می کنند که تو اون حالت :Label1.Text = Request.Form["code"];و اگه از متد getاستفاده کنن :Label1.Text = Request.QueryString["code"];

novinweb
چهارشنبه 10 شهریور 1389, 11:36 صبح
سلام خسته نباشید
با پنل بانک ملی - دامون کار کردم
اگه هنوز مشکلت حل نشده ایمیل بزن تا کمکی از دستم بر اومد راهنمایی کنم
موفق باشی

javadhemati
سه شنبه 16 شهریور 1389, 09:20 صبح
من با دامون یه مشکلی دارم.
موقع وصل شدن به بانک و بازگشت و نشان دادن نتیجه پرداخت مشکلی ندارم و درست انجام میشه.
ولی برای پیاده سازی Verification لیست همه پرداخت های یک کاربر رو براش نشون میدم.و هر کدوم که تایید نشده براش دکمه پیگیری گزاشتم ولی نتونستم کاری کنم.
همچنین از ReceiptPage هم چیزی نفهمیدم
ممنون میشم راهنمایی کنینن.

reza6966
چهارشنبه 07 مهر 1389, 20:53 عصر
خلاصه من نمونه کد اتصال یا همون Integration با دامون رو می زارم. این کد ارسال درخواست هست. در آینده کد دریافت پاسخ رو هم می زارم.
لینک دانلود: http://Adak-co.ir/Guides/DamoonIntegration.rar

دوست عزیز اگه امکانش هست کد دریافت پاسخ هم بذارید
ممنون

HamidNch
یک شنبه 21 فروردین 1390, 11:01 صبح
سلام دوستان.این لینک خراب شده و کار نمی کنه.کسی لینک سالمش رو داره.
تشکر

naeeme
یک شنبه 21 فروردین 1390, 11:25 صبح
من با دامون یه مشکلی دارم.
موقع وصل شدن به بانک و بازگشت و نشان دادن نتیجه پرداخت مشکلی ندارم و درست انجام میشه.
ولی برای پیاده سازی Verification لیست همه پرداخت های یک کاربر رو براش نشون میدم.و هر کدوم که تایید نشده براش دکمه پیگیری گزاشتم ولی نتونستم کاری کنم.
همچنین از ReceiptPage هم چیزی نفهمیدم
ممنون میشم راهنمایی کنینن.

اصلا از Verification بانک ملی انتظار دریافت یک پاسخ تمیز و شسته رفته نداشته باش! بهتره بگم اگه نبود، سنگین تر بود!!
همون اطلاعاتی که موقع ارسال داوطلب به بانک فرستادی رو به آدرس Verification میفرستی و همونجا بصورت متن اطلاعات رو بهت نشون میده. هیچی هم به سمت سایت برنمیگردونه. پس اصلا انتظار نداشته باش که بتونی این کار رو به مشتری واگذار کنی و اطلاعات رو توی دیتابیست ذخیره کنی.
من که اصلا جرات استفاده از بانک ملی در تراکنشهای با قیمت بالا رو ندارم. دردسرش زیاده، مخصوصا در زمانهایی که اینترنت مشکل داره یا بار روی سایت شما بالاست.
کلا اگه خیلی اصرار دارین با بانک ملی کار کنین، من حاضرم کلی تجربه در اختیارتون بگذارم(‌دیگه توی پرداخت‌های الکترونیکی بانک‌های مختلف مو سفید کردم!!)

البته این نکته رو بگم که پیاده سازی ساده ای داره و اگر اینترنت کشور ما قابل اعتماد بود، واقعا درست‌ترین روش برای پرداخت‌های الکترونیکی رو بانک ملی داشت اما به دلیل نامطمئن بودن اینترنت و عدم وجود بستر مناسب، الان دامون زیاد مطمن نیست. بزرگترین ایراد این هست که مشتری رو شما میفرستید سمت بانک، اونجا کسر از حساب میشه اما مشتری نمیتونه برگرده سمت سایت. توی این حالت، شما خدمات نمیدین، مشتری پول از حسابش کسر شده، پشتیبانی بانک ملی یک شماره تراکنش به مشتری میده که شما ازش باخبر نیستین، حالا فرض کن طرف 20 تا تراکنش انجام داده و شما نمیدونین کدوم یکی از این تراکنشها تراکنش مورد نظر هست. Verification باید دستی انجام بشه، اطلاعات Verification به صورت امن به سایت شما ارسال نمیشن و تمام اینها باعث میشه که هم شما هم مشتری ناراضی باشه.
حالا اگر یه سایت با مشتری زیاد باشید، مثلا فروش بلیط قطار، دیگه رسما باید بزنی توی سر خودت!! چون حتی نمیتونی حدس بزنی چند درصد از مشتریات چنین وضعیتی پیدا کردن چه برسه به اینکه بخوای پیگیری وضعیت کنی!

HamidNch
دوشنبه 22 فروردین 1390, 08:55 صبح
خیلی ممنون از راهنمایهات.
ببین دوست عزیز کل داستان این هست که من می خوام تو یه صفحه که یه رادیوباتون لیست داراری سه گزینه"ملی-صادرات-سامان"هستش با توجه به انتخاب هرکدوم PostBackUrl موردنظر در باتون سابمیت رو تغییر بدم میدونم این قسمت هیچ ربطی به مسئله اصلی نداره.اما فرمودین که تجربه کافی دارین دارم مشکلاتمو عرض میکنم.
(نکته اینکه این صفحه از یه مسترپیج مشتق میشه.)
حالا من تونستم ارتباط از طریق درگاه سامان رو برقرار کنم.واطلاعات رو از طریق متد پست به سایت سامان ارجاع بدم تا اینجا درست.اما بعد از برگشت از سایت بانک چه از طریق دکمه بازگشت یا چه از طریق دکمه تکمیل فرایند می بایست
من به صفحه ای که در سایتم برای این هدف تعیین کردم برگرده،این کارم میشه اما اررور میده علت ارور هم اون کدای Verification در لود صفحه هستش و نتونستم مشکل رو حل کنم.
و اما مشکل در ارتباط با بانک ملی (چون با ASp.NET و C# کار میکنم)نمونه سورسهایی که بانک در اختیارم قرار داده بدردم نمی خوره.و از شما دوست عزیز می خوام در صورت امکان تمامی تنظیمات صفحه ارجاع و بازگشت به / از بانک رو بهم بگین.
من شدیدا منتظر راهنمائی های شما هستم.تشکر

naeeme
چهارشنبه 31 فروردین 1390, 11:12 صبح
خیلی ممنون از راهنمایهات.
ببین دوست عزیز کل داستان این هست که من می خوام تو یه صفحه که یه رادیوباتون لیست داراری سه گزینه"ملی-صادرات-سامان"هستش با توجه به انتخاب هرکدوم PostBackUrl موردنظر در باتون سابمیت رو تغییر بدم میدونم این قسمت هیچ ربطی به مسئله اصلی نداره.اما فرمودین که تجربه کافی دارین دارم مشکلاتمو عرض میکنم.
(نکته اینکه این صفحه از یه مسترپیج مشتق میشه.)
حالا من تونستم ارتباط از طریق درگاه سامان رو برقرار کنم.واطلاعات رو از طریق متد پست به سایت سامان ارجاع بدم تا اینجا درست.اما بعد از برگشت از سایت بانک چه از طریق دکمه بازگشت یا چه از طریق دکمه تکمیل فرایند می بایست
من به صفحه ای که در سایتم برای این هدف تعیین کردم برگرده،این کارم میشه اما اررور میده علت ارور هم اون کدای Verification در لود صفحه هستش و نتونستم مشکل رو حل کنم.
و اما مشکل در ارتباط با بانک ملی (چون با ASp.NET و C# کار میکنم)نمونه سورسهایی که بانک در اختیارم قرار داده بدردم نمی خوره.و از شما دوست عزیز می خوام در صورت امکان تمامی تنظیمات صفحه ارجاع و بازگشت به / از بانک رو بهم بگین.
من شدیدا منتظر راهنمائی های شما هستم.تشکر

دوست عزیز، یه سوال هم خصوصی پرسیده بودین که اون رو اینجا میذارم تا در کل همه رو جواب بدم. سوالی که پرسیده بودین:


یکی از مشکلات عمده من اینه که نمیتونم قبل ارسال فیلدها به صفحه پرداخت بانک ،این فیلدها رو در دیتابیس ذخیره کنم.چون که وقتی با دکمه عمل سابمیت رو انجام میدی دیگه کدی رو در سمت سرور نمتونی اجرا کنی که عمل ثبت رو انجام بدهفدر سمت جاوااسکریپت هم که باید از وب سرویسها و آژاکس جی کوئری استفاده کرد.لطفا با توجه به تجربه تون ممکنه راهنمائی کنین.فلسفه اینکار چیه و چطور میتونم اطلاعات رو قبل از ارسال ذخیره کنم.
تازه مشکل دوچندان میشه وقتی که بخوایم از مسترپیج و همچنین لو.د یوزرکنترل بصورت داینامیک اونم سمت کلاینت استفاده کنیم.

۱) در مورد ثبت اطلاعات قبل از ارسال به بانک:
همونطور که خودتون اشاره کردین، چون از روش پست باید استفاده بشه، شما چاره‌ای ندارین جز اینکه اطلاعات رو قبل از ساخت صفحه ارسال کننده، در دیتابیس ذخیره کنین. یعنی وقتی کاربرتون صفحه ارسال کاربر به بانک رو دید، اطلاعات ارسال رو شما قبلاتوی دیتابیس ذخیره کردین. حالا اگر روی دکمه قبول کلیلک نکرد، دیگه مهم نیست. همینجا انصرافش رو اعلام کرده در واقع. مثل این میمونه که بره توی سایت دروازه پرداخت و کل صفحه رو ببنده.
۲) استفاده از مستر پیج در اینگونه صفحات:
تنها چاره اش این هست که شما صفحه تون رو از ابتدا بسازین. برای اینکار باید از Page.Response.Clear() استفاده کنین و ActionSource تگ form رو به سایت مقصد و Action method رو به post تغییر بدین. در کل کار سختی نیست و فقط یه مقدار ابتکار میخواد! کاری که من میکنم این هست:

پاک کردن محتویات صفحه با Page.Response.Clear()
خواندن فایل مسترپیج با IO.StreamReader
تبدیل فایل مسترپیج به فایل HTML
تغیر تگ from به تگ form دلخواه
جایگزینی رشته حاصله که یک HTML هست با صفحه فعلی با استفاده از Page.Response.Write

شما کارهای ساده تری هم میتونید انجام بدید. مثلا به جای خوادن مستر پیج از همون page.response استفاده کنید. اما در کل باید تمام مراحل فوق رو برید. نتیجه این عملیات یک صفحه با فرمت HTML هست که کاربر رو به سایت بانک هدایت میکنه.
۳)‌صفحه بازگشت کاربر:
این صفحه کد خاصی نداره اما مهمترین صفحه هست. چون نتیجه رو به شما اعلام میکنه.
در بانک سامان که شما باید در این صفحه متد inquery رو فرخوانی کنید و در بانک ملی نیازی به این کار نیست.

در مورد کد، بهتره شما کدتون رو بگذارید تا قسمت به قسمت راهنمایتون کنم
در مورد فلسفه این کار هم بگم که در حال حاضر(‌تا اونجا که من کار کردم)‌فقط بانک پارسیان هست مه از روش Post استفاده نمی کنه و بانکهای ملی(صادرات هم که همون ملیه)، سامان، تجارت، ملت و سپه هم از روش POST استفاده میکنن. میتونم بگم دلیل اینکار کاهش میزان ارسال و دریافت در سطح شبکه است.

HamidNch
چهارشنبه 31 فروردین 1390, 11:43 صبح
خیلی ممنون از راهنمائی های ارزنده تون.
من برای لود یوزرکنترل از این تابع اسکریپتی استفاده میکنم:

function loadUserControl(obj)
{
$.blockUI(
{
message: '<h4 style="font-family:tahoma;color:lime"><img src="' + imagePath + '/ajaxImages/loading_User.gif" /><br /><br />... درحال بارگذاري</h4>',
fadeIn: 1000,
fadeOut: 1000,
centerX: true,
centerY: true,
css:
{
border: 'none',
padding: '5px',
backgroundColor: 'transparent',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .6,
color: '#fff'
}
});
var ControlName = obj;
$.ajax({
type: "POST",
url: "Sport_InternetShetabPayment.aspx/Result",
data: "{controlName:'" + ControlName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response)
{
$.unblockUI();
$('#result').html(response.d);
},
failure: function (msg)
{
$.unblockUI();
$('#result').html(msg);
}
// ,error: function (xhr, status, error)
// {
// $.unblockUI();
// // Boil the ASP.NET AJAX error down to JSON.
// var err = eval("(" + xhr.responseText + ")");

// // Display the specific error raised by the server (e.g. not a
// // valid value for Int32, or attempted to divide by zero).
// alert(err.Message);
// }
});
}
حالا تو اون یوزرکنترل من یه TextBox دارم که مبلغ پرداختی رو از کاربر میگیره و بعدش یه دکمه هست که بازدن اون بایستی ابتدا اطلاعات ذخیره و سپس به سایت بانک ارجاع بشه:
این کدها رو من نوشتم:
private void submitForm()
{
string bankID = "1";
string loginID = "TestMer08";
string transactionKey = "eoXaEm2LUnz2OiyQ";
string amount = txt_amount.Value;
string description = "Sample Transaction";
//string label = "Submit Payment"; // The is the label on the 'submit' button
//string testMode = "false";
string currency_code = "Rial";
//Random random = new Random();
String seq = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() +
DateTime.Now.DayOfYear.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +
DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
string sequence = seq.ToString();//(random.Next(0, 1000)).ToString();
string timeStamp = ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString();
string fingerprint = HMAC_MD5(transactionKey, loginID + "^" + sequence + "^" + timeStamp + "^" + amount + "^" + currency_code);
InsertPaymentReadyMelli(sequence, amount, bankID, timeStamp, fingerprint, description);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Write("<form name='newForm' method='post' action='https://Damoon.bankmelli-iran.com/DamoonPrePaymentController'>");
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_description\" value=\"{0}\">", description));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_fp_sequence\" value=\"{0}\">", sequence));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_fp_timestamp\" value=\"{0}\">", timeStamp));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_fp_hash\" value=\"{0}\">", fingerprint));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_login\" value=\"{0}\">", loginID));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_amount\" value=\"{0}\">", txt_amount.Value));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_currency_code\" value=\"{0}\">", currency_code));
//System.Web.HttpContext.Current.Response.Write("<asp:Button ID='btnSend' runat='server' Text='پرداخت' CssClass='sport_BtnForm' onClientClick='setAndSaveMelli()' />");
System.Web.HttpContext.Current.Response.Write("</form>");
System.Web.HttpContext.Current.Response.Write("</body>");
HttpContext.Current.Response.Write(
"<link href='../Styles/CSSSportMaster.css' rel='stylesheet' type='text/css' />" +
"<link href='../Styles/CSSSport_Login.css' rel='stylesheet' type='text/css' />" +
"<link href='../Styles/CSStxtLogin.css' rel='stylesheet' type='text/css' />" +
"<link href='../Styles/CSSSport_HorizMenu.css' rel='stylesheet' type='text/css' />" +
"<link href='../Styles/CssSport_SettleInternetShetab.css' rel='stylesheet' type='text/css' />" +
"<script src='../Scripts/jquery-1.4.4.js' type='text/javascript'></script>" +
"<script type='text/javascript'>document.forms[0].submit();</SCRIPT>");

protected void btnSend_Click(object sender, EventArgs e)
{
submitForm();
}
}

ازاونجایی که بوزرکنترل توسط جی کوئری لود میشه بصورت Htmlهست.ودسترسی به رویداد کلیک باتون در سمت سرور ممکن نیست.

naeeme
چهارشنبه 31 فروردین 1390, 11:54 صبح
شما نباید این صفحه رو به صورت HTML دربیارین. کاربر اینجا مقادیر رو پر میکنه. شما محاسبات رو انجام میدین و کاربر رو به یه صفحه دیگه که اون HTML هست هدایت میکنین. در اون صفحه شما میتونید در page load امضا رو تلید کنین و مبلغ پرداختی رو نمایش بدید و از کاربر بخواید در صروتی که تایید میکنه، دکمه تایید رو بزنه. در این جا شما اون رو به سایت بانک میفرستین. غیر از این کار دیگه راه حلی وجود نداره

HamidNch
چهارشنبه 31 فروردین 1390, 13:38 عصر
با این تابع که تو جاوااسکریپت نوشتمش میشه اون متد رو بصورت وب متد اجرا کرد اما مشکلی که داره به صفحه بانک ریدایرکت نمیشه.
function submitFormToBank()
{
var amountValue = $("[id$= 'txt_amount']").val();
$.ajax({
type: "POST",
async: false,
url: "Sport_InternetShetabPayment.aspx/submitForm",
data: "{ amountValue: '" + amountValue + "'}",
contentType: "application/json; charset=utf-8",
dataType: "text",
success: function (res)
{
// result = data.d;
alert("Yes");
},
error: function (fail)
{
alert("خطا به وقوع پیوست" + fail.responseText);
}
});
}

naeeme
چهارشنبه 31 فروردین 1390, 13:46 عصر
من اصلا از جاوااسکریپت استفاده نمی کنم چون قابل اعتماد نیست!
من راه حل پیشنهادی خودم رو گفتم و راه حل دیگه ای هم نمیشناسم.

HamidNch
چهارشنبه 31 فروردین 1390, 14:06 عصر
منم فرمایش شما رو قبول دارم.اما اینجوری محدود هستین.فرض کنین تو یه صفحه شما یه رادیو باتون لیست دارن که با انتخاب هرکدوم یه یوزرکنترل لود میشه که مربوط به هر کدوم از بانکهاست.خوب برای اینکه صفحه رفرش نشه یا باید از آپدیت پانل استفاده کنی یا باید از جی کوئری.و همچنین بعد از لود یوزرکنترل داخل اون مقدار رو دریافت کنی و از همون جا اطلاعات رو در دیتابیس ثبت و سپس اقدام به ارسال به سایت بانک کنی.
دراینصورت شما باید از وب سرویسها هم بهره بگیری که من عرض کردم اینکارو کردم اطلاعات ثبت میشد اما شکل این بود که به سایت بانک سابمیت نمیشد.

jaykob
چهارشنبه 31 فروردین 1390, 14:08 عصر
من اصلا از جاوااسکریپت استفاده نمی کنم چون قابل اعتماد نیست!
من راه حل پیشنهادی خودم رو گفتم و راه حل دیگه ای هم نمیشناسم.


سلام دوست عزیز نمونه کد هایی که در پست اول گذاشتید لینکش خرابه اگر امکان داره دوباره قرار بدید

ممنون

HamidNch
چهارشنبه 31 فروردین 1390, 14:33 عصر
private void submitForm()
{
string bankID = "1";
string loginID = "TestMer08";
string transactionKey = "eoXaEm2LUnz2OiyQ";
string amount = txt_amount.Value;
string description = "Sample Transaction";
//string label = "Submit Payment"; // The is the label on the 'submit' button
//string testMode = "false";
string currency_code = "Rial";
Random random = new Random();
string sequence =(random.Next(0, 1000)).ToString();
string timeStamp = ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString();
string fingerprint = HMAC_MD5(transactionKey, loginID + "^" + sequence + "^" + timeStamp + "^" + amount + "^" + currency_code);
InsertPaymentReadyMelli(sequence, amount, bankID, timeStamp, fingerprint, description);
System.Web.HttpContext.Current.Response.Write("<form name='newForm' method='post' action='https://Damoon.bankmelli-iran.com/DamoonPrePaymentController'>");
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_description\" value=\"{0}\">", description));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_fp_sequence\" value=\"{0}\">", sequence));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_fp_timestamp\" value=\"{0}\">", timeStamp));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_fp_hash\" value=\"{0}\">", fingerprint));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_login\" value=\"{0}\">", loginID));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_amount\" value=\"{0}\">", txt_amount.Value));
System.Web.HttpContext.Current.Response.Write(stri ng.Format("<input type=hidden name=\"x_currency_code\" value=\"{0}\">", currency_code));
System.Web.HttpContext.Current.Response.Write("</form>");
System.Web.HttpContext.Current.Response.Write("</body>");
HttpContext.Current.Response.Write("<script src='../Scripts/jquery-1.4.4.js' type='text/javascript'></script>" +
"<script type='text/javascript'>document.forms[0].submit();</SCRIPT>");
}

HamidNch
چهارشنبه 31 فروردین 1390, 21:30 عصر
دوست عزیز naeeme می تونم خواهش کنم در رابطه با بخش Verification بنده را بیشتر راهنمائی بفرمائید.من می خوام که بصورت اتوماتیک اینکار رو انجام دهم.اینکه چجوری اتوماتیک بشه منظورم نیست بلکه منظورم نحوه نوشتن همون متدی هست که با بانک ارتباط برقرار میکنه و اطلاعات رو میگیره و با اطلاعات دیتابیس من چک میکنه.مثلا یکی از مسائلش چگونگی ارسال آدرس Url بانک برای Verification هست که چطور دراینصورت باید متد پست رو نوشت. (http://barnamenevis.org/member.php?3694-naeeme)
باتشکر

naeeme
شنبه 03 اردیبهشت 1390, 11:25 صبح
69101
دوست عزیز naeeme می تونم خواهش کنم در رابطه با بخش Verification بنده را بیشتر راهنمائی بفرمائید.من می خوام که بصورت اتوماتیک اینکار رو انجام دهم.اینکه چجوری اتوماتیک بشه منظورم نیست بلکه منظورم نحوه نوشتن همون متدی هست که با بانک ارتباط برقرار میکنه و اطلاعات رو میگیره و با اطلاعات دیتابیس من چک میکنه.مثلا یکی از مسائلش چگونگی ارسال آدرس Url بانک برای Verification هست که چطور دراینصورت باید متد پست رو نوشت. (http://barnamenevis.org/member.php?3694-naeeme)
باتشکر


طبق مستند "سیستم سبا دامون- راهنمای پیاده سازی روس SIM جهت اتصال به دامون" ویرایش 2.0.1 تاریخ 1387/03/26 شماره مستند 10003 صفحه 11، یک API استاندارد دریافت جواب از دامون، وجود داره. طبق روالی که در این صفحه و صفحات 12 و 13 توضیح داده شده، شما باید یه ReceiptPageUrl داشته باشید که استاندارد دریافت جواب اون در صفحه 12 توضیح داده شده. خیالتون رو راحت کنم که SilenceResponse پیاده سازی نشده و کار نمیکنه.
وقتی شما جواب رو از طریق صفحه ReceiptPageUrl دریافت کردیسد، باید اون جواب رو قطعی تلقی کنید و دیگه نیازی به ارسال تاییدیه به بانک ندارید. یا پیاده سازی این صفحه، عملیات پرداخت شما تکمیل شده و جواب نهایی رو دریافت میکنید.
در صفحه 14 یک سرویس به نام "سرویس Verification برای پذیرندگان" گفته شده که قبلا هم گفتم، این سرویس چیز بدربخوری نیست! برای استفاده از این سرویس باید یک صفحه دقیقا مثل صفحه ارسال داشته باشید که تمام اطلاعات ارسال شده را دقیقا همانگونه که قبلا به سایت ارسال کرده‌اید، به سایت بانک ارسال کند. یعنی امضا دقیقا باید همان امضای ارسال شده باشد. وقتی که داده ارسال شد، یه صفحه به شما نمایش داده میشود( یک صفحه سفید) که دقیقا کلیدهای نوشته شده در صفحه 12 را به شما نمایش میدهد. براساس انچه شما در این صفحه به صورت چشمی مشاهده میکنید، کلید x_trans_id وضعیت تراکنش شما را نشان میدهد. از سرویس Verification شما نمیتوانید هیچ اطلاعاتی را در دیتابیس ذخیره کنید هیچ اطلاعاتی به سمت سایت شما در این سرویس ارسال نمی شود.


ادرس URL بانک هم که ثابت هست و در همون صفحه 14 گفته شده. همون کاری که در هنگام ارسال به بانک انجام میدید رو باید انجام بدید ولی در اینجا اطلاعات ذخیره شده در بانک رو باید بفرستید نه اطلاعات تولید شده.

در مورد استفاده از JavaScript که گفیتید نیاز هست یک UC منحصر به هر بانک لود بشه، یه نگاه به سیستم پرداخت رجا و سازمان سنجش بنداز. هر دو دارن از بانکهای متفاوتی استفاده میکنند. هر دو دارن از سامان و پارسیان استفاده میکنند و همونطور که قبلا گفتم، روش پرداخت در این دوبانک با هم متفاوت هست. سامان از متد POST استفاده میکنه و پارسیان از وب سرویس. دقیقا مشکل شما رو این دوسایت دارن. اما سازمان سنجش بدون استفاده از Jquery یا Ajax یا Javascript داره این کار رو انجام میده و رجا هم با اینکه داره از Ajax استفاده میکنه اما در هنگام انتخاب بانک، از Ajax استفاده نکرده.
شما با همون Javascript هم میتونید داده ها رو در بانک ذخیره کنید.

پ.ن: در تصویر پیوست، میتوانید نتیجه حاصل از Verify را مشاهده نمایید. به آدرس سایت کاملا توجه نمایید

sara6493
چهارشنبه 08 تیر 1390, 11:01 صبح
سلام.خسته نباشيد.ببخشيد من توي يكي از تايپيك ها ديدم كه شما اطلاعات خوبي در رابطه با پرداخت الكترونيكي داريد.مي خواستم اگر امكان داره يه سوال بپرسم.

من توي دانشگاه كار مي كنم.مي خوام براي واريز شهريه از نرم افزار آموزشي دانشگاه و پرداخت الكترونيكي بانك ملي استفاده كنم. مشكلي مه وجود داره اينه كه پرداخت به خوبي انجام ميشه،پول از حساب دانشجو كم ميشه و به حساب دانشگاه واريز ميشه ولي در ليست صورتحساب بانك ملي اطلاعات دانشجويان نشون داده نميشه.فقط اطلاعات كارت بانك ها رو نشون ميده.يعني به بياني اطلاعات دانشجويان به بانك پاس داده نميشه.و امور مالي ما از اين نظر مشكل داره.البته اينو هم بگم كه دانشگاه هاي ديگه با همين نرم افزار پرداختو به راحتي انجام ميدن.
اگه راهنماييم كنيد خيلي در حقم لطف كرديد.چون خيلي وقته كه گرفتارشم.بانك هم زير بار نميره.....

satakh
شنبه 17 شهریور 1397, 16:16 عصر
با سلام
اگه کسی در وصل به درگاه بانک ملی با asp core 2 مشکلی داره حتما این لینکی که قرار میدم رو نگاه کنه
http://satakh.ir/Product/%D9%88%D8%B5%D9%84_%D8%A8%D9%87_%D8%AF%D8%B1%DA%AF %D8%A7%D9%87_%D8%A8%D8%A7%D9%86%DA%A9_%D9%85%D9%84 %DB%8C_%D8%A8%D8%A7_asp_core