Pengembangan modul untuk membuat pesan keuangan untuk AWP KBR / AWP KBR-SPFS

Halo, Habr!



Ini adalah artikel kecil pertama saya tentang perkembangan kecil program keuangan, mohon jangan menilai secara ketat.



Karena tidak semua perusahaan milik negara telah menerapkan pertukaran pesan keuangan melalui sistem pesan keuangan Bank Sentral Federasi Rusia, saya ingin membongkar dan membuat sendiri prototipe kecil yang berfungsi.



Sistem Pesan Keuangan Bank Rusia (SPFS) adalah saluran alternatif untuk transmisi pesan elektronik pada transaksi keuangan. SPFS menjamin transmisi pesan keuangan yang tidak terputus di dalam negeri.



Lembaga kredit dan klien mereka - badan hukum terhubung ke SPFS segera setelah mereka secara teknis siap dan hubungan kontrak dengan Bank Rusia terjalin. Aspek prosedural ditentukan oleh peraturan terpisah dari Bank Rusia.



Untuk mengembangkan skema interaksi jaringan, Anda harus dipandu oleh dokumen berikut:



  1. CBRF.61209-049301 "Panduan Keamanan Informasi";
  2. CBRF.61209-049201 “Stasiun kerja otomatis untuk klien Bank Rusia. Panduan pengguna";
  3. CBRF.61209-049202 “Stasiun kerja otomatis untuk klien Bank Rusia. Panduan Administrator ";
  4. VAMB.00106-019301 "SCAD" Signature "versi 5." Signature-client "versi 5. Panduan administrator keamanan informasi".


Untuk mengirim pesan finansial ke sirkuit SPFS, ada software AWK KBR / AWP KBR-N / AWP KBR SPFS.



AWP KBR / AWP KBR SPFS adalah perangkat lunak khusus untuk karyawan bank atau organisasi pemerintah besar untuk menyiapkan dan mengirim pesan keuangan ke sirkuit pembayaran bank sentral. Perangkat lunak ini memungkinkan Anda untuk menandatangani dokumen keuangan secara elektronik, memeriksa dan mendekripsi pesan elektronik yang diterima dari Bank Rusia. Dalam pekerjaannya AWP KBR / AWP KBR SPFS menggunakan format dokumen keuangan UEFBS. Jenis pesan dapat berupa pesan pembayaran dan pesan informasional (membuat pesan percobaan, meminta informasi teknis, dll.).



Untuk pemrosesan, email harus dikonversi ke UEFBS di AWS KBR atau dikonversi ke ABS klien dan dikirim ke AWS KBR.



gambar



Saat bekerja dalam mode manual, email ditempatkan di direktori AWS KBD c: // uarm3 / exg / cli. Komponen built-in "Kontrol masuk" menganalisis ES yang masuk. Jika pesan berhasil melewati validasi, maka pesan masuk ke tab "masuk", jika pesan belum divalidasi, lalu masuk ke tab "Ditolak". Saat bekerja dalam mode otomatis, pesan masuk ke folder keluaran.



gambar



Sebagai bagian dari pengembangan, fungsionalitas berikut telah diterapkan:



  1. pembuatan pesan keuangan dalam format UEFBS ED101;
  2. pembuatan pesan keuangan dalam format UEFBS ED501;
  3. pembuatan pesan keuangan dalam format SWIFT MT101;
  4. menyimpan pesan keuangan dalam database MS SQL;
  5. bongkar perintah pembayaran dalam format pdf;
  6. pemrosesan pesan masuk yang diterima;


Untuk menyimpan perintah pembayaran, perlu untuk mengembangkan menu konfigurasi (pilih server, database, nama pengguna, kata sandi).



gambar



Saya akan mengatur pengaturan koneksi database global di file app.config. Akses ke pengaturan global akan dilakukan melalui ConfigurationManager dan memanggil fungsi ReadSetting, memperbarui melalui fungsi AddUpdateAppSettings.



Penghitung pesan (ed501, ed101) selama hari operasi (hari ini) juga akan diatur melalui pengaturan global:



add key="currentday" value="20200416"
add key="EDNo" value="2″ 
add key="MessageName» value="10836708462"
add key="MessageIDED501" value="2"
add key="MessageIDED501_full" value="10836708462_pain_MSG_20200416_00000002"


Jika hari operasi saat ini telah berubah, maka penghitung diatur ulang dan ES pertama diberi nomor 1.



Koneksi ke database akan dilakukan melalui koneksi TCP dan port 1433. Untuk bekerja dengan MS SQL, saya akan menggunakan Microsoft SQL Server Management studio 2018.



gambar



Untuk menampilkan email yang dibuat dan diterima untuk hari ini / semua hari, Anda perlu membuat formulir tampilan (DataGrid).



gambar



Formulir 1 akan dibuat di kelas Form1.cs. Untuk menyimpan perintah pembayaran dalam format khusus, perlu dikembangkan pengaturan penyimpanan global. Pengaturan penyimpanan akan dibuat di kelas settings.cs.



gambar



Untuk membuat perintah pembayaran (formulir 0401060 sesuai dengan Lampiran 2 Peraturan Bank Rusia tanggal 19 Juni 2012 No. 383-P "Tentang aturan untuk mentransfer dana" (sebagaimana telah diubah oleh Instruksi Bank Rusia tanggal 15 Juli 2013 No. 3025-U, tanggal 29 April 2014 No. 3248-U, tanggal 05.19.2015 No. 3641-U, tanggal 06.11.2015 No. 3844-U, tanggal 05.07.2017 No. 4449-U dan tanggal 11.10.2018 No. 4930-U)) perlu mengembangkan antarmuka pengguna khusus dan mekanisme untuk pembuatan otomatis beberapa bidang.



