HÓA ĐƠN VÀ HÓA ĐƠN ĐIỆN TỬ
Hóa đơn là gì
Hóa đơn là tài liệu yêu cầu thanh toán cho các mặt hàng với số lượng và đơn giá được liệt kê Được phát hành bởi bên bán, hóa đơn sẽ được xác nhận đã thanh toán khi bên mua thực hiện nghĩa vụ tài chính, kèm theo dấu chứng nhận Khi đó, hóa đơn sẽ có giá trị tương tự như biên lai hoặc giấy biên nhận.
Hình 1.1 Mẫu hóa đơn giấy
1.2.2 Lịch sử phát triển của hóa đơn
Hóa đơn là chứng từ thương mại quan trọng, thể hiện mối quan hệ mua bán giữa người bán và người mua trong nền kinh tế Ban đầu, hóa đơn chỉ có giá trị giữa hai bên, đóng vai trò làm bằng chứng cho việc chuyển nhượng hàng hóa Tuy nhiên, theo thời gian, hóa đơn đã trở nên phổ biến hơn trong các cộng đồng, như các phường hội hay định chế làng xã, nơi các tranh chấp mua bán được giải quyết dựa trên cơ sở dân sự Khi nhà nước can thiệp vào quản lý và xử lý các tranh chấp hàng hóa theo pháp luật dân sự và hình sự, hóa đơn trở thành căn cứ pháp lý để chứng minh quyền sở hữu hợp pháp và việc chuyển nhượng hàng hóa giữa các bên.
Một số quốc gia áp dụng chế độ kế toán cho các hoạt động kinh doanh thường dựa vào hóa đơn như chứng từ gốc, vì vậy hóa đơn đóng vai trò quan trọng trong kế toán Ngoài ra, trong chế độ thuế khoá, hóa đơn cũng được sử dụng để xác định doanh thu hay thu nhập tính thuế, thể hiện vai trò của nó như một chứng từ thuế Trong tương lai, với tiến trình hội nhập kinh tế quốc tế, hóa đơn sẽ trở thành một chứng từ thương mại quốc tế, phản ánh quan hệ mua bán hàng hóa và dịch vụ toàn cầu, và sẽ được các quốc gia công nhận dựa trên các hiệp định cụ thể.
1.2.3 Chi tiết về hóa đơn
Hóa đơn đóng vai trò quan trọng trong thương mại, đồng thời có thể kiêm nhiệm chức năng của chứng từ kế toán và chứng từ thuế Do đó, hóa đơn thường chứa các nội dung thiết yếu liên quan đến giao dịch.
Thông tin về hoá đơn và xác nhận giao dịch bao gồm loại hoá đơn, số hoá đơn, ngày lập hoá đơn, chữ ký của người bán và người mua Những thông tin này cần được ghi nhận để chứng minh hoá đơn được in và phát hành hợp pháp bởi tổ chức hoặc cá nhân có trách nhiệm, đảm bảo tuân thủ quy định của pháp luật.
Thông tin về người bán bao gồm tên, địa chỉ, mã số thuế, số điện thoại, địa chỉ trang web và địa chỉ thư điện tử Những thông tin này giúp xác định chính thức người bán và thuận tiện cho việc trao đổi thông tin qua mạng.
Thông tin về hàng hóa và dịch vụ bao gồm tên sản phẩm, đơn vị tính, khối lượng, đơn giá, thành tiền chưa có thuế GTGT, thuế suất GTGT, số tiền thuế GTGT và tổng số tiền thanh toán.
- Thông tin về người mua Tên, địa chỉ, mã số thuế, số tài khoản giao dịch, hình thức thanh toán
Các tổ chức và cá nhân kinh doanh có quyền tự in hoặc đặt in hóa đơn, ngoài những thông tin bắt buộc, có thể bổ sung thêm các tiêu chí khác để phục vụ cho hoạt động kinh doanh của mình, bao gồm cả in lô-gô trang trí hoặc quảng cáo Tuy nhiên, các tiêu chí bổ sung này cần phải đảm bảo phù hợp với thuần phong mỹ tục và đạo đức của người Việt, không gây ảnh hưởng đến an ninh, trật tự xã hội và không vi phạm đạo đức kinh doanh.
1.2.4 Các loại hóa đơn a) Hóa đơn giá trị gia tăng
Là loại hóa đơn dành cho các tổ chức khai, tính thuế giá trị gia tăng theo phương pháp khấu trừ trong các hoạt động sau:
- Bán hàng hóa, cung ứng dịch vụ trong nội địa
- Hoạt động vận tải quốc tế
- Xuất vào khu phi thuế quan và các trường hợp được coi như xuất khẩu
- Xuất khẩu hàng hóa, cung ứng dịch vụ ra nước ngoài b) Hóa đơn bán hàng
Dùng cho các đối tượng sau đây:
Tổ chức và cá nhân thực hiện khai báo và tính thuế giá trị gia tăng theo phương pháp trực tiếp khi tiến hành bán hàng hóa và dịch vụ trong nước, cũng như khi xuất khẩu vào khu phi thuế quan và trong các trường hợp được xem như xuất khẩu, bao gồm cả xuất khẩu hàng hóa và cung ứng dịch vụ ra nước ngoài.
Các tổ chức và cá nhân trong khu phi thuế quan khi thực hiện bán hàng hóa hoặc cung ứng dịch vụ vào nội địa, cũng như giữa các tổ chức và cá nhân trong khu phi thuế quan, cần ghi rõ trên hóa đơn là "Dành cho tổ chức, cá nhân trong khu phi thuế quan" Ngoài ra, khi xuất khẩu hàng hóa và cung ứng dịch vụ ra nước ngoài, cũng cần tuân thủ quy định này trên hóa đơn.
- Gồm: tem, vé, thẻ, phiếu thu tiền bảo hiểm, v.v d) Phiếu thu tiền
Cước vận chuyển hàng không và các chứng từ liên quan như thu cước phí vận tải quốc tế, phí dịch vụ ngân hàng phải được lập theo thông lệ quốc tế và tuân thủ các quy định pháp luật hiện hành.
Hóa đơn điện tử là gì
Hóa đơn là tài liệu do các tổ chức kinh doanh tự in ra từ thiết bị tin học, máy tính tiền hoặc các loại máy khác khi thực hiện bán hàng hóa và cung ứng dịch vụ Hóa đơn điện tử là hình thức hóa đơn được phát hành và lưu trữ dưới dạng điện tử, giúp tiết kiệm thời gian và chi phí cho doanh nghiệp.
Hóa đơn đặt in là tập hợp các thông điệp dữ liệu điện tử liên quan đến bán hàng hóa và cung ứng dịch vụ Những thông điệp này được khởi tạo, lập, gửi, nhập, lưu trữ và quản lý theo quy định của Luật Giao dịch điện tử và các văn bản hướng dẫn thi hành.
Hóa đơn là tài liệu được các tổ chức in theo mẫu để phục vụ cho việc bán hàng hóa và cung ứng dịch vụ Ngoài ra, cơ quan thuế cũng có thể in hóa đơn theo mẫu để cấp phát hoặc bán cho các tổ chức, hộ, cá nhân.
Các chứng từ liên quan đến hóa đơn bao gồm phiếu xuất kho kiêm vận chuyển nội bộ và phiếu xuất kho hàng gửi bán đại lý, được in, phát hành, sử dụng và quản lý một cách hợp lý.
1.3 Hóa đơn điện tử là gì
Hóa đơn điện tử là hóa đơn được khởi tạo, lập, gửi, nhận, lưu trữ và quản lý hoàn toàn bằng phương tiện điện tử Đặc biệt, hóa đơn điện tử phải được tạo ra và xử lý trên hệ thống máy tính của tổ chức có mã số thuế khi thực hiện bán hàng hóa, dịch vụ, và phải được lưu trữ theo quy định của pháp luật về giao dịch điện tử.
Hình 1.2 Hóa đơn điện tử Trên hóa đơn điện tử bao gồm nhưunxg nội dung như:
Hóa đơn cần có tên, ký hiệu, ký hiệu mẫu và số thứ tự, theo quy định tại Phụ lục số 1 Thông tư số 153/2010/TT-BTC của Bộ Tài chính.
- Tên, địa chỉ, mã số thuế của người bán
- Tên, địa chỉ, mã số thuế của người mua
Hóa đơn cần ghi rõ tên hàng hóa hoặc dịch vụ, đơn vị tính, số lượng, đơn giá và thành tiền bằng cả số và chữ Đối với hóa đơn giá trị gia tăng, ngoài việc ghi giá chưa có thuế giá trị gia tăng, cần phải có dòng ghi rõ thuế giá trị gia tăng, tiền thuế và tổng số tiền phải thanh toán, tất cả cũng phải được thể hiện bằng số và chữ.
- Chữ ký điện tử theo quy định của pháp luật của người bán Ngày tháng năm lập và gửi hóa đơn
1.3.2 Mục đích của lập hóa đơn điện tử
Lập hóa đơn điện tử đảm bảo rằng tất cả các hóa đơn chưa thanh toán từ các nhà cung cấp được phê duyệt, xử lý và thanh toán kịp thời Quá trình xử lý hóa đơn bao gồm các bước toán học của công ty Sau khi hoàn tất việc cấp dữ liệu, các hóa đơn cần trải qua quy trình kinh doanh của công ty để được thanh toán.
Hóa đơn điện tử là dữ liệu hóa đơn có cấu trúc, được phát hành qua EDI (Electronic Data Interchange) hoặc các định dạng XML, và có thể sử dụng các mẫu web trên nền tảng Internet.
Các tài liệu có thể được trao đổi qua nhiều định dạng như EDI, XML hoặc CSV và có thể tải lên qua email, máy in ảo, ứng dụng web hoặc trang FTP Doanh nghiệp có thể sử dụng phần mềm hình ảnh để chụp dữ liệu từ tài liệu PDF hoặc giấy và nhập vào hệ thống hóa đơn, giúp hợp lý hóa quá trình nộp hồ sơ và thúc đẩy các nỗ lực bền vững Nhiều công ty cũng đã phát triển quy trình lập hóa đơn điện tử riêng.
Nhiều công ty hiện nay lựa chọn hợp tác với bên thứ ba để thực hiện và hỗ trợ quy trình lập hóa đơn điện tử, cũng như lưu trữ dữ liệu trên các máy chủ riêng của họ.
1.3.3 Các tổ chức liên quan đến lập hóa đơn điện tử
- Nhà cung cấp thanh toán hóa đơn (Biller payment provider - BPP) - Một đại lý của người lập hoá đơn chấp nhận thông tin chuyển tiền thay mặt Biller
- Nhà cung cấp dịch vụ Biller (BSP) - Một đại lý của nhà cung cấp dịch vụ cung cấp dịch vụ cho Biller
Consolidator là nhà cung cấp dịch vụ thanh toán, tích hợp các hóa đơn từ nhiều Billers hoặc các nhà cung cấp dịch vụ hóa đơn khác (BSP), sau đó trình bày chúng cho nhà cung cấp dịch vụ khách hàng (CSP).
Nhà cung cấp dịch vụ khách hàng (CSP) là đại lý đại diện cho khách hàng, cung cấp giao diện trực tiếp để trình bày hóa đơn cho doanh nghiệp hoặc cá nhân CSP không chỉ tuyển chọn khách hàng mà còn hỗ trợ trong việc chăm sóc khách hàng và thực hiện nhiều chức năng khác.
DỊCH VỤ WEB HÓA ĐƠN ĐIỆN TỬ CỦA VIETTEL
Mạng Internet
Internet là một hệ thống thông tin toàn cầu, cho phép truy cập công cộng và kết nối hàng ngàn mạng máy tính nhỏ hơn từ doanh nghiệp, viện nghiên cứu, trường đại học, cá nhân và chính phủ Hệ thống này sử dụng phương thức truyền thông tin qua nối chuyển gói dữ liệu (packet switching) dựa trên giao thức liên mạng chuẩn hóa (giao thức IP).
Hình 2.1 Minh họa mạng Internet
Lịch sử phát triển của Internet
Tiền thân của Internet hiện đại là mạng ARPANET, được phát triển bởi cơ quan ARPA thuộc Bộ Quốc phòng Mỹ Vào tháng 7 năm 1969, mạng này kết nối bốn địa điểm đầu tiên: Viện nghiên cứu Stanford, Đại học California, Los Angeles, Đại học Utah và Đại học California, Santa Barbara, đánh dấu sự ra đời của mạng liên khu vực (WAN) đầu tiên.
Thuật ngữ "Internet" lần đầu xuất hiện vào khoảng năm 1974, khi mạng được gọi là ARPANET Đến năm 1983, giao thức TCP/IP trở thành chuẩn chính thức cho ngành quân sự Mỹ, yêu cầu tất cả máy tính kết nối với ARPANET phải sử dụng chuẩn này Năm 1984, ARPANET được chia thành hai phần: phần nghiên cứu và phát triển vẫn mang tên ARPANET, trong khi phần còn lại được gọi là MILNET, phục vụ cho các mục đích quân sự.
Giao thức TCP/IP ngày càng thể hiện rõ sức mạnh của mình, đặc biệt là khả năng kết nối dễ dàng giữa các mạng khác nhau Sự kết nối này, kết hợp với các chính sách mở cửa, đã cho phép các mạng nghiên cứu và thương mại liên kết với ARPANET, từ đó thúc đẩy sự hình thành của một siêu mạng (SuperNetwork) Đến năm 1980, ARPANET đã được công nhận là mạng trụ cột của Internet.
Vào giữa thập niên 1980, một mốc lịch sử quan trọng của Internet được thiết lập khi tổ chức khoa học quốc gia Mỹ NSF thành lập mạng NSFNET để kết nối các trung tâm máy tính lớn Nhiều doanh nghiệp đã chuyển từ ARPANET sang NSFNET, dẫn đến việc ARPANET, sau gần 20 năm hoạt động, không còn hiệu quả và chính thức ngừng hoạt động vào khoảng năm 1990.
Sự hình thành mạng xương sống NSFNET và các mạng vùng khác đã tạo điều kiện thuận lợi cho sự phát triển của Internet Đến năm 1995, NSFNET được thu gọn thành một mạng nghiên cứu, trong khi Internet vẫn tiếp tục mở rộng và phát triển.
Internet, với khả năng kết nối mở, đã trở thành mạng lưới lớn nhất thế giới, bao trùm mọi lĩnh vực như thương mại, chính trị, quân sự, nghiên cứu, giáo dục và văn hóa Sự phát triển không ngừng của các dịch vụ trên Internet đã tạo ra một kỷ nguyên mới cho nhân loại: kỷ nguyên thương mại điện tử Lợi ích của Internet trong cuộc sống ngày càng được thể hiện rõ rệt, mang lại nhiều cơ hội và tiện ích cho con người.
2.1.2 Lợi ích của Internet trong cuộc sống
Internet cung cấp nhiều tiện ích hữu dụng cho người dùng, trong đó nổi bật là hệ thống thư điện tử (email), trò chuyện trực tuyến (chat), máy tìm kiếm (search engine), và các dịch vụ thương mại, chuyển ngân Ngoài ra, Internet còn hỗ trợ các dịch vụ y tế và giáo dục như chữa bệnh từ xa và tổ chức lớp học ảo, mang lại một kho tàng thông tin và dịch vụ phong phú cho người sử dụng.
Internet và WWW là hai khái niệm khác nhau: Internet là mạng lưới các máy tính kết nối bằng dây và cáp quang, trong khi WWW là tập hợp các tài liệu liên kết qua siêu liên kết và địa chỉ URL, có thể truy cập thông qua Internet Sự nhầm lẫn giữa hai thuật ngữ này thường được thể hiện qua những câu châm biếm trong tiếng Anh.
Các cách thức thông thường để truy cập Internet là quay số, băng rộng, không dây, vệ tinh và qua điện thoại cầm tay
2.1.3 Các chương trình duyệt Web thông dụng hiện nay
Các chương trình duyệt Web thông dụng ở thời điểm này là:
- Internet Explorer có sẵn trong Microsoft Windows, của Microsoft
- Mozilla và Mozilla Firefox của Tập đoàn Mozilla
- Safari trong Mac OS X, của Apple Computer
- Avant Browser của Avant Force (Ý)
Ngôn ngữ PHP
PHP, viết tắt của "Hypertext Preprocessor", là một ngôn ngữ lập trình kịch bản chạy trên server để tạo ra mã HTML cho client Qua nhiều phiên bản, PHP đã được tối ưu hóa cho các ứng dụng web, với cú pháp rõ ràng, tốc độ nhanh và tính dễ học, khiến nó trở thành một trong những ngôn ngữ lập trình web phổ biến và được ưa chuộng nhất.
PHP hoạt động trên môi trường Webserver và quản lý dữ liệu thông qua hệ quản trị cơ sở dữ liệu, thường kết hợp với Apache, MySQL và hệ điều hành Linux, tạo thành bộ công nghệ LAMP.
Apache là phần mềm máy chủ web, chịu trách nhiệm nhận yêu cầu từ trình duyệt người dùng, chuyển giao cho PHP để xử lý và sau đó gửi phản hồi trở lại trình duyệt.
MySQL là một hệ quản trị cơ sở dữ liệu tương tự như các hệ thống khác như Postgres, Oracle và SQL Server, với vai trò chính là lưu trữ và truy vấn dữ liệu hiệu quả.
Linux là hệ điều hành mã nguồn mở phổ biến, thường được sử dụng cho các webserver Các phiên bản được ưa chuộng nhất bao gồm RedHat Enterprise Linux và Ubuntu.
2.2.2 Lịch sử phát triển a) PHP/FI
PHP được phát triển từ sản phẩm PHP/FI do Rasmus Lerdorf tạo ra năm 1994, ban đầu chỉ là một tập con đơn giản của mã kịch bản Perl để theo dõi truy cập vào trang cá nhân của ông Bộ mã này được gọi là 'Personal Home Page Tools' Khi cần các chức năng phức tạp hơn, Rasmus đã phát triển một bộ thực thi bằng C lớn hơn để truy vấn cơ sở dữ liệu và hỗ trợ người dùng xây dựng ứng dụng web đơn giản Ông đã quyết định công bố mã nguồn của PHP/FI để mọi người có thể xem, sử dụng, sửa lỗi và cải tiến mã nguồn.
PHP/FI, viết tắt của "Personal Home Page/Forms Interpreter", cung cấp một số chức năng cơ bản cho PHP như hiện nay Nó sử dụng các biến kiểu như Perl, đồng thời tự động thông dịch các biến từ form và cú pháp HTML nhúng Mặc dù cú pháp của PHP/FI tương tự như Perl, nhưng nó có phần hạn chế, đơn giản và thiếu nhất quán hơn.
Năm 1997, PHP/FI 2.0, phiên bản viết lại thứ hai của PHP, đã thu hút hàng ngàn người dùng trên toàn cầu với khoảng 50.000 tên miền đã cài đặt, chiếm khoảng 1% tổng số tên miền trên Internet Mặc dù có hàng nghìn người tham gia đóng góp vào việc cải tiến mã nguồn, dự án này vẫn chủ yếu là công sức của một cá nhân.
PHP/FI 2.0 được phát hành chính thức vào tháng 11 năm 1997, sau một thời gian dài chỉ tồn tại dưới dạng các bản beta Tuy nhiên, không lâu sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.
PHP 3.0 là phiên bản đầu tiên mang đến hình ảnh gần gũi với các phiên bản PHP hiện nay, được phát triển bởi Andi Gutmans và Zeev Suraski vào năm 1997 sau khi viết lại hoàn toàn mã nguồn trước đó Phiên bản này ra đời nhằm khắc phục những hạn chế của PHP/FI 2.0 trong việc phát triển ứng dụng thương mại điện tử Để xây dựng trên nền tảng người dùng hiện có, Andi, Rasmus và Zeev đã hợp tác và công bố PHP 3.0 như phiên bản kế tiếp, đồng thời chấm dứt phát triển PHP/FI 2.0.
PHP 3.0 nổi bật với các tính năng mở rộng mạnh mẽ, cung cấp cho người dùng một cơ sở hạ tầng vững chắc cho nhiều cơ sở dữ liệu, giao thức và API khác nhau Điều này đã thu hút nhiều nhà phát triển tham gia và đề xuất các mô đun mở rộng mới, góp phần quan trọng vào thành công của PHP 3.0 Ngoài ra, phiên bản này còn giới thiệu hỗ trợ cú pháp hướng đối tượng và nhiều cú pháp ngôn ngữ nhất quán khác.
Ngôn ngữ lập trình mới đã được công bố với tên gọi ngắn gọn là 'PHP', loại bỏ mối liên hệ với mục đích sử dụng cá nhân hạn hẹp mà cái tên PHP/FI 2.0 gợi nhắc Tên gọi 'PHP' là viết tắt hồi quy của "PHP: Hypertext Preprocessor".
Cuối năm 1998, PHP đã đạt được hàng chục ngàn người dùng và hàng chục ngàn website cài đặt Đặc biệt, tại thời kỳ đỉnh cao, phiên bản PHP 3.0 được cài đặt trên khoảng 10% số máy chủ web trên Internet.
- PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian
9 tháng được cộng đồng kiểm nghiệm c) PHP 4
Vào mùa đông năm 1998, sau khi PHP 3.0 được công bố, Andi Gutmans và Zeev Suraski đã bắt đầu viết lại phần lõi của PHP với mục tiêu cải tiến tốc độ xử lý các ứng dụng phức tạp và nâng cao tính mô đun của mã nguồn Mặc dù PHP 3.0 đã hỗ trợ nhiều tính năng mới và kết nối với các cơ sở dữ liệu cùng API của bên thứ ba, nhưng nó không được thiết kế để xử lý hiệu quả các ứng dụng phức tạp.
Động cơ 'Zend Engine', được giới thiệu lần đầu vào giữa năm 1999, đã đáp ứng thành công các nhu cầu thiết kế cho PHP Phiên bản PHP 4.0, dựa trên động cơ này, đã chính thức ra mắt vào tháng 5 năm 2000, gần 2 năm sau PHP 3.0 Phiên bản mới không chỉ cải thiện đáng kể tốc độ xử lý mà còn mang đến nhiều tính năng nổi bật như hỗ trợ nhiều máy chủ Web, hỗ trợ phiên làm việc HTTP, tạo bộ đệm thông tin đầu ra, cải thiện bảo mật cho việc xử lý thông tin người dùng và cung cấp một số cấu trúc ngôn ngữ mới.
Web Hosting
Web Hosting là dịch vụ lưu trữ tất cả các trang web, thông tin, tài liệu và hình ảnh trên máy chủ Internet Nó không chỉ là nơi lưu trữ mà còn là nền tảng cho mọi hoạt động giao dịch và trao đổi thông tin giữa website và người dùng Internet, đồng thời hỗ trợ các phần mềm Internet hoạt động hiệu quả.
Hình 2.2 Minh họa Web Hosting
Web Hosting có thể được hiểu đơn giản như trụ sở làm việc hoặc phòng giao dịch của một doanh nghiệp Khi bạn thuê Web Hosting, điều này tương tự như việc thuê một văn phòng trong một tòa nhà để hoạt động kinh doanh.
Dịch vụ lưu trữ web cho phép nhiều trang web cùng hoạt động trên một máy chủ kết nối Internet, với mỗi trang có không gian riêng biệt Đây là giải pháp tiết kiệm chi phí cho người dùng, giúp chia sẻ tổng chi phí bảo trì máy chủ.
Hosting miễn phí là dịch vụ lưu trữ không tốn phí, thường đi kèm với quảng cáo Dịch vụ này thường cung cấp tên miền phụ (yoursite.example.com) hoặc thư mục (www.example.com/~Yourname), và có thể yêu cầu bạn sử dụng tên miền riêng với một số điều kiện Trong khi đó, dịch vụ hosting trả phí thường cung cấp tên miền cấp hai và máy chủ riêng (www.tenmien.com) Lưu ý rằng nhiều máy chủ miễn phí không cho phép sử dụng tên miền riêng và một số quốc gia như Trung Quốc đã chặn dịch vụ này.
Reseller hosting là hình thức lưu trữ web cho phép chủ tài khoản phân bổ lại tài nguyên như ổ cứng và băng thông để lưu trữ website cho bên thứ ba Các đại lý sẽ mua một phần không gian trên máy chủ và sau đó bán lại cho khách hàng để thu lợi nhuận.
Email hosting là dịch vụ thư điện tử chuyên biệt, khác với các dịch vụ email miễn phí như webmail Doanh nghiệp thường sử dụng dịch vụ này với tên miền riêng để nâng cao uy tín và xác thực thông điệp gửi đi Email hosting cung cấp khả năng tùy chỉnh cấu hình và hỗ trợ số lượng lớn tài khoản, giúp quản lý hiệu quả hơn.
File hosting là dịch vụ lưu trữ trực tuyến chuyên dụng cho các tệp tin lớn và nội dung tĩnh, không phải là trang web Dịch vụ này thường cho phép người dùng truy cập qua giao thức FTP, được tối ưu hóa để phục vụ nhiều người sử dụng.
Dịch vụ lưu trữ cung cấp khả năng lưu trữ nhiều trang web trên một máy chủ chạy hệ điều hành Windows Server kết nối Internet Mỗi trang web sẽ có phân vùng riêng biệt, thường được quản lý thông qua các phần mềm chia hosting như Hosting Controller, Plesk, và các công cụ tương tự.
- PHP & MySQL for Windows Server
- MS Access/MS SQL Server 2000/2005/2008
- ASP Email, ASP Upload, ASP Jpg, JMail
Dịch vụ lưu trữ web cho phép nhiều trang web hoạt động trên một máy chủ sử dụng hệ điều hành Linux và kết nối Internet Mỗi trang web được cấp một phân vùng riêng, thường sử dụng các phần mềm quản lý hosting như Cpanel hoặc Direct Admin.
Máy chủ riêng ảo (VPS) là phương pháp phân vùng một máy chủ vật lý thành nhiều máy chủ ảo độc lập Mỗi máy chủ ảo này có khả năng riêng và có thể chạy hệ điều hành đầy đủ Điều này cho phép từng máy chủ độc lập được khởi động lại theo nhu cầu.
Máy chủ Web hosting là sự kết hợp giữa phần cứng và phần mềm, nhằm cung cấp dịch vụ lưu trữ và chia sẻ thông tin cho khách hàng Chúng cung cấp không gian lưu trữ cho nhiều khách hàng khác nhau Các hệ điều hành phổ biến cho máy chủ bao gồm Windows, FreeBSD, Solaris và Linux, hầu hết đều có nguồn gốc từ hoặc tương tự như UNIX VPS mang lại nhiều lợi ích cho người dùng.
- VPS Tiết kiệm được chi phí đầu tư máy chủ ban đâu
- VPS Hoạt động hoàn toàn như một máy chủ riêng
- Có thể dùng VPS cài đặt các ứng dụng khác tùy theo nhu cầu của doanh nghiệp
- Bảo trì sửa chữa nâng cấp nhanh chóng và dễ dàng
- VPS dễ dàng nâng cấp tài nguyên RAM, HDD, Băng thông khi cần thiết
- VPS có thể cài lại hệ điều hành từ 5-10 phút
- Không lãng phí tài nguyên
Adult hosting là dịch vụ lưu trữ trực tuyến dành cho các cá nhân và tổ chức muốn lưu trữ website có nội dung người lớn Tuy nhiên, luật pháp Việt Nam hiện đang nghiêm cấm các hành vi liên quan đến loại hình lưu trữ này.
2.3.3 Các thông số cần biết trong web hosting
Để đảm bảo hiệu suất tối ưu cho dịch vụ Web, máy chủ cần có cấu hình mạnh mẽ nhằm xử lý mượt mà lượng lớn người truy cập Bên cạnh đó, việc sử dụng đường truyền kết nối tốc độ cao là rất quan trọng để tránh tình trạng nghẽn mạch dữ liệu, từ đó nâng cao trải nghiệm người dùng.
Máy chủ cần được quản trị hệ thống thường xuyên chăm sóc, cập nhật và bảo dưỡng để giảm thiểu rủi ro kỹ thuật và bảo mật.
- Web Hosting phải có một dung lượng đủ lớn (tính theo MBytes) để lưu giữ được đầy đủ các thông tin, dữ liệu, hình ảnh, v.v của Website
- Phải có bandwidth (băng thông) đủ lớn để phục vụ các hoạt động giao dịch, trao đổi thông tin của Website
- Phải hỗ trợ truy xuất máy chủ bằng giao thức FTP để cập nhật thông tin
Hỗ trợ đa dạng ngôn ngữ lập trình và cơ sở dữ liệu để triển khai phần mềm trên Internet, cùng với các công cụ viết sẵn phục vụ cho các hoạt động giao dịch trên website như gửi email, tải lên trang web, và quản lý sản phẩm, tin tức, v.v.
- Hỗ trợ đầy đủ các dịch vụ E-mail như POP3 E-mail, E-mail Forwarding, DNS, v.v
- Có giao diện quản lý Web Hosting để dễ dàng quản lý website, các tài khoản FTP, Email, v.v
- Không bị chèn các banner quảng cáo của nhà cung cấp
Dung lượng của Web Hosting?
Dịch vụ web
Dịch vụ web (WebService) kết hợp các ứng dụng trên máy tính cá nhân và thiết bị di động với các ứng dụng trên thiết bị khác, cơ sở dữ liệu và mạng máy tính, tạo ra một hệ thống tính toán hoàn hảo cho người dùng Qua đó, người dùng có thể làm việc, yêu cầu, phân tích, khai thác và cập nhật thông tin thông qua Internet hoặc Wifi Đồng thời, dịch vụ này cũng cung cấp các chức năng để người dùng trên toàn thế giới có thể truy cập và sử dụng thông qua nền tảng web.
WebService là một phương thức truyền thông sử dụng các giao thức mở, cho phép xác định tài nguyên phần mềm thông qua địa chỉ URL Nó thực hiện các chức năng và cung cấp thông tin theo yêu cầu của người dùng, với các ứng dụng độc lập và tự mô tả WebService bao gồm các mô-đun độc lập phục vụ cho hoạt động của khách hàng và doanh nghiệp, và được triển khai trên máy chủ Nền tảng cơ bản của WebService là XML và HTTP, và bất kỳ ứng dụng nào cũng có thể tích hợp một thành phần WebService, được phát triển bằng bất kỳ ngôn ngữ lập trình nào.
2.4.2 Đặc điểm của dịch vụ Web
- Cho phép client và server tương tác ngay cả trong môi trường khác nhau
- Phần lớn được xây dựng dựa trên mã nguồn mở và phát triển các chuẩn đã được công nhận
- Nó có thể triển khai bởi 1 phần mềm ứng dụng phía server (vd: PHP, Oracle Application server) a) Ưu điểm
- Cung cấp khả năng hoạt động rộng lớn với các phần mềm khác nhau chạy nên tảng khác nhau
- Sử dụng các giao thức chuẩn mở
- Nâng cao khả năng tái sử dụng
- Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại
Tạo ra mối quan hệ tương tác linh hoạt giữa các thành phần trong hệ thống giúp phát triển ứng dụng phân tán một cách dễ dàng và hiệu quả.
Thúc đẩy hệ thống tích hợp giúp giảm sự phức tạp, hạ giá thành hoạt động và phát triển hệ thống nhanh chóng Điều này cũng tạo điều kiện cho sự tương tác hiệu quả với hệ thống của các doanh nghiệp khác Tuy nhiên, vẫn tồn tại một số nhược điểm cần xem xét.
- Vào những khoảng thời gian chết của WebService sẽ dẫn đến những thiệt hại lớn:
1) Giao diện không thay đổi
2) Có thể lỗi nếu một máy khách không được nâng cấp
3) Thiếu các giao thức cho việc vận hành
- Có quá nhiều chuẩn cho dịch vụ web khiến người dùng khó nắm bắt
- Phải quan tâm nhiều hơn tới vấn đề an toàn bảo mật
- Nền tảng cơ bản là XML + HTTP
XML là ngôn ngữ linh hoạt, cho phép giao tiếp giữa các ngôn ngữ lập trình và nền tảng khác, đồng thời mô tả các thông điệp và chức năng phức tạp Trong bối cảnh WebService, sự kết hợp của nhiều thành phần yêu cầu giao tiếp hiệu quả, và XML trở thành công cụ chủ chốt để giải quyết vấn đề này WebService tận dụng khả năng của các ứng dụng lớn trên các hệ điều hành khác nhau để chúng có thể tương tác Lập trình Java được xem là lựa chọn phù hợp cho việc phát triển WebService, đáp ứng nhu cầu giao tiếp giữa các thành phần.
- Giao thức HTTP là giao thức được sử dụng nhiều nhất trong các giao thức trên internet
- Nền tảng của WebService bao gồm các chuẩn: SOAP, WSDL, UDDI, RESTful
2.4.4 Kiến trúc của dịch vụ web a) Mô hình hoạt động
Hình 2.16 Mô hình chung của WebService
- Giai đoạn triển khai công bố định nghĩa dịch vụ, xây dựng WSDL và triển khai mã thực thi của dịch vụ Web
- Giai đoạn tiến hnàh tìm kiếm và gọi thực thi dịch vụ Web bởi những người sử udnjg dịch vụ
Giai đoạn quản lý dịch vụ bao gồm việc duy trì sự ổn định, cập nhật thông tin mới và khắc phục lỗi khi phát sinh Quy trình xây dựng một dịch vụ Web được thực hiện qua các bước cụ thể.
1) Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cung cấp
2) Tạo WSDL cho dịch vụ
3) Xây dựng SOAP hoặc REST server
4) Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy và truy xuất
5) Client nhận tập tin WSDL và từ đó xây dựng SOAP hoặc REST client để có thể kết nối với SOAP hoặc REST server
6) Xây dựng ứng dụng phía client và sau đó gọi thực hiên dịch vụ thông qua việc kết nối tới SOAP hoặc REST server
2.4.5 Định dạng kiểu dữ liệu tương tác với WebService a) XML – eXtensible Markup Language
- Là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị
- Là một dạng chuẩn cho phép lưu các thông tin hướng cấu trúc, được tổ chức dưới dạng thẻ (tag) tương ứng
Các thẻ XML thường không được định nghĩa sẵn, mà được tạo ra theo quy ước của người hoặc chương trình tạo ra XML, dựa trên các quy tắc do chính người tạo đặt ra.
- Giúp đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet
- Sử dụng các khai báo kiểu dữ liệu DTD (Document Type Dèinition) hay lược đồ Schenma để mô tả dữ liệu b) JSON – JavaScript Object Notation
- Định nghĩa dữ liệu theo ngôn ngữ JavaScript, tiêu chuẩn ECMA-262 năm
- Là một định dạng văn bản đơn giản với các trường dữ liệu được lồng vào nhau
- Dùng để trao đổi dữ liệu giữa các thành phần của một hệ thống tương thích với hầu hết các ngôn ngữ C, C++, C#, Java, JavaScript, Perl, Python, v.v
Vì sao nên sử dụng JSON ?
- Có thể đọc hiểu và dễ dàng tiếp cận (human-readability)
- Dữ liệu truyền tải ngắn gọn so với những định dạng dữ liệu khác như: XML HTML,v.v
=> Tiết kiệm dung lượng hơn XML, HTML,v.v
- Dễ dàng chuyển đổi (parse) dữ liệu từ dạng chuỗi (nhận từ server) sang dữ liệu có thể sử dụng được (Object, Number, Array)
- Dễ truy cập nội dung
Các ứng dụng AJAX có khả năng lấy và xử lý dữ liệu từ một WebService khác domain Nếu dữ liệu trả về ở định dạng JSON, JavaScript từ trang web của chúng ta có thể truy cập trực tiếp vào nội dung đó.
Các kiểu dữ liệu JSON
- JSON có 5 kiểu dữ liệu chính:
- 1 đối tượng là 1 hỗn độn của các cặp tên và giá trị
- 1 đối tượng bắt đầu bởi dấu ngoặc đơn trái { và kết thúc với dấu ngoặc đơn phải }
- Từng tên được theo sau bởi dấu 2 chấm (:) và các cặp tên/giá trị được tách ra bởi dấu phẩy (,)
- 1 đối tượng có thể chứa chiều cặp tên/giá trị (Name/values)
Hình 2.17 Dữ liệu kiểu đối tượng
- 1 mảng là 1 tập hợp các giá trị đã được sắp xếp
- 1 mảng bắt đầu bởi dấu mở ngoặc vuông trái [ và kết thúc với dấu ngoặc vuông phải ]
- Các giá trị được cách nhau bởi dấu phẩy (,)
- 1 mảng có thể chứa nhiều đối tượng
Hình 2.18 Dữ liệu kiểu mảng
Giá trị JSON có thể là:
- 1 số nguyên (integer) hay số thực (floating point)
- 1 chuỗi (nằm trong dấu nháy đôi "")
- 1 luận lý (true hoặc false)
- 1 mảng (nằm trong ngoặc vuông [])
- 1 đối tượng (nằm trong dấu ngoặc nhọn {})
Những cấu trúc này có thể đã được lồng vào nhau
Hình 2.19 Dữ liệu kiểu giá trị
- 1 chuỗi (string) là 1 tập hợp của các số hay mẫu tự Unicode, được bao bọc trong các dấu trích dẫn kép (")
- Dùng dấu chéo (/) để thoát khỏi 1 chuỗi
- 1 ký tự đã được hiển thị như là 1 chuỗi ký tự đơn đọc
Hình 2.20 Dữ liệu kiểu chuỗi
Giống với kiểu số trong C và Java, trừ định dạng bát phân và hex là không thể
Hình 2.21 Dữ liệu kiểu số
TÌM HIỂU WEBSERVICE VIETTEL VÀ XÂY DỰNG CHỨC NĂNG
Tầm quan trọng của dịch vụ
Hóa đơn điện tử mang lại nhiều lợi ích đáng kể cho các công ty và doanh nghiệp, giúp tiết kiệm chi phí cho giấy mực và in ấn hóa đơn Ngoài ra, dịch vụ này còn giảm thiểu chi phí đi lại và thời gian làm thủ tục, đồng thời loại bỏ sự chờ đợi nhận hóa đơn qua đường bưu điện.
Khi hóa đơn điện tử ra đời, mọi vấn đề trên đã được giải quyết
Hình 3.1 Tầm quan trọng của hóa đơn điện tử
Phân tích thiết kế
3.2.1 Biểu đồ ngữ cảnh a) Biểu đồ
Hình 3.2 Biểu đồ ngữ cảnh b) Mô tả hoạt động
Doanh nghiệp: Để hoàn tất quá trình mua bán doanh nghiệp sẻ gửi thông tin về lập hóa đơn Quá trình lập hóa đơn được thực hiện như sau :
Khi lập hóa đơn điện tử, doanh nghiệp cần điền thông tin và gửi yêu cầu lập hóa đơn cho hệ thống Hệ thống sẽ tiếp nhận, xử lý thông tin và kết nối với WebService Viettel để gửi yêu cầu WebService sẽ kiểm tra các thông tin như mã số thuế, loại template, tên người mua, ID giao dịch, ngày lập hóa đơn và tổng tiền Nếu tất cả thông tin khớp, hóa đơn sẽ được gửi lên cục thuế để xem xét.
Trong trường hợp người lập hóa đơn không muốn thực hiện việc lập hóa đơn ngay lập tức, họ có thể lưu hóa đơn dưới dạng nháp trên hệ thống Khi đã chắc chắn về các thông tin cần thiết và muốn hoàn tất hóa đơn, người dùng chỉ cần truy cập vào hóa đơn nháp, điều chỉnh thông tin cho phù hợp và thực hiện yêu cầu lập hóa đơn.
Sau khi cục thuế xác thực, thông tin sẽ được gửi về WebService, và WebService sẽ phản hồi thành công kèm theo mã số bí mật của hệ thống lập hóa đơn Hệ thống sẽ lưu trữ toàn bộ thông tin hóa đơn đã lập, đồng thời thông báo cho doanh nghiệp về mã số thuế, ngày lập, ID giao dịch và mã số bí mật.
Sau khi đã lập hóa đơn điện tử doanh nghiệp có thể tải file hóa đơn, quá trình được thực hiện như sau :
Doanh nghiệp vào quản lý hóa đơn và chọn loại tệp tin (zip/pdf) để tải hóa đơn tương ứng Hệ thống sẽ lọc thông tin cần thiết từ ID của hóa đơn và loại tệp tin, sau đó mở luồng giao tiếp với WebService Hệ thống gửi yêu cầu tải file hóa đơn tới WebService, nơi kiểm tra và phản hồi kết quả tệp tin đã mã hóa ở dạng base64 Cuối cùng, hệ thống nhận kết quả phản hồi, xử lý và tạo sổ download để doanh nghiệp tải file về.
3.2.2 Sơ đồ phân rã chức năng a) Sơ đồ
Hình 3.3 Biểu đồ phân rã chức năng nghiệp vụ b) Mô tả chi tiết chức năng lá
1.1 Đăng ký tài khoản: Để sử hệ thống hóa đơn điện tử, doanh nghiệp cần phải lập một tài khoản và cung cấp tài khoản, mật khẩu của Viettel cung cấp
1.2 Thêm thông tin doanh nghiệp: Thông tin doanh nghiệp cần khởi tạo nhằm phục vụ việc kê khai
1.3 Thêm thông tin sản phẩm: Để biết doanh nghiệp đó đã bán mặt hàng nào, với mức giá ra sao và % thuế, % chiết khấu giúp việc kê khai minh bạch, rõ ràng
2.1 Khi đã có đầy đủ các yếu tố thông tin, nảy sinh ra hoạt động mua-bán thì doanh nghiệp có thể khởi tạo hóa đơn
2.2 Trường hợp người lập hóa đơn không muốn thực hiện việc lập hóa đơn ngay mà muốn lưu lại thì hóa đơn đó sẽ được lưu nháp trên hệ thống
2.3 Khi doanh nghiệp thực hiện yêu cầu lập hóa đơn, hệ thống tiếp nhận thông tin và xử lý nghiệp vụ Sau đó gửi yêu cầu lập hóa đơn tới WebService của Viettel Lúc này WebService sẽ xử lý dữ liệu và làm việc với tổng cục thuế và phản hồi kết quả Hệ thống nhận được phản hồi của WebService nếu thành công thì sẽ lưu lại dữ liệu hóa đơn đã được lập với trạng thái đã lập
2.4 Cuối cùng là thông báo trạng thái thành công và các dữ liệu của quá trình lập hóa đơn
3.1 Người dùng có thể tìm kiếm hóa đơn thông qua các thông tin: Số hóa đơn, mã số bí mật, từ ngày lập, đến ngày lập, trạng thái lập
3.2 Khi ở trạng thái hóa đơn nháp, người dùng có thể chỉnh sửa thông tin nháp
3.3 Chắc chắn muốn lập hóa đơn người dùng chỉ cần ấn lập hóa đơn Quá trình sẽ được tiến hành như chức năng lập hóa đơn ở mục 2
4.1 Hóa đơn ở trạng thái đã được lập, người dùng có thể tải file hóa đơn địng dạng ZIP về để quản lý hoặc in
4.2 Có thể tải file hóa đơn dạng PDF để dễ dàng xem trên điện thoại
3.2.3 Ma trận thực thể chức năng a) Danh sách hồ sơ dữ liệu
Ký hiệu Tên hồ sơ dữ liệu
- Lấy file hóa đơn b) Biểu đồ
Các thực thể dữ liệu a Thông tin doanh nghiệp b Hóa đơn c Hóa đơn nháp d File hóa đơn
Các chức năng nghiệp vụ a b c d
Hình 3.4 Biểu đồ luồng dl mức 0
Doanh nghiệp có thuộc tính :
- Mã số thuế, Tên chủ doanh nghiệp, Tên doanh nghiệp, Mã bưu điện, Số điện thoại, Email, Tên ngân hang, Số tài khoản, Trang web
Hàng hóa có thuộc tính :
- Mã số hang, Dòng hang, Đơn vị tính, Tên hang, Đơn giá, Chiết khấu, Tiền thuế, Số lô
Hóa đơn có thuộc tính :
- Mẫu hóa đơn, Số hóa đơn, Ngày lập, Tổng tiền, Loại tiền tệ, Trạng thái, Mã số bí mật.
Doanh nghiệp Lấy Hóa đơn
Tìm hiểu WebService Viettel
- Loại web là hoạt động về dịch vụ
Sản phẩm của chúng tôi cung cấp giải pháp quản lý hóa đơn điện tử cho doanh nghiệp, cho phép khởi tạo, lập, gửi, nhận, lưu trữ và quản lý hóa đơn một cách hiệu quả Hóa đơn được đăng ký bằng chữ ký điện tử (ký số), mang lại giá trị pháp lý tương đương với hóa đơn giấy thông thường và có khả năng chuyển đổi thành hóa đơn giấy khi cần thiết.
Hình 3.6 Dịch vụ Viettel cung cấp
3.3.2 Yêu cầu kỹ thuật giao tiếp
- Dùng kỹ thuật chuẩn RESTful
- Dữ liệu đầu vào là các đối tượng JSON, XML hoặc FormParam, QueryParam
- Dữ liệu trả về là các đối tượng JSON
- Phương thức giao tiếp có thể là POST hoặc GET, tùy đường link
Xây dựng 1 số lớp giao diện
- Lấy file hóa đơn có kèm mã số bí mật
- Cập nhật kê khai thuế
- Cung cấp hóa đơn theo khoảng thời gian
3.4 Xây dựng 1 số lớp giao diện
3.4.1 Dịch vụ lưu trữ trực tuyến (Hosting)
Tôi đã chọn sử dụng dịch vụ lưu trữ miễn phí từ 000webhost.com do lý do chi phí Hiện tại, tôi chưa áp dụng vào thực tế và dự định sẽ chuyển sang sử dụng hosting trả phí trong tương lai.
Thông tin về Hosting em đã giới thiệu ở Mục 2.2
3.4.2 Mô tả nghiệp vụ Dịch vụ web (WebService)
- Ủy quyền: Tài khoản và mật khẩu của khách hàng phải được dùng phương thức xác thực Basic Authentication
- Giao thức giao tiếp: chuẩn RESTful
- Method: Tùy thuộc đường link lựa chọn POST hoặc GET
- Dữ liệu gửi lên server: có thể là JSON hoặc FormParam
- Gửi dữ liệu dạng JSON cần khai báo kiểu: Content-Type: application/json
- Gửi dữ liệu dạng FormParam cần khai báo kiểu: Content-Type: application/x-www-form-urlencoded
- Nhận dữ liệu cần khai báo kiểu: Accept: application/json a) Xác thực Basic Authentication
Basic Authentication là phương thức xác thực phổ biến trên nền tảng ứng dụng Web, xuất hiện khi Client yêu cầu thông tin xác thực Để truy cập vào các nguồn dữ liệu bảo mật, người dùng cần gửi một request kèm theo thông tin username/password trong Header, và chuỗi đầu vào này sẽ được mã hóa.
REST, viết tắt của REpresentational State Transfer, là một kiến trúc lập trình được giới thiệu lần đầu vào năm 2000 trong luận văn Tiến sĩ của Roy Fielding, người đồng sáng lập giao thức HTTP Kiến trúc này định nghĩa các quy tắc thiết kế WebService tập trung vào tài nguyên, trong đó mọi thứ đều được xem là tài nguyên và được xác định qua URI Tài nguyên có thể được biểu diễn dưới nhiều định dạng khác nhau như văn bản, XML, JSON, và các ứng dụng sử dụng kiến trúc REST được gọi là RESTful.
REST là một bộ quy tắc để tạo ra một ứng dụng WebService, mà nó tuân thủ 4 nguyên tắc thiết kế cơ bản sau:
1) Sử dụng các phương thức HTTP một cách rõ ràng
3) Hiển thị cấu trúc thư mục như các URls
4) Truyền tải JavaScript Object Notation (JSON), XML hoặc cả hai
RESTful WebService là các WebService được viết dựa trên kiến trúc
REST REST đã được sử dụng rộng rãi thay thế cho các WebService dựa trên SOAP và WSDL RESTful WebService nhẹ (lightweigh), dễ dàng mở rộng và bảo trì
Mô hình Client - Server giúp tách biệt các thành phần, từ đó đơn giản hóa việc thực hiện và giảm sự phức tạp trong kết nối Điều này không chỉ nâng cao hiệu quả điều chỉnh hiệu năng mà còn tăng khả năng mở rộng cho máy chủ.
Stateless có nghĩa là server và client không lưu trữ trạng thái của nhau, do đó mỗi request phải chứa đầy đủ thông tin để server có thể hiểu và xử lý Điều này giúp hệ thống dễ dàng phát triển, bảo trì và mở rộng mà không cần quản lý trạng thái của client Tuy nhiên, nhược điểm của mô hình này là làm tăng lưu lượng thông tin cần truyền tải giữa client và server.
Khả năng caching cho phép các phản hồi được lấy từ bộ nhớ cache, giúp giảm tải cho server trong việc xử lý yêu cầu Nhờ vào việc cache các phản hồi, client có thể nhận thông tin nhanh chóng hơn.
Chuẩn hóa Interface giúp đơn giản hóa và tách biệt kiến trúc, cho phép từng phần phát triển độc lập Nhà phát triển đã tạo ra API cơ bản để thiết kế bất kỳ dịch vụ REST nào, cho phép kết nối dễ dàng giữa các ứng dụng web và di động Tuy nhiên, việc chuẩn hóa cũng đồng nghĩa với việc không thể tối ưu hóa từng kết nối một cách tối đa.
Phân lớp hệ thống giúp giảm độ phức tạp của hệ thống, cho phép các thành phần tách biệt và dễ dàng mở rộng Mỗi lớp chỉ tương tác trực tiếp với lớp ngay trên và dưới nó, tạo điều kiện thuận lợi cho việc quản lý và phát triển hệ thống.
Tại sao nên dùng REST?
Web design previously relied on SOAP (Simple Object Access Protocol) and WSDL (Web Service Definition Language), but now REST has emerged as a more optimal solution compared to these two methods.
- Rõ ràng về URL (REST URL đại diện cho resource xác định chứ không phải hành động)
- Trả về nhiều định dạng khác nhau như: html, xml, v.v
- Code ngắn gọn dễ hiểu
- Hiệu suất tốt, tin cậy, dễ phát triển
Do REST tập trung vào tài nguyên, nên ta sẽ tìm hiểu qua một chút về tài nguyên trong REST Các đặc tính của Resource:
- Hiện thị dữ liệu: Dữ liệu có thể được thể hiện ở nhiều dạng khác nhau ( binary, JSON, XML v.v)
- Nhận diện rõ ràng: Mỗi URL tại một thời điểm chỉ trả về 1 tài nguyên xác định
- Dữ liệu điều khiển : cache-control
- Dữ liệu mô tả (metadata) : Kiểu nội dung, lần cập nhật mới v.v c) Method
REST yêu cầu lập trình viên xác định rõ ý định thông qua các phương thức HTTP, thường bao gồm lấy, chèn, cập nhật hoặc xóa dữ liệu Khi thực hiện các ý định này, cần lưu ý các quy tắc sau đây.
- Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST
- Để truy xuất một tài nguyên, sử dụng GET
- Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT
- Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE
Các nguyên tắc REST không phải là bắt buộc, bạn có thể sử dụng phương thức GET để thực hiện các yêu cầu lấy, chèn, sửa hoặc xóa dữ liệu trên Server Tuy nhiên, những nguyên tắc này giúp làm cho mọi thứ trở nên rõ ràng và dễ hiểu hơn Đồng thời, định dạng dữ liệu gửi lên server (đầu vào WebService) cũng cần được chú ý.
- Kiểu dữ liệu như đã được giới thiệu ở mục 2.3.6 em chọn sử dụng 1 loại là
- Lý do là JSON dễ học và chỉ cần sử dụng 1 hàm chuyển sang JSON và hàm chuyển về là xong
Kết quả: stdClass Object ( [supplierTaxCode] => 0100109106-
1532321346679 [fileType] => ZIP [reservationCode] => RHZW4E7E2Y ) e) Gửi dữ liệu dạng JSON
- Với những link WebService yêu cầu dữ liệu đầu vào là JSON thì ta cần thêm cú pháp Content-Type: application/json vào phần Header
Hình 3.7 Thêm cú pháp khi gửi dl dạng JSON f) Gửi dữ liệu dạng FormParam
- Với những link WebService yêu cầu dữ liệu đầu vào là FormParam thì ta cần thêm cú pháp Content-Type: application/x-www-form-urlencoded vào phần Header
Hình 3.8 Thêm cú pháp khi gửi dl dạng FormParam g) Nhận dữ liệu phản hồi
- Tất cả dữ liệu trả về từ server đều là JSON Ta cần thêm cú pháp Accept: application/json vào phần Header
Hình 3.9 Thêm cú pháp để nhận dữ liệu trả về
- Vậy chốt lại để có thể giao tiếp được với WebService của Viettel ta cần khai báo đầy đủ các thành phần sau:
Hình 3.10 Các thành phần cần thiết để giao tiếp
Hình 3.11 Mô hình hoạt động
Bước 1 Người dùng nhập dữ liệu vào form chức năng
Bước 2 Khi ấn nút thao tác (submit) sẽ được chuyển dữ liệu tới tệp tin xử lý tương ứng
Bước 3: Tệp tin xử lý sẽ nhận dữ liệu truyền tới, lưu trữ vào cơ sở dữ liệu và gán vào một mảng định dạng JSON, hoặc sử dụng hàm json_encode theo yêu cầu đầu vào của WebService Viettel.
Bước 4: Gửi tệp tin xử lý cùng với mảng dữ liệu JSON và các thông tin kỹ thuật theo phần 3.3.2 tới đường link WebService của Viettel tương ứng với chức năng.
Bước 5 WebService Viettel sẽ nhận dữ liệu và xử lý dữ liệu với cơ sở dữ liệu của họ
Bước 6 WebService gửi lại phản hồi là một chuỗi dữ liệu ở địng dạng JSON
Bước 7: Tệp tin xử lý sẽ nhận phản hồi và thông báo cho người dùng các dữ liệu cần lưu lại, đồng thời lưu thêm thông tin này vào cơ sở dữ liệu.