THIẾT KẾ LẬP TRÌN H HIỆN THỰC HÓA HỆ THỐNG 1 Thiết kế tổng thể

Một phần của tài liệu Hệ thống thanh toán ñiện tử ứng dụng cho thanh toán qua internet dựa trên họ giao thức iKP (Trang 65 - 76)

- Các thông số còn lại (không có dấu ngoặc) là dành cho mọi giao thức trong họ iKP.

5.2.THIẾT KẾ LẬP TRÌN H HIỆN THỰC HÓA HỆ THỐNG 1 Thiết kế tổng thể

1. Y/c tạo phiên giao dịch mớ

5.2.THIẾT KẾ LẬP TRÌN H HIỆN THỰC HÓA HỆ THỐNG 1 Thiết kế tổng thể

5.2.1. Thiết kế tổng thể

5.2.2. Thiết kế các module chương trình

5.2.2.1. Module iKP_eWallet

5.2.2.1.1. Phân chia thành các hệ thống con

Như trong ựã phân tắch module iKP_eWallet ựược xây dựng là một ứng dụng dạng Win Form. Các chức năng của nó ựược phân cấp như sau:

Hình 5.12: Các chức năng ựược cung cấp bởi module iKP_eWallet

iKP_eWallet sẽ ựược chia nhỏ thành 4 module con:

TransactionMng : ựảm nhiệm chức năng Quản lý giao dịch

SignatureMng : ựảm nhiệm chức năng Quản lý chữ ký số

CertificateMng : ựảm nhiệm chức năng Quản lý certificate

CryptoMng : ựảm nhiệm chức năng Má hóa/ Giải mã thông tin.

5.2.2.1.2. Thiết kế lớp

Lớp là một tập các ựối tượng có chung thuộc tắnh và phương thức. Mỗi ựối tượng là một thể hiện (instance) của một lớp. Trong .NET nhiều lớp có thể nhóm lại với nhau trong một Namespace (không gian tên). Tắnh năng này mang ựến sự thuận tiện trong việc tổ chức lớp. Các lớp có chung mục ựắch hay tương ựồng nhau về mặt nào ựó sẽ ựược nhóm trong cùng Namespace.

Namespace iKP.Buyer.TransactionMng.Packets: chứa các lớp lưu thông tin các gói dữ liệu giao thức iKP. Namespace này thuộc về module TransactionMng. Bao gồm các lớp:

o CreditCardInfo : lưu thông tin về thẻ tắn dụng của Buyer. CreditCardInfo Class Fields _CreditCarNo As String _Expiration As Date _HolderName As String _PIN As String Methods New() Hình: Cấu trúc lớp CreditCardInfo

o Common : Lưu thông tin gói Common trong giao thức iKP

Hình: Cấu trúc lớp Common

Clear Class Fields _DATEs As Date _HCommon As String _Hv As String _Hvc As String _IDs As String _NONCEs As String _TIDs As String Properties Methods New() (+ 1 overload) Hình: Cấu trúc lớp Clear

o Desc : Lưu thông tin gói DESC trong giao thức iKP DESC Class Fields _BID As String _currency As String _deliveryAddress As String _holderName As String Properties Methods GetDESCString() As String New() (+ 1 overload) Hình: Cấu trúc lớp DESC

o AuthPrice : Lưu thông tin gói Common trong giao thức iKP AUTHPRICE Class Fields _Amount As Double _Currency As String Properties Methods New() (+ 1 overload) Hình: Cấu trúc lớp AUTHPRICE

o SLIP : Lưu thông tin gói SLIP (chứa thông tin tài khoản của Buyer) SLIP Class Fields _Amount As Double _BAN As String _Currency As String _EXPIRATION As Date _HCommon As String _PIN As String _Rb As String Properties Methods Encrypt() As EncSLIP New() Hình: Cấu trúc lớp SLIP

o EncSLIP : Lưu thông tin gói SLIP ựã ựược mã (EncSLIP) EncSLIP Class Fields _Amount As String _BAN As String _Currency As String _EXPIRATION As String _HCommon As String _PIN As String _Rb As String Properties Methods Decrypt() New() Hình: Cấu trúc lớp EncSLIP

Namespace iKP.Buyer.TransactionMng.TransactionData: chứa các lớp lưu dữ liệu của phiên giao dịch hiện hành. Namespace này thuộc về module TransactionMng. Bao gồm các lớp:

