Tải bản đầy đủ (.pdf) (12 trang)

tìm hiểu và sử dụng dotshoppingcart

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.14 MB, 12 trang )

Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 1
THANH TOÁN TRỰC TUYẾN TRONG DOTSHOPPINGCART

Mục lục
I. Xây dựng Provider Model 2
1. Giới thiệu 2
2. Xây dựng Provider Model mẫu 2
3. Nhận xét 6
II. Kiến trúc tổ chức thanh toán trực tuyến trong DotShoppingCart (DSC) 7
1. Tổng quan 7
2. Provider Payment 7
3. Thiết lập Payment trong Admin 10
4. Sử dụng các provider trong Checkout 11
III. Nhận xét tổng quan 12
1. Ưu điểm 12
2. Khuyết điểm 12


Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 2
I. Xây dựng Provider Model
1. Giới thiệu
DotShoppingCart xây dựng các thành phần chức năng của hệ thống (trong đố
có payment) theo Provider Model.
Provider Model là một mẫu thiết kế cho phép ứng dụng làm việc với nhiều
cách giải quyết khác nhau cho cùng một vấn đề.


Mục đích:
 làm cho ứng dụng dễ dàng mở rộng
 dễ dàng làm việc với nhiều hướng tương tác với tập dữ liệu thông qua
việc file thiết lập.
2. Xây dựng Provider Model mẫu
Tìm hiểu cách cấu trúc Provider Model qua sơ đồ lớp sau:

Sơ đồ lớp trên thể hiện cho ví dụ về xây dựng một Provider Model cho ứng
dụng sử dụng linh hoạt nhiều phương thức lưu trữ và kết nối dữ liệu. Dựa vào
giá trị tùy chỉnh trong file config hệ thống tự động chuyển qua lại giữa 2
phương thức lưu trữ khác nhau là SQL và XML.
Qua sơ đồ thấy được một provider gồm 4 thành phần quan trọng:
 Main Provider Class: DataProvider
 Provider Collection Class: DataProviderCollection
 Provider Configuration Class: DataProviderConfiguration
 Provider Manager Class: DataProviderManager

Main Provider Class:
Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 3

- Là một lớp abstract kế thừa từ System.Configuration.ProviderBase – một lớp
cung cấp sẵn giúp mở rộng provider.
- Định nghĩa những phương thức mà provider đảm nhận. Những phương thức
này cần được implement từ những provider thuộc loại này (kế thừa từ main
provider class). Trường hợp này là phương thức SaveValue.

Provider Collection Class:


- Lớp này kế thừa từ System.Configuration.ProviderCollection – lớp đảm
nhận nhiệm vụ làm việc với danh sách các provider được khai báo trong
file config.
- Nhiệm vụ của lớp này là trả về provider từ danh sách các provider dựa vào
tên của provider đó. Điều này được thực hiện bằng việc gọi làm hàm xử lý
cơ bản của ProviderCollection.

Provider Configuration Class:
Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 4

- Class này chứa những xử lý để quản lý những tùy chỉnh cho provider.
- Kế thừa từ System.Configuration.ConfigSection và sử dụng những phương
thưc cơ bản từ lớp này để trả về danh sách các thiết lập provider và tên của
provider mặc định.
- Có thể thêm mới những property tùy ý để chứa các giá trị lấy được từ file
config (những property phải tồn tại trong thiết lập trong file config).
- Mỗi property cần được bổ sung thêm thuộc tính ConfigurationProperty với
tham số là tên của property thể hiện trong file config.
- Thuộc tính Providers (ProviderSettingsCollection) vai trò thể hiện cho thẻ
<providers /> trong file config.
- Thuộc tính DefaultProviderName: set và get tên provider mặc định.


Provider Manager Class:
Payment in DotShoppingCart 0812491-0812493



FIT08 – HCMUS Trang 5
Nhiệm vụ của class này là khởi tạo provider và load tất cả những thiết lập tùy
hỉnh vào bộ nhớ.
Ở đây cần chú ý 2 điểm trong hàm Initialize:
 Sử dụng phương thức GetSection cung cấp bởi
System. Configuration.ConfigurationManager
(tham số truyền vào là tên element
chứa thiết lập trong file config, trong trường hợp này là DemoProvider)
để lấy về thể hiện của đối tượng thuộc Provider Configuration class
.
 Dùng ProvidersHelper để khởi tạo đối tượng thuộc Provider Collection

class từ danh sách các provider load được từ file config.
Implement các thể hiện của Main Provider class:
- Trong ví dụ hiện tại có 2 class là thể hiện của Main Provider:
SQLDataProvider và XMLDataProvider.
- Nhiệm vụ chính của class là thể hiện của Main Provider:
 Override lại các phương thức của Main Provider class.
Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 6
 Override lại phương thức Initialize của ProviderBase để có thể lấy về
