Máy chủ aglet phía TTP

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Mobile agent và ứng dụng trong thanh toán điện tử (Trang 64 - 69)

Tại host Customer, ta tạo một Agent customerMaster để nhận dữ liệu do người dùng đưa vào

Input: hàng mua (MaSp, TenSP, soluong, dongia) privateKey

customer digital signature

Thông tin hóa đơn mua hàng được “ký” bằng khóa bí mật của người mua, tạo ra chữ ký số của người mua (customer digital signature), đồng thời nó dùng khóa công khai của TTP để mã hóa thông tin thanh toán (số tiền, số thẻ tín dụng)

customerMaster tạo ra agent customerSlave mang theo thông tin thanh toán đã được mã hóa, hóa đơn mua hàng và chữ ký số của người mua di chuyển tới

hostMerchant. Tại hostMerchant, agent customerSlave trao những thông tin đó cho merchantMaster. MerchantMaster dùng khóa bí mật của người bán để ký lên hóa đơn tạo ra chữ ký số của người bán và gửi tất cả chúng đến TTP

Aglet TTP chứng thực thông tin hóa đơn bằng khóa công khai của người mua và người bán, nó giải mã thông tin thanh toán của người mua bằng khóa bí mật của TPP. Nếu tất cả các thông tin được chứng thực, TTP xuất biên lai cho merchantSlave

MerchantSlave mang biên lai đã được TTP chứng thực trở về hostMerchant và trao cho customerSlave

customerSlave mang biên lai trở về hostCustomer

3.3.2.3. Mô hình xử lý dòng dữ liệu

a. Yêu cầu thanh toán:

1. Tạo aglet customerSlave

2. Di chuyển aglet customerSlave đến host Merchant để gửi yêu cầu thanh toán

protectedvoid MoveToMerchant(Message msg) {

try{

AgletProxy p = aglet.getProxy();

p.sendOnewayMessage(new Message("GoToMerchant", "atp://Merchant:500"));

Object[] arg=new Object[]{order_infor, signed_customer, payment_data, aglet.getAgletID()};

aglet=getAgletContext.createAglet(codebase, "Yeu cau thanh toan", arg);

try {

aglet.dispatch(new URL("atp://Merchant:500"));

}

catch(Exeption e){

System.out.println("Khong the chuyen Aglet qua host Merchant");

} }

catch(Exeption e){

System.out.println("Khong the tao Aglet"); }

}

3. Nếu nhận được thông báo (message) “BIEN_LAI”  Nhận biên lai

 Lưu thông tin biên lai vào CSDL và thông báo tới người dùng public bool handleMessage(Message msg){

if (msg.sameKind("BIEN_LAI")){

MySQLConnect connect = new MySQLConnect("Customer", "root", "123456", "agletpayment");

String noi_dung=(String)msg.getArg("noi_dung");

connect.excuteQuery("INSERT INTO RECEIPT (NOI_DUNG, NGAY_TAO) VALUES('"+ noi_dung +"',

CURRENT_TIMESTAMP)"); }

}

b. Chủ hàng nhận yêu cầu thanh toán

1. Tạo aglet merchantSlave

2. Nhận thông tin từ customerSlave

protectedvoid GetAgletConsumer(Message msg){

int i=1; while (e.hasMoreElements()){ AgletProxy proxy=(AgletProxy)e.nextElements(); if (proxy.getAgletClassName()== "Consumer"){ customer_id=proxy.getAgletID(); return; } } }

3. Di chuyển aglet merchantSlave đến host TTP để gửi yêu cầu xác thực

protectedvoid MoveToTTP(Message msg) {

try

{

Object[] arg=new Object[]{order_infor, signed_customer, signed_merchant, payment_data, id_this_merchan};

aglet=getAgletContext.createAglet(codebase, "Yeu cau xac thuc",arg);

try{

aglet.dispatch(new URL("atp://TTP:500"));

}

catch(Exeption e){

System.out.println("Khong the chuyen Aglet qua host TTP");

} }

catch(Exeption e){

System.out.println("Khong the tao Aglet"); }

}

4. Nếu nhận được thông báo (message) “BIEN_LAI”  Nhận biên lai

 Chuyển lại biên lai cho customerSlave (vẫn đang chờ tại host Merchant)

public bool TranferToConsumer(Message msg){ AgletProxy proxy_customer =

/*Lay proxy cuc bo cua agent customerSlave */ String noi_dung=(String)msg.getArg(“noi_dung"); Message msg1=new Message("BIEN_LAI"); msg1.setArg(noi_dung);

proxy_customer.sendMessage(msg1); dispose(); //Tu huy

}

c. TTP xác thực hóa đơn và xuất biên lai

1. Chứng thực chữ kỹ số của chủ hàng 2. Chứng thực chữ ký số của người mua

3. Giải mã thông tin thanh toán của người mua 4. Tạo biên lai và gửi cho merchantSlave

public bool handleMessage(Message msg) { if (msg.sameKind("GoToTTP")) GetAgletMerchant(msg); else return false; return true; }

protected void GetAgletMerchant(Message msg){ Enumration e = getAgletContext().getAgletProxies(); int i=1; while (e.hasMoreElements()){ AgletProxy proxy=(AgletProxy)e.nextElements(); if (proxy.getAgletClassName()== "Merchant"){ merchant_id=proxy.getAgletID(); return; } } }

Public void run(){

AgletProxy proxy_merchant =

getAgletContext.getAgletProxy (merchant_id); /*

Lay proxy cuc bo cua agent merchantSlave */

proxy_merchant.sendMessage(new Message("BIEN_LAI")); }

3.3.2.4. Giao diện chương trình

a. Màn hình đăng nhập

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Mobile agent và ứng dụng trong thanh toán điện tử (Trang 64 - 69)

Tải bản đầy đủ (PDF)

(74 trang)