TransactionValues Class Fields Current_AuthPrice As AUTHPRICE Current_Clear As Clear Current_CreditCardInfo As CreditCardInfo Current_DATEs As Date Current_Desc As DESC Current_EncSLIP As EncSLIP Current_GlobalID As String Current_HCommon As String Current_HVCs As String Current_HVs As String Current_IDb As String Current_IDs As String Current_PayemntMessageFromSeller As String Current_Rb As String Current_SALTb As String Current_SIGs As String Current_SLIP As SLIP Current_TIDs As String Current_Validate_SIGs As Boolean Current_WSURL_of_Seller As String MonitorWindow As frmTransactionProcesses Hình: Cấu trúc lớp TransactionValues

Namespace iKP.Buyer.TransactionMng.Process: Khai báo các phương thức thực hiện từng giai ựoạn giao dịch của giao thức. Namespace này thuộc về module TransactionMng. Những giai ựoạn giao dịch có sự tham gia của Wallet bao gồm Initiate, Invoice, Payment, Confirm ựược tổ chức trong iKP_eWallet_Steps Module:

Namespace iKP.Buyer.Security.Cryptography : thư viện các hàm liên quan ựến mật mã, chữ ký số, certificate,Ầ ựược sử dụng trong chương trình. Tất cả ựều ựược xây dựng trong lớp:

o CryptoAPIs: Các phương thức ựược cài ựặt trong lớp này:

CryptoAPIs Class Methods CreateSignature() As Byte() GetCertificateOfX() As X509Certificate2 GetPKaquirer() As Byte() GetPKca() As Byte() GetPKSeller() As Byte() GetPKx() As Byte() MD5hash() As String RandomNumberGenerator() As String RSADecrypt() As String RSAEncrypt() As String SignMessage() As Byte() VeritySignedMessage() As Boolean ViewMessage() As String Hình: Cấu trúc lớp CryptoAPIs

Ý nghĩa của các hàm như sau:

CreateSignature() : tạo chữ ký số

GetCertificateOfX() : ựọc certificate của party X (Buyer, Seller, Acquirer, CA) GetPKacquirer() : ựọc public key của Acquirer (adsbygoogle = window.adsbygoogle || []).push({});

GetPKseller() : ựọc public key của Seller

GetPKca() : ựọc public key của CA

MD5Hash() : băm dữ liệu

RandomNumberGenerator() : sinh số ngẫu nhiên

RSAEncrypt() : mã hóa dữ liệu sử dụng thuật toán RSA RSADecrypt() : giải mã dữ liệu ựược mã bằng RSA SignMessage() : ký một thông ựiệp

VerifySignedMessage() : kiểm tra chữ ký

Namespace iKP.Buyer.Database : chứa các lớp thao tác dữ liệu, các lớp này thực hiện các chức năng: thêm mới, cập nhật, xóa và truy vấn dữ liệu. Bao gồm các lớp:

o CreditCardInfoController : lớp thực hiện thao tác với bảng dữ liệu B_tblCreditCardInfo.

o TransactionInfoController : lớp thực hiện thao tác với bảng dữ liệu B_tblTransactionInfo

5.2.3.1. Module iKP_WS_Seller

5.2.3.1.1. Phân chia thành các hệ thống con

Các chức năng của iKP_WS_Seller ựược phân cấp như sau:

Hình 5.13: Các chức năng ựược cung cấp bởi module iKP_WS_Seller

iKP_WS_Seller cũng ựược chia thành các module con:

TransactionMng : ựảm nhiệm chức năng Quản lý giao dịch

SignatureMng : ựảm nhiệm chức năng Quản lý chữ ký số

CertificateMng : ựảm nhiệm chức năng Quản lý certificate

CryptoMng : ựảm nhiệm chức năng Má hóa/ Giải mã thông tin.

5.2.3.1.2. Thiết kế lớp

Namespace iKP.Seller.TransactionMng.Packets: chứa các lớp lưu thông tin các gói dữ liệu giao thức iKP. Namespace này thuộc về module TransactionMng. Hoàn

toàn tương tự Namespace iKP.Seller.TransactionMng.Packets trong cài ựặt iKP_eWallet phắa Buyer.

Namespace iKP.Seller.CryptoAPIs :

Namespace iKP.Seller.Database: chứa các lớp thao tác dữ liệu, những lớp này thực hiện các chức năng: thêm mới, cập nhật, xóa và truy vấn dữ liệu. Bao gồm những lớp:

o TransactionInfoController : lớp thực hiện thao tác với bảng dữ liệu S_tblTransactionInfo