các giá trị được lưu trữ tương ứng cho provider này trong file config.


Nội dung thiết lập trong file config:



3. Nhận xét
- Việc sử dụng Provider Model làm cho ứng dụng dễ dàng được mở rộng,
linh hoạt trong việc thay đổi các module hiện có (chỉ thay đổi trong file
config).
- Thêm mới một module chức năng cơ bản được thực hiện như sau:
 Xây dựng một main provider class định nghĩa những phương thức cơ
bản (nếu chưa có). Bộ khung quản lý (Provider Configuration, Provider
Manager, Provider Collection) cơ bản không thay đổi.
Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 7
 Sau đó thêm các thể hiện cho main provider này và implement các
phương thức với các xử lý logic.
 Cuối cùng là thiết lập các thông số trong file config.

II. Kiến trúc tổ chức thanh toán trực tuyến trong DotShoppingCart (DSC)
1. Tổng quan
- Thanh toán trực tuyến trong DSC tổ chức dựa trên Provider Model.
- Các thành phần Provider Manager, Provider Collection, Provider
Configuration được tổ chức lại để có thể sử dụng cho cả ứng dụng nhưng
bản chất nhiệm vụ của từng thành phần không thay đổi.
- Các thiết lập về thanh toán được đặt trong file DSC.config.
2. Provider Payment
Cấu trúc source code Provider :

Sơ đồ lớp tổ chức các provider thanh toán trong DSC:

Payment in DotShoppingCart 0812491-0812493



FIT08 – HCMUS Trang 8


a. DSCProvider: được xem là main provider class trong Provider Model

Định nghĩa phương thức GetConfigurationSettings cần được implement trong
các lớp con. Phương thức yêu cầu trả về danh sách các thuộc tính của
provider.
Mỗi phương thức thanh toán có tập những thuộc tính khác nhau  tại mỗi
phương thức thanh toán cụ thể sẽ trả về tập các thuộc tính cần thiết.
Định nghĩa mỗi ProviderAtribute:

b. Phương thức quan trọng trong provider thanh toán
Ngoài những phương thức đặc thù cho từng phương thức thanh toán, những
phương thức sau phải có trong mỗi provider cụ thể:
public override void Initialize(string name, NameValueCollection config)
Override lại phương thức Initialize từ ProviderBase.
Lấy được các giá trị đã thiết lập trong file config.

public override List<ProviderAttribute> GetConfigurationSettings()
Override lại phương thức GetConfigurationSettings từ DSCProvider.
Trả về danh sách các thuộc tính.

public static XXXPaymentProvider GetProvider()
Trả về provider mặc định thuộc loại provider hiện tại lấy từ file config.

c. Ví dụ trong phương thức thanh toán PaypalExpress
Payment in DotShoppingCart 0812491-0812493



FIT08 – HCMUS Trang 9

- Initialize:

 Lấy các giá trị thiết lập trong tham số config để khởi tạo provider.

- GetConfigurationSettings:

 Trả về các thuộc tính của PaymentExpress. Những giá trị này được sử
dụng khi thiết lập tùy chọn cho Payment trong phần Admin.


Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 10

- GetProvider:

Dựa vào SecctionName để trả về
PaypalExpressPaymentServiceConfigurationSection

chứa thông tin thiết lập cho PayPalExpress. Từ thông tin thiết lập khởi tạo
được một thể hiện PaypalExpressPaymentProvider. Thông tin trong file
config:


3. Thiết lập Payment trong Admin
Giao diện tùy chỉnh payment:


Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 11
- Việc load các phương thức thanh toán và cập nhật các tùy chính là hard-
code !
- Mỗi lần update, các thông tin thiết lập được cập nhật lại vào file
DSC.config.
4. Sử dụng các provider trong Checkout
- Việc sử dụng các provider trong thanh toán theo hướng hard-code !
- Khai báo sẵn các provider (dù rằng có dùng hay không)

- Dùng câu lệnh điều kiện if để xét xem phương thức nào đang được chọn để
sử lý  không gọi động được ! Việc tích hợp một phương thức thanh toán
mới khó khăn !


Payment in DotShoppingCart 0812491-0812493


FIT08 – HCMUS Trang 12


III. Nhận xét tổng quan
1. Ưu điểm
Các phương thức thanh toán trong DSC phát triển theo kiến trúc Provider
Model nên khả năng mở rộng, nâng cấp, thêm mới dễ dàng.
2. Khuyết điểm
- Chưa cung cấp một phương pháp “động” tích hợp các phương thức đã xây

dựng vào sử dụng khi Checkout.
- Cấu trúc tổ chức các project, các class không hợp lý. Các class nên được
đóng gói vào các project riêng chuyên biệt.


×