به نام خدا

از آخرین پستم توی الفبا چیزی حدود ۱۱ ماه و ۷ روز میگذره توی سال ۹۹ چه اتفاقات مثبت و منفی زیادی برای هممون پیش اومد، از کرونا گرفته تا افزایش آمار ازدواج توی این دوران (که خودمم یکی از همینا بودم).

بریم سر اصل مطلب:

 توی پروژه‌ی اخیری که داشتم و مربوط به یه کشور اروپایی بود نیاز شد تا به صورت شبانه دستمزد هر شخص داخل اپلیکیشن به حسابش واریز بشه. اما اینکه به چه شکل این اتفاق میفته شروع ماجرا بود.

چیزی که توی خارج برای کارت به کارت استفاده میشه (معادل شبا برای ایران) یه چیز به اسم IBAN هست که دوحرف اولش حرف انگلیسی و نشانگر کشور مورد نظره (مثلا FR برای فرانسه) و یه کد دیگه به اسم BIC که نشانگر بانکی هست که اون حساب توشه‌ (البته با داشتن IBAN میشه BIC رو بدست آورد)

EBICS چی هست اصلا؟

ebics یه پروتکل بین بانکی مثل SWIFT میمونه با این تفاوت که فقط کشورهای آلمان و فرانسه و سوئیس ازش استفاده میکنن

۱- حضور در بانک مورد نظر و تکمیل فرم درخواست برای EBICS

باید توی هربانکی که حساب دارید حضوری تشریف ببرید و فرم درخواست برای EBICS رو تکمیل کنید. (فکر کنم فقط به شرکت ها میدن)

۲- ارسال شدن نامه به صورت فیزیکی به آدرس ثبت شده

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

همه چیز شما همون نامه است که در صفحه اول اون نامه اطلاعات شما اومده.

۴ تا چیز اساسی توی اون نامه است که اسماشون ایناست:

  • User ID
  • Client ID
  • Host ID
  • URL

با داشتن این چهار تا باید کار رو شروع کنیم.

بقیه نامه احتمالا شامل دستورات و توضیحات اون هاست.

۳- ارسال نامه به  بانک

اولین دستوری که باید اجرا کنید یه دستور ساده به اسم INI هست این دستور نه نیاز به امضا داره نه کدگذاری. ولی چجوری دستور رو اجرا کنیم و اصلا کجا اجراش کنیم.

شما باید توی کد ها یا برنامه هایی به اسم EBICS Client دستورات رو اجرا کنید اما توجه کنید که اگه این کار رو به برنامه ها بسپارید و خودتون کد نزنید ممکنه کلید پرایوتی که در پایین توضیح میدیم رو بسازن و ذخیره کنن اما به شما ندن و شما اینجوری مجبورید که برای همیشه از همون برنامه استفاده کنید پس بهتره توی اینرتنت با سرچ Ebics Client Github یه سری کدهای php و node js این کار ها رو انجام بدید.

خب داستان کلید از این قراره که شما باید سه جفت کلید RSA بسازید برای اهداف زیر:

  • authentication signature (x002)
  • electronic signature (A006)
  • encryption (E002)

باید برای این سه تا RSA ایجاد کنید و ذخیره کنید. بعد با استفاده از تابع INI برای بانک کلید پابلیک امضای دیجیتالتون (مختصرا ES) رو ارسال کنید و بعد با HIA هم دوتا کلید پابلیک دیگه رو ارسال کنید.

توجه: بانک فقط یه دفعه قبول میکنه و اگه چیزی رو اشتباه زدید یا ارسال کردید اما کلید ها رو ذخیره نکردید عملا وضعیتتون تغییر پیدا میکنه و باید زنگ بزنید به بانک تا حسابتون رو ریست کنه تا بتونید یه بار دیگه درخواست ها رو ثبت کنید.

وقتی ارسال شد باید کلید ها رو چاپ کنید و همچنین زیر هرکدومش هش رو هم بنویسید (SHA-256) بعد امضا کنید و برای بانک بفرستید.

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

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

۴. انجام تراکنش

همه ی درخواست های شما به سرور های EBICS بانک ها یا اطلاعاتی رو دانلود میکنن (دریافت) یا آپلود میکنن.

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

همه درخواست ها به شکل زیر انجام میشه:

درخواست اول داده میشه و توی درخواست دوم چنانچه آپلود باشه آیدی درخواست اول توی درخواست دوم قرارداده میشه و همچنین دیتا با عنوان OrderData توی فایل XML قرار میگیره و ارسال میشه.

اگه دانلود باشه درخواست بدون OrderData میره ولی وقتی جواب برگشت توش OrderData داره باید آیدی جواب رو توی یک ریکوئست فرستاد و به بانک اعلام کرد که اطلاعات دانلود شد

چیز زیاد سختی نیست

از مهم ترین نکته ها اینکه که اگه بخواین برای انتقال پول بدون SEPA کردن استفاده کنین باید از همون فرم Pain.001 ورژن ۳ استفاده کنین با این موضوع که حتما به جای استفاده از SEPA از BKTR استفاده کنین اینجوری توی یه کشور میتونن پول انتقال بدین (مثلا فرانک به فرانک) چون توی SEPA فقط EUR قبوله.

 

میدونم ناقص گفتم ولی فکر نکنم همینو هم کسی بخونه

در کل اینم شاید به دردتون بخوره که pain001 برای ارسال اطلاعات یا همون آپلودشونه و pain002 جواب بانک به ما هست که همشون به شکل pain.00x.001.03 نوشته میشن که یعنی ورژن ۳ برای اینکه بتونید ساختار فایل xml رو ببینید میتونید از فایل های XSD استفاده کنید که توی اینترنت موجوده.

موفق باشید