Namespace iKP.Seller.WebService: đây là Namespace quan trọng nhất của iKP_WS_Seller nó ựược cài ựặt tất cả các hàm dịch vụ Web Service có chức năng tương tác với Buyer và Acquirer trong toàn bộ quá trình giao dịch thanh toán. Namespace này thuộc về module con TransactionMng. Các lớp ựược chứa trong Namespace này gồm có:

o iKPService_of_Seller: chứa các dịch vụ của Seller thông qua các Web Service method ựược khai báo như trong hình dưới ựây.

Các phương thức quan trọng ựược cài ựặt trong lớp iKPService_of_Seller.

StartTransaction(Ầ) : Cung cấp giao diện cho Web site TMđT triệu gọi ựể khởi tạo một giao dịch thanh toán mới và khởi ựộng hệ thống thanh toán iKP.

RreceiveINITIATEDataFromBuyer(Ầ) : đảm nhiệm chức năng ở giai ựoạn Initiate của Seller. Cụ thể là nhận dữ liệu trên luồng Initiate, thực hiện xử lý rồi chuyển sang giai ựoạn Invoice.

SendINVOICEDataToBuyer(Ầ) : đảm nhiệm chức năng ở giai ựoạn Invoice của Seller. Cụ thể là truyền dữ liệu trên luồng Invoice ựến Buyer. (adsbygoogle = window.adsbygoogle || []).push({});

RreceivePAYMENTDataFromBuyer(Ầ): đảm nhiệm chức năng ở giai ựoạn Payment của Seller. Cụ thể là nhận dữ liệu trên luồng Payment, thực hiện xử lý rồi chuyển sang giai ựoạn Auth-Request.

SendAUTH-REQUESTDataToAcquirer(Ầ): đảm nhiệm chức năng ở giai ựoạn Auth-Request của Seller. Cụ thể là gửi dữ liệu trên luồng Auth-Request ựến Acquirer ựể yêu cầu xác thực thanh toán.

RreceiveAUTH-RESPONSEDataFromAcquirer(Ầ): đảm nhiệm chức năng ở giai ựoạn Auth-Response của Seller. Cụ thể là nhận kết quả xác thực thanh toán của Acquirer gửi ựến trên luồng Auth-Response, thực hiện xử lý rồi chuyển sang giai ựọn Confirm.

SentCONFIRMDataToBuyer(Ầ): đảm nhiệm chức năng ở giai ựoạn Confirm của Seller. Cụ thể là gửi dữ liệu phản hồi ựến Buyer trên luồng Confirm ựể báo cho Buyer biết rằng thanh toán ựược chấp nhận hay hủy bỏ.

iKPServices_of_Merchant SoapHttpClientProtocol Class Fields Function_for_TempOperationCompleted As SendOrPostCallback Hello_from_MerchantOperationCompleted As SendOrPostCallback ReceiveAuth_ResponseFromAquirerOperationCompleted As SendOrPostCallback ReceiveINITIATEDataFromBuyerOperationCompleted As SendOrPostCallback ReceivePAYMENTDataFromBuyerOperationCompleted As SendOrPostCallback SendAUTHPRICEDataToBuyerOperationCompleted As SendOrPostCallback SendDataToAcquirerOperationCompleted As SendOrPostCallback SendDESCDataToBuyerOperationCompleted As SendOrPostCallback SendGlobalIDToBuyerOperationCompleted As SendOrPostCallback SendINVOICEDataToBuyerOperationCompleted As SendOrPostCallback StartTransactionOperationCompleted As SendOrPostCallback useDefaultCredentialsSetExplicitly As Boolean Properties Methods CancelAsync() Function_for_Temp() As String Function_for_TempAsync() (+ 1 overload) Hello_from_Merchant() As String Hello_from_MerchantAsync() (+ 1 overload) IsLocalFileSystemWebService() As Boolean New() OnFunction_for_TempOperationCompleted() OnHello_from_MerchantOperationCompleted() OnReceiveAuth_ResponseFromAquirerOperationCompleted() OnReceiveINITIATEDataFromBuyerOperationCompleted() OnReceivePAYMENTDataFromBuyerOperationCompleted() OnSendAUTHPRICEDataToBuyerOperationCompleted() OnSendDataToAcquirerOperationCompleted() OnSendDESCDataToBuyerOperationCompleted() OnSendGlobalIDToBuyerOperationCompleted() OnSendINVOICEDataToBuyerOperationCompleted() OnStartTransactionOperationCompleted() ReceiveAuth_ResponseFromAquirer() As Boolean ReceiveAuth_ResponseFromAquirerAsync() (+ 1 overload) ReceiveINITIATEDataFromBuyer() As Boolean ReceiveINITIATEDataFromBuyerAsync() (+ 1 overload) ReceivePAYMENTDataFromBuyer() As String ReceivePAYMENTDataFromBuyerAsync() (+ 1 overload) SendAUTHPRICEDataToBuyer() As String() SendAUTHPRICEDataToBuyerAsync() (+ 1 overload) SendDataToAcquirer() As String SendDataToAcquirerAsync() (+ 1 overload) SendDESCDataToBuyer() As String() SendDESCDataToBuyerAsync() (+ 1 overload) SendGlobalIDToBuyer() As String SendGlobalIDToBuyerAsync() (+ 1 overload) SendINVOICEDataToBuyer() As String() SendINVOICEDataToBuyerAsync() (+ 1 overload) StartTransaction() As Boolean StartTransactionAsync() (+ 1 overload) Events Hình: Cấu trúc lớp iKPService_of_Seller

