PDA

View Full Version : سوال در مورد OrderId ، درگاه بانک ملت



bftarane
چهارشنبه 11 تیر 1393, 10:39 صبح
سلام.
در اتصال به درگاه بانک ملت پارامتری به اسم orderId
وجود داره که باید یونیک باشه
و اگه یونیک نباشه خطای 41 میده




من قصد دارم موقع کلیک دکمه پرداخت چک کنم مادامی که خطای 41 بر می گرده دوباره
یه orderId جدید تولید بشه


حالا می خواستم بدونم آیا روال بالا درسته؟
و آیا لزومی داره ما این OrderId رو در جدول تراکنشهای خودمون هم نگه داریم یا نه؟ آخه به نظرم همین که نام کاربری و
SaleReferenceId رو نگه داریم کافیه.

Muhammad-Ali
پنج شنبه 12 تیر 1393, 14:32 عصر
و آیا لزومی داره ما این OrderId رو در جدول تراکنشهای خودمون هم نگه داریم یا نه؟ آخه به نظرم همین که نام کاربری و
SaleReferenceId رو نگه داریم کافیه.


من که همین رو میخوام ثبت کنم. orderId ثبت بانک نگه داشته میشه. نیازی بود اونجا هست. مگر اینکه بخواید از orderId استفاده دیگه ای کنید خودتون.

_elhfarzan
دوشنبه 16 تیر 1393, 12:31 عصر
عزیزم چرا هی چک میکنید؟؟؟ شما موظفی که یه کد یونیک درست کنی و به بانک بفرستی. ساخت کد یونیک هم کار سختی نیست. از عدد سیکل سی پی یو استفاده کن یاهرچی. بعدشم در جدول ثبت کن . چون واسه ساخت یه برنامه مالی باید قبل از پرداخت مشخص کنی کد هزینه هارو . بعد از پرداختم که بانک فقط کدهای خودشو برمیگردونه نه کد هزینه های تورو. پس با این کد مشترک orderid میتونی جدول تراکنش و هزینه رو مرتبط کنی

bftarane
دوشنبه 16 تیر 1393, 15:41 عصر
چرا هی چک میکنید؟؟؟
ممنون. آخه می دونید جریان چی بود؟ من به صورت تستی چند بار به درگاه وصل شده بودم و هر دفعه هم یه OrderId تستی داده بودم، مثلاً 999، 1، 3000 که الآن یادم نمی یاد طبیعتاً.
بعد دفعه بعد که می خواستم تست کنم اگه همین 999 رو وارد می کردم بانک خطای 41 میداد. یعنی هنوز اون موقع اصلاً جدولی طراحی نکرده بودم. دستی داشتم تست می کردم.
به هر حال بانک این شماره سفارشهایی که من فرستاده بودم رو ذخیره کرده بود و اجازه تکرار نمی داد و در نتیجه به درگاه وصل نمی شد. بنابراین من مجبور شدم اول یه عدد رندم تولید کنم بعد موقع رفت به بانک چک کنم اگه خطای 41 نداد در جدول خودم این شماره سفارش رو ذخیره کنم (البته می دونم در جدول خودمم باید یونیک باشه) و بعد هم که می ره سمت درگاه.

ولی در مورد بانک پاسارگاد چند بار با شماره سفارش 1 تست کردم ایرادی نگرفت و در همه اون تست ها به درگاه متصل شدم.

شما موظفی که یه کد یونیک درست کنی و به بانک بفرستی. ساخت کد یونیک هم کار سختی نیست.
درسته. ولی به هرحال احتمال داره اون عدد رندمی که ما ایجاد میکنیم تکراری باشه. هر چند احتمالش کم باشه. من به وسیله کد زیر عدد رندم رو ایجاد می کنم.

Random rnd = new Random();
protected int GetRandomInt(int min, int max)
{
return rnd.Next(min, max);
}

PayOrderId = GetRandomInt(123456, 2147483647).ToString();


یعنی میشه یه عدد یونیک از نوع long ایجاد کرد که مطمئن باشیم حتماً تکراری نیست بدون اینکه چک کنیم؟


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