Làm thế nào để bắt đầu test một hệ thống thanh toán trực tuyến
Thanh toán trực tuyến (Online payment) cung cấp khả năng thanh toán thông qua thẻ ghi nợ (Debit card), thẻ tín dụng (credit card), thẻ ATM, thẻ cào điện thoại, tin nhắn SMS, API OTP… để thanh toán. Giúp khách hàng, nhà cung cấp sản phẩm và ngân hàng có thể kết nối với nhau thông qua ...
Thanh toán trực tuyến (Online payment) cung cấp khả năng thanh toán thông qua thẻ ghi nợ (Debit card), thẻ tín dụng (credit card), thẻ ATM, thẻ cào điện thoại, tin nhắn SMS, API OTP… để thanh toán. Giúp khách hàng, nhà cung cấp sản phẩm và ngân hàng có thể kết nối với nhau thông qua internet (có thể sử dụng web hoặc mobile hoặc cả 2).
Khi kinh doanh trên mạng, các nhà cung cấp và khách hàng có thể sẽ gặp phải nhiều thách thức. Ngoài việc tiện lợi dễ sử dụng, nhanh chóng, dịch vụ tốt thì cần đặc biệt chú ý đến hệ thống thanh toán và hệ thống quản lý giao dịch trực tuyến. Hệ thống thanh toán này phải chính xác, tin cậy và tuyệt đối an toàn.
Vậy, là một QA/Tester chịu trách nhiệm về việc kiểm thử hệ thống thanh toán trực tuyến, bạn cần phải làm gì? Ngoài kiến thức nền tảng về kiểm thử phần mềm như phân vùng tương đương, phân tích giá trị biên, tham khảo thêm ISTQB CTFL, thì đã đủ để kiểm thử thanh toán trực tuyến hay chưa? Bạn cần chú ý những điều gì khi kiểm thử liên quan đến vấn đề này? Đó là những câu hỏi cơ bản nhất mà khi nói về kiểm thử thanh toán trực tuyến.
Bài viết sau đây tổng hợp từ sự chia sẻ kinh nghiệm của chị Hồng Phạm, hiện đang làm tại 123Pay – VNG Corporation về việc kiểm thử quy trình thanh toán trực tuyến. Link video: https://www.youtube.com/watch?v=fHcvhdRYMGs Nội dung bao gồm:
- Định nghĩa Thanh toán trực tuyến
- Các hình thức thanh toán trực tuyến
- Các thuật ngữ thường gặp trong Online payment
- Luồng xử lý trong Online payment
- Cơ chế chạy của Payment Gateway
- Những đối tượng cần test
- Chuẩn bảo mật thông tin PCI DSS và ISO 8583
Trước tiên cần hiểu rõ các khái niệm và cơ chế làm việc của từng đối tượng liên quan trong hệ thống thanh toán trực tuyến.
1. Định nghĩa thanh toán trực tuyến (Online payment)
Là một giao dịch thực hiện việc chuyển tiền từ tài khoản của người mua (Tài khoản Ngân hàng hoặc Tài khoản thẻ Tín dụng) sang tài khoản của người bán thông qua mạng Internet.
Ưu điểm:
- Nhanh chóng, tiết kiệm thời gian hơn rất nhiều lần so với việc thanh toán trực tiếp bằng tiền mặt giữa hai bên mua và bán.
- Không bị hạn chế bởi không gian, thời gian.
- Đơn giản: nhập thông tin thẻ, nhập OTP là có thể thanh toán được trong vài phút, hoặc quẹt thẻ vào máy POST => ký chữ ký để giao dịch.
Những ưu điểm này giúp cho hình thức thanh toán trực tuyến ngày càng được ưa chuộng, trở thành xu thế, và trong tương lai sẽ giảm lượng thanh toán bằng tiền mặt. Nếu một cửa hàng kinh doanh không chấp nhận thanh toán trực tuyến thì sẽ thiệt thòi rất nhiều, giảm khả năng cạnh tranh. Hiện nay đã có nhiều nền tảng của các nhà cung cấp cho khách hàng sử dụng, với hiệu năng cao, nhiều hình thức phong phú và có ưu điểm khác nhau.
Nhược điểm:
- Khó đảm bảo tính chính xác khi thực hiện mỗi giao dịch
- Tính an toàn của hệ thống: Rủi ro bị nhận các giao dịch gian lận bằng tiền của các nhà cung cấp thẻ.
- Bảo mật thông tin lưu trên thẻ, nguy cơ thất thoát thông tin rất cao, gây thiệt hại cho Khách hàng. Yêu cầu sercurity cao.
- Thanh toán quốc tế: có nhiều dạng tiền tệ khác nhau
- Performance hệ thống có thể bị ảnh hưởng khi có nhiều giao dịch đồng thời cùng truy cập vào hệ thống, thanh toán từ nhiều ngân hàng khác nhau, mỗi ngân hàng có nhiều user khác nhau cùng sử dụng...
2. Các hình thức thanh toán trực tuyến
1. Thẻ tín dụng (Credit card): Do ngân hàng cấp trước một số tiền hữu hạn (thường ngân hàng dựa vào mức thu nhập hàng tháng để tính toán ra số tiền này) để sử dụng trước và trả sau. User chỉ có thể tiêu dùng trước trong khoản tiền được cung cấp sẵn đó. 2. Thẻ ghi nợ (Debit card): Chỉ dùng được khi có tiền sẵn trong thẻ. VD: Thẻ ATM là 1 loại thẻ debit - đây là thẻ ghi nợ nội địa, dùng trong phạm vi lãnh thổ quốc gia. 3. Ví điện tử (E-Wallet): Là một tài khoản điện tử định danh, do một đơn vị cung cấp cho user, lưu giữ một giá trị tiền tệ = số tiền mà user chuyển khoản từ tài khoản ngân hàng của user vào tài khoản đảm bảo của đơn vị đó. Vì vậy, khi đi thanh toán, thay vì cầm ví tiền mặt, thẻ ATM hoặc thẻ tín dụng, chúng ta chỉ cần mang theo 1 điện thoại Smart Phone có kết nối internet để thanh toán. Hình thức thanh toán này chỉ hỗ trợ thanh toán cho các đơn vị liên kết với E-wallet. VD: Ví MoMo, Zalo Pay... chỉ có thể thanh toán với những điểm chấp nhập thanh toán hình thức này. 4. Internet banking/Mobile banking: Là dịch vụ trực tuyến do Ngân hàng cung cấp, cho phéo truy vấn các thông tin về tài khoản cũng như chuyển khoản thanh toán trên internet. Dịch vụ này cho phép khách hàng thực hiện các giao dịch trực tuyến mà không cần đến ngân hàng. Mỗi ngân gàng có dịch vụ Internet banking riêng. 5. Mobile payment: Khi hạ tầng viễn thông phát triển, user có thể dùng điện thoại thông minh có kết nối internet là có thể thanh toán mà không cần đến ví tiền. Mobile payment có nhiều nền tảng khác nhau, cạnh tranh hàng đầu là NFC (Near Field Communication) của Google là công nghệ kết nối không dây phạm vi tầm ngắn, sử dụng cảm ứng từ trường để thực hiện kết nối giữa các thiết bị đặt sát nhau hoặc tiếp xúc trực tiếp. Ngoài ra có QR Code: gồm những module này mã hóa cho bất kì dữ liệu trực tuyến được đọc bởi máy đọc mã vạch hay smartphone. 6. Bitcoin (ký hiệu: BTC, XBT) là một loại tiền tệ kỹ thuật số phân cấp, được phát hành bởi Satoshi Nakamoto dưới dạng phần mềm mã nguồn mở từ năm 2009. Bitcoin có thể được trao đổi trực tiếp bằng thiết bị kết nối Internet mà không cần thông qua một tổ chức tài chính trung gian nào.
3. Các thuật ngữ thường gặp trong Online payment:
+ Payment Gateway: Là một cổng thanh toán nhận giao dịch trực tiếp từ Website bán hàng và chuyển giao dịch này đến bộ vi xử lý tương ứng. + Payment processor: Bộ vi xử lý, xác nhận chi tiết các thông tin thẻ của người dùng, thực hiện những xử lý bên trong, trả kết quả về cho Payment Gateway. + Payment provider: Là nhà cung cấp dịch vụ, tổ chức vận hành của Payment Gateway và Payment processor. 2 đối tượng này cùng nằm chung một hệ thống. + Payment services hoặc Payment system: 1 nhà cung cấp dịch vụ có thể cung cấp nhiều loại cổng thanh toán khác nhau. Mỗi cổng thanh toán được gọi là một Payment services hoặc Payment system. VD: Cổng thanh toán tiền điện, internet, nước, hóa đơn truyền hình cable.. + Merchant account: Được cung cấp khi một website bán hàng liên kết với một cổng thanh toán, tiền sẽ được chuyển vào merchant account để sử dụng.
4. Luồng xử lý trong Online payment
Dưới đây là minh họa cho một giao dịch online payment:
User: Chọn hàng cho vào giỏ hàng ==> Nhập thông tin thẻ ===> Click "Thanh toán"
===> Chuyển giao dịch "thanh toán" đến nhà cung cấp dịch vụ Payment provider
===> Payment provider xác nhận và chuyển đến cổng thanh toán Payment Gateway tương ứng
===> Payment Gateway chuyển giao dịch đến Payment processor
===> Payment processor xử lý giao dịch ===> trả kết quả về Payment Gateway
===> Tiến hành cập nhật tài khoản của người mua và người bán
===> Trả kết quả về cho website bán hàng
Nếu giao dịch thành công:
- Tài khoản của bên bán được CỘNG tiền
- Tài khoản của bên mua bị TRỪ tiền
- Trả kết quả "Thành công" về cho Payment Gateway ==> trả kết quả "Thành công" về website bán hàng.
Nếu giao dịch thất bại: Không được thực hiện cập nhật tài khoản cho cả 2 bên.
- Tài khoản của bên bán KHÔNG ĐƯỢC CỘNG tiền
- Tài khoản của bên mua KHÔNG BỊ TRỪ tiền
- Trả kết quả "Thất bại" về cho Payment Gateway ==> trả kết quả "Thất bại" về website bán hàng.
LƯU Ý: Một giao dịch online payment luôn phải trả về kết quả hoặc thành công hoặc thất bại, không được xảy ra trường hợp user không biết trạng thái giao dịch của mình đang như thế nào, tiền đã đi đâu. Nếu giao dịch Pending thì phải có loading icon và phải trả kết quả về trong một khoảng thời gian cho phép mà hệ thống đó đã quy định.
5. Cơ chế chạy của Payment Gateway:
User: Gửi yêu cầu thanh toán đến Web server của merchant
===> Web server Merchant gửi yêu cầu này đến Payment gateway
===> Payment gateway gửi yêu cầu xác nhận thông tin giao dịch đến ngân hàng
===> Ngân hàng xác nhận thông tin thẻ, nếu hợp lệ chính xác, đủ điều kiện giao dịch ==> tiến hành chuyển tiền cho tài khoản của người bán & Trả thông tin về cho Payment Gateway
===> Payment gateway trả kết quả trả lời về cho Web server của Merchant
===> Merchant trả kết quả về cho user đã mua hàng
Trên đây là luồng chạy cơ bản của một Payment Gateway, với mỗi nhà cung cấp khác nhau có thể dựa trên luồng xử lý này để xây dựng những Payment Gateway có xử lý khác nhau.
Một số hệ thống Payment Gateway phổ biến hiện nay
- Paypal
- Amazone
- WorldPay
- Stripe
- Brain
- Ngân lượng
- Bảo Kim
- 123pay...
6. Những đối tượng cần test
Trong luồng xử lý 1 giao dịch có 3 đối tượng nhà cung cấp khác nhau như sau:
- Merchant Web server
- Ngân hàng
- Payment Gateway
Vì vậy cần thực hiện các loại test dưới đây:
1. Test Component:Test riêng từng đối tượng trong luồng. => Phải giả lập từng đối tượng để test, sau khi OK mới đưa lên môi trường test.
2. Test integration:- Test sự liên kết giữa 3 đối tượng với nhau. Xảy ra nhiều lỗi nhất khi kết hợp đối tượng với nhau
- Test sự kếp hợp giữa các nhiều loại giao dịch khác nhau
- Test kết hợp với nhiều loại ngân hàng cùng lúc
- Test với nhiều nhà cung cấp dịch vụ
- Test timeout, không nhận được thông tin tại từng giai đoạn trong luồng xử lý.
- Test với nhiều khách hàng, Performance testing.
Test luồng chạy từ đầu đến cuối giao dịch thành công/thất bại/khi timeout.
4. Test security:Xem giữa các luồng thông tin được chuyển đi có được mã hóa hay không? Dạng mã hóa là gì? Chuyển thông tin có chính xác hay không?
7. Chuẩn bảo mật thông tin PCI DSS và ISO 8583
Khi test các thanh toán trực tuyến, chúng ta không chỉ dựa vào requirement của khách hàng, mà còn phải tìm hiểu những chuẩn mà hệ thống đang tích hợp hoặc có liên quan để bổ sung các test case hợp lý. Dưới đây là 2 chuẩn phổ biến nhất hiện này:
1. Chuẩn bảo mật thông tin PCI DSS Đây là chuẩn bảo mật thông tin dành cho các tổ chức thực hiện và xử lý credit card, là chuẩn bảo vệ an toàn thông tin thẻ cho một tổ chức thanh toán. Nếu một Payment Gateway được chứng nhận bởi chuẩn PCI DSS này thì bạn có thể an tâm về độ bảo mật của hệ thống. Việc thực hiện test security chỉ có thể test vòng ngoài, còn test bảo mật sâu trong hệ thống thì chỉ cần có chuẩn này đảm bảo là OK.
2. ISO 8583 Đây là tiêu chuẩn quốc tế về sự liên lạc, tương tác của các hệ thống ngân hàng với nhau. ISO 8583 đưa ra định dạng message và luồng giao tiếp để các hệ thống khác nhau có thể trao đổi các giao dịch.
- Mặc dù ISO 8583 đưa ra một chuẩn chung nhưng nó không được sử dụng trực tiếp cho một hệ thống hay một network nào cả. Thay vào đó mỗi network sẽ tùy biến những chuẩn này cho phù hợp với mục đích sử dụng của mình.
- Các phiên bản khác nhau của ISO 8583 có cách đặt các trường ở vị trí khác nhau. Trong đó ISO 8583:2003 được công nhận rộng rãi.
Trên đây là các khái niệm ban đầu giúp cho bạn hình dung và hiểu sâu hơn về hệ thống thanh toán trực tuyến mà mình cần test. Trong bài viết sau, tôi sẽ trình bày nhiều hơn về các test case cần test để đảm bảo chất lượng của hệ thống thanh toán trực tuyến. Hy vọng sẽ giúp ích được cho các bạn trong công việc của mình ^_^