5.2.4.1. Module iKP_WS_Acquirer

5.2.3.4.1. Phân chia thành các hệ thống con

Như ựược thể hiện trong biểu ựồ phân cấp chức năng (BPC), các chức năng của module iKP_WS_Acquirer ựược tổ chức như sau:

Hình 5.14: Các chức năng ựược cung cấp bởi module iKP_WS_Acquirer

Toàn bộ các chức năng của iKP_WS_Acquirer ựược chia nhỏ thành 3 module con:

TransactionMng: đảm nhiệm chức năng Quản lý giao dịch. Cụ thể nó có nhiệm vụ tiếp nhận dữ liệu gửi ựến từ Seller, xử lý, kết nối với mạng thanh toán liên ngân hàng (Clearing Network) ựể yêu cầu xác thực, và trả kết quả trở lại Seller.

SignatureMng : ựảm nhiệm chức năng Quản lý chữ ký số như tạo, xác minh chữ ký số.

CertificateMng : ựảm nhiệm chức năng Quản lý certificate như ựọc ra thông tin public key từ certificate của một party nào ựó ựể xác minh chữ ký hay mã hóa dữ liệu sẽ ựược truyền ựến party này. đọc ra private key của chắnh Acquirer ựể cung cấp cho module SignatureMng sinh chữ ký số.

5.2.3.4.2. Thiết kế lớp

Namespace iKP.Acquirer.TransactionMng.Packets: chứa các lớp lưu thông tin các gói dữ liệu giao thức iKP. Tương tự Namespace tương ứng của Buyer và Seller.

Namespace iKP.Acquirer.Database: chứa các lớp thao tác dữ liệu, những lớp này thực hiện các chức năng: thêm mới, cập nhật, xóa và truy vấn dữ liệu. Bao gồm lớp:

o TransactionInfoController: lớp thao tác với bảng cơ sở dữ liệu A_tblTransactionInfo Ờ lưu các dữ liệu giao dịch

o SlipInfoController: lớp thao tác với bảng cơ sở dữ liệu A_tblSLIP Ờ lưu dữ liệu SLIP ựã ựược giải mã.

o AccountInfoController: lớp thao tác với bảng cơ sở dữ liệu A_tblAccounts Ờ lưu danh sách tài khoản thẻ tắn dụng của khách hàng.

o ConsumptionInfoController: lớp thao tác với bảng cơ sở dữ liệu A_tblConsumption Ờ lưu thông tin sự tiêu dùng theo từng tháng của mỗi tài khoản thẻ (Account).

Namespace iKP.Acquirer.Security.Cryptography : thư viện các hàm liên quan ựến mật mã, chữ ký số, certificate,Ầ ựược sử dụng bởi Acquirer. Tất cả ựều ựược xây dựng trong lớp CryptoAPIs, tương tự như ựã ựược xây dựng trong module iKP_eWallet.

Namespace iKP.Acquirer.WebService: Namespace này cài ựặt tất cả các dịch vụ Web Service của Acquirer có chức năng tương tác với Seller và mạng thanh toán liên ngân hàng (Clearing Network). Các lớp ựược nhóm trong Namespace này gồm có:

o iKPService_of_Seller: chứa các dịch vụ của Acquirer thông qua các Web Service method ựược khai báo như trong hình dưới ựây.

Hình: Cấu trúc lớp iKPService_of_Acquirer

5.2.3. Thiết kế giao diện

Phần này ựược trình bày chi tiết và trực quan trong phần 5.3 (Giao diện và một số tắnh năng nổi bật của hệ thống).

Một phần của tài liệu Hệ thống thanh toán ñiện tử ứng dụng cho thanh toán qua internet dựa trên họ giao thức iKP (Trang 65 - 76)