Antarmuka pengguna Formulir # 0401060 ditampilkan di bawah ini:



gambar



Formulir ini adalah fungsi utama sistem, setelah membuat pesanan pembayaran, detailnya dapat ditransfer ke database, menghasilkan dokumen PDF, dikirim untuk dicetak, disimpan dalam format yang sesuai (ed101, ed501, MT101). Formulir dihasilkan di kelas Form2.cs dan menggunakan kelas pp.cs untuk membuat turunan baru dari kelas CreatePP, nilai bidang akan diisi melalui pengubah akses get dan set. Untuk setiap bidang PP, nama yang sesuai adalah P1-P110 dengan pengubah akses publik dan variabel p1-110 dengan pengubah akses pribadi.



Potongan kode ditampilkan di bawah ini:



private string p1;
private string p0;
private int p2;
private int p3;
private string p4;
private string p5;
public string P0
        {
            get { return p0; }
            set { p0 = value; }
        }
        public int P20
        {
            get { return p20; }
            set { p20 = value; }
        }
        public string Status
        {
            get { return status; }
            set { status = «»; }
        }
        public string P1
        {
           get { return p1; }
            set { p1 = « »; }
        }
       public string Date_pp()
        {
            DateTime dt = DateTime.Now;
            string curDate = dt.ToShortDateString();
            return curDate;
        }


Jika tidak semua kolom diisi selama penyimpanan, program akan menyorot kolom kosong berwarna merah.



Potongan kode untuk memeriksa bidang:



if (textBox10.Text == «»)
{
textBox10.BackColor = Color.Fuchsia;
}


gambar



Setelah memanggil fungsi "create_pdf", dokumen pdf dengan kolom yang diisi akan dibuat.



gambar



Fungsi "create_pdf" akan meneruskan nilai kolom sebagai parameter, menggunakan kolom. SetField nilai-nilai ini akan dimasukkan ke dalam dokumen PDF.



Potongan kode ditunjukkan di bawah ini:



public string Pdf(string p0, string p4, string p6, string p60, string p102, int p7, string p8, string p9, string p10, string p11, string p12, int p101, string p13, string p14, string p15, string p17, string p18, string p61, string p103, string p16, int p21, string p24, string p5, string p22, string p104, string p105, string p106, string p107, string p108, string p109, string p110)
        {  string pathsafe = settings.safepathpdf + p4 + «_» + p0 + «.pdf»;
            string pathsafetemplatefont = settings.safepath + «\\Template\\Tahoma.ttf»;
            BaseFont baseFont = BaseFont.CreateFont(pathsafetemplatefont, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            PdfReader template = new PdfReader(settings.safepathetemplate);
            PdfStamper stamper = new PdfStamper(template, new FileStream(pathsafe, FileMode.Create));
            AcroFields fields = stamper.AcroFields;
            fields.AddSubstitutionFont(baseFont);
            fields.SetField(«p4», p4);
            fields.SetField(«p3», p0);
            fields.SetField(«p6», p6);


Sebagian besar bidang otomatis dan tidak memerlukan masukan pengguna.



Jumlah yang dibelanjakan untuk minuman dihasilkan secara otomatis (sesuai dengan persyaratan Bank Sentral), bank pembayar, pembayar, penerima, bank penerima ditarik. NPWP, KPP dicantumkan atas nama organisasi; Dengan nama bank, BIK, rekening koresponden diletakkan.



gambar



Membentuk dokumen ED101



gambar



Membentuk dokumen ED501



gambar



Kami mengirimkan pesan yang dihasilkan melalui AWS CBD / AWP CBD SPFS ke sirkuit pembayaran Bank Sentral Federasi Rusia.



Setelah mengirim ES ED101 / ED501, saya menerima tanda terima tanggapan dari Bank Sentral Federasi Rusia tentang status berikut:



<?xml version=»1.0″ encoding=»utf-8″?><soapenv:Envelope xmlns:soapenv=»http://www.w3.org/2003/05/soap-envelope»><soapenv:Header><props:MessageInfo xmlns:props=»urn:cbr-ru:msg:props:v1.3″><props:To>uic:452500055555</props:To><props:From>uic:KBRGATE</props:From><props:MessageID>KBRGATE_guid:786df05a239943f3bc9eca41a6fc430a</props:MessageID><props:CorrelationMessageID>guid:786df05a239943f3bc9eca41a6fc430a</props:CorrelationMessageID><props:MessageType>3</props:MessageType><props:Priority>5</props:Priority><props:CreateTime>2019-08-06T07:46:04Z</props:CreateTime><props:SendTime>2019-08-06T07:46:04Z</props:SendTime></props:MessageInfo><props:AcknowledgementInfo xmlns:props=»urn:cbr-ru:msg:props:v1.3″><props:AcknowledgementType>2</props:AcknowledgementType><props:ResultCode>0000</props:ResultCode><props:ResultText>    :uic:777777700011.    :  : ED997_06104603.dat.    :   : uic:452500055555,   : uic:777777700011.   : 2019-08-06 07:46:04</props:ResultText>

</props:AcknowledgementInfo></soapenv:Header><soapenv:Body></soapenv:Body></soapenv:Envelope>


Bidang memiliki dekripsi berikut:



CorrelationMessageID - pesan asli yang dibuat oleh AWS KBR;

ResultCode - kode status (000 - berhasil, 001 - tidak berhasil),

ResultText - status ES itu sendiri (berhasil diterima oleh TS, diproses, dijalankan).



Tautan ke pengembangan https://businessarchitecture.ru/test-spfs/ .



All Articles