• Kiến thức
  • Network
  • Security
  • Software
  • Thủ thuật
  • Tin học văn phòng
  • Tin tức
  • Mail ảo tạm thời miễn phí
  • Tools tra cứu thông tin
AnonyViet
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
  • Tin tức
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • Kali Linux / Parrot
    • SQL Injection
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10/11
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • Tin học văn phòng
  • Kiến thức
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
No Result
View All Result
AnonyViet
No Result
View All Result

Ronin Engineer Tích Hợp với VNPay Như Thế Nào?

AnonyViet by AnonyViet
02/05/2024 - Updated on 24/07/2025
in Code
A A
0

Mục lục bài viết

  1. 1. Yêu Cầu
  2. 2. Tại Sao là VNPay QR?
    1. 2.1. Bảo Mật
    2. 2.2. Phí
    3. 2.3. Yếu Tố Khác
  3. 3. Thiết Kế
    1. 3.1. Luồng Thanh Toán QR
    2. 3.2. Luồng Tiền
  4. 4. Code Mẫu
    1. 4.1. API Tạo URL Thanh Toán
    2. 4.2. API IPN
  5. 5. Bảo Mật
    1. 5.1. Tính đúng đắn dữ liệu và Xác thực
    2. 5.2. Cập Nhật Trạng Thái Thanh Toán
    3. 5.3. Whitelist
    4. 5.4. Version
  6. 6. Xử Lý Lỗi
    1. 6.1. Response Code
    2. 6.2. Retry
    3. 6.3. Idempotent Handler
  7. 7. Tracing
  8. 8. Kiểm Thử
  9. 9. Bước Tiếp Theo
  10. 10. Tổng Kết
  11. Câu hỏi thường gặp
    1. VNPay QR có bảo mật không?
    2. Phí giao dịch của VNPay QR như thế nào?
    3. RoninHub tích hợp VNPay QR như thế nào?

Hello mọi người, mình là một Ronin Engineer. Hôm nay mình sẽ trình bày website roninhub.com bên mình tích hợp với VNPay như nào thế?

Tham gia kênh Telegram của AnonyViet 👉 Link 👈

Let’s go!

Các bài viết liên quan

Cách phát hiện mã QR độc hại để tránh bị lừa đảo

22/07/2025 - Updated on 25/07/2025

Cách Active Key Sublime Text 4 – Tải Sublime Text 4 Full Key

23/05/2025 - Updated on 25/07/2025
vibde coding là gì

Vibe Coding là gì?

14/05/2025 - Updated on 25/07/2025

Code pháo hoa trang trí cho Website dịp tết

25/01/2025 - Updated on 25/07/2025

1. Yêu Cầu

Đầu tiên, chúng ta sẽ bắt đầu bằng yêu cầu của nghiệp vụ.

– (Automation) Một giải pháp thanh toán tự động: Nó không chỉ tạo ra sự thuận tiện và tăng trải nghiệm của người dùng mà còn giảm chi phí vận hành “bằng cơm”.

– (Security) Tính bảo mật cao: Liên quan tới tiền, tài chính thì yếu tố này đặc biệt quan trọng, nó có thể ảnh hưởng trực tiếp tới business. 

– (Pricing) Phí giao dịch thấp: Khi số lượng giao dịch lớn hoặc tỷ suất lợi nhuận của bạn thấp, nếu phí trên mỗi giao dịch cao thì tổng phí giao dịch là một khoản đáng kể.

– (Scalability) Hỗ trợ nhiều phương thức thanh toán: Do người dùng của hệ thống có thể là sinh viên, người đi làm hoặc người có thói quen sử dụng thẻ thanh toán quốc tế. Ngoài ra, về sau nghiệp vụ có thể mở rộng hỗ trợ cả thanh toán trả góp. Do đó, việc hỗ trợ nhiều phương thức thanh toán là cần thiết.

– Ngoài ra, chúng ta có thể đánh giá thêm các yếu tố như độ ổn định, hỗ trợ khách hàng, khuyến mãi, giao diện, độ khó tích hợp, quản lý và các tính năng khác, …

Như vậy, chúng ta sẽ cần tích hợp một cổng thanh toán để giải quyết yêu cầu trên của nghiệp vụ. Bên cạnh đó, cổng thanh toán cần đáp ứng được ít nhất là 4 yếu tố chính trên.

2. Tại Sao là VNPay QR?

Đầu tiên, tại sao lại là VNPay QR? Thứ nhất, bên mình không quảng cáo cho VNPay. Và bên mình cũng chưa trải nghiệm hết tất cả các bên cung cấp giải pháp thanh toán nên việc so sánh giữa các bên là không khách quan. Mỗi bên đều có ưu nhược điểm, việc lựa chọn sẽ phụ thuộc vào yêu cầu cụ thể của bạn.

Dưới đây mình đưa một số thông tin để bạn tham khảo nhé.

2.1. Bảo Mật

Quan điểm của mình là nên chọn những nhà cung cấp lớn và uy tín thì khả năng có tính bảo mật cao. Tuy chưa có một thống kê cụ thể về thị phần nhưng theo mình có thể kể đến các ông lớn sau:

– Napas

– Momo

– VNPay

– Viettel Paygate

Mình đoán những năm gần đây VNPay đang dần vươn lên trong thị trường ví điện tử, giải pháp thanh toán. Chúng ta dễ dàng nhìn thấy nhiều chiến dịch marketing rầm rộ từ trên TV, biển quảng cáo trên những trục đường to, cho đến những quán cơm nhỏ có những chiếc loa nhỏ nhỏ xinh xinh thông báo biến động số dư. Kéo theo mảng về cổng thanh toán VNPay QR cũng phát triển.

Xét về thông số bảo mật, hầu hết các bên cung cấp đều tuân thủ tiêu chuẩn bảo mật PCI DSS. Nhưng ta cần đánh giá thêm về version và level của PCI DSS. Nôm na, version cao, level thấp là tốt. Ví dụ version 4.0, level 1 là “xịn”.

Thông tin PCI DSS của một số cổng thanh toán

Theo thông tin trên, VNPay QR có độ bảo mật đứng thứ 2 và Momo có độ bảo mật cao nhất.

2.2. Phí

Dưới đây là bảng giá của một số cổng thanh toán với phương thức thanh toán là QR mobile banking (nội địa).

phí qr

Chúng ta có thể thấy VNPay QR có phí giao dịch không phải rẻ so với các bên khác.

2.3. Yếu Tố Khác

Bên cạnh đó, VNPay QR có:

  • Tốc độ xử lý giao dịch nhanh và ổn định.
  • Sale và hỗ trợ kỹ thuật đều nhiệt tình hỗ trợ.
  • Giao diện không quá đẹp nhưng thân thiện.
  • Liên kết với nhiều ngân hàng.
  • Thỉnh thoảng có khuyến mãi hấp dẫn.
  • Tính năng quản lý đầy đủ.
  • Hỗ trợ phương thức trả góp, một tính năng hay và business sẽ sử dụng trong tương lai.

Tuy có nhiều điểm mạnh nhưng VNPay QR cũng có những điểm cần cải thiện, mình sẽ đề cập ở các phần sau.

3. Thiết Kế

Về luồng tích hợp, mọi người có thể xem thêm tại trang docs của VNPay QR giúp mình nhé.

https://sandbox.vnpayment.vn/apis/docs/thanh-toan-pay/pay.html 

Trong docs đang chỉ vẽ và mô tả luồng thanh toán bằng thẻ. Tuy nhiên phương thức thanh toán mà khách hàng hay sử dụng lại là QR mobile banking nên mình sẽ vẽ thêm cho luồng phương thức thanh toán QR theo kiểu khác. Ngoài ra, mình sẽ vẽ thêm luồng tiền để mọi người dễ hiểu và có bức tranh toàn cảnh hơn.

3.1. Luồng Thanh Toán QR

luong thanh toan qr

Chú thích: 

  • Ronin FE: frontend của RoninHub
  • Ronin BE: backend của RoninHub
  • PGW FE: frontend của cổng thanh toán VNPay QR
  • PGW BE: backend của cổng thanh toán VNPay QR
  • Bank: ngân hàng mà khách hàng sử dụng, cũng là ngân hàng mà cổng thanh toán có kết nối.
  • Luồng trên là happy case.
Xem thêm:  15 mẹo hay về NotePad có thể bạn chưa biết

Luồng:

1. User thao tác tạo yêu cầu thanh toán trên Ronin FE.
2. Ronin FE gửi yêu cầu thanh toán lên Ronin BE.
3. Ronin BE xử lý yêu cầu thanh toán, tạo transaction lưu xuống DB
4. Ronin BE tạo ra 1 URL thanh toán có dạng sau và gửi về cho Ronin FE. Trong URL thanh toán chứa thông tin thanh toán, Return URL (được sử dụng ở bước 9.2) và các thông tin khác. Payment URL Sample: https://codefile.io/f/czM3UMeADE
5. Ronin FE (browser) sẽ điều hướng sang PGW FE theo URL thanh toán trên.
6. Client chọn phương thức thanh toán QR. Mã QR sẽ hiện trên web của cổng. Client sử dụng app ngân hàng quét QR và thực hiện xác thực để thanh toán.
7. Ứng dụng ngân hàng của Client sẽ gửi lệnh chuyển khoản lên Bank.
8. Khi tài khoản của VNPay tại Bank có biến động số dư, Bank sẽ gửi thông báo giao dịch về cho VNPay.
9. Sau khi VNPay xử lý giao dịch thành công, hệ thống sẽ thực hiện đồng thời 2 bước (9.1 và 9.2).
9.1.1. VNPay gửi thông báo kết quả giao dịch về cho Ronin BE bằng cách gọi API IPN (Instant Payment Notification) của Ronin BE
9.1.2. Ronin BE thực hiện cập nhận trạng thái giao dịch của hệ thống.
9.2.1. VNPay BE gửi yêu cầu điều hướng tới VNPay FE.
9.2.2. VNPay FE sẽ được điều hướng về lại Ronin FE theo Return URL được tạo ở bước 4.
9.2.3. Ronin FE sẽ định kỳ kiểm tra trạng thái của giao dịch bằng cách gọi API của Ronin BE. Vì bước 9.1 và 9.2 được thực hiện đồng thời nên có thể 9.2 được thực hiện trước khi giao dịch được cập nhật trạng thái ở bước 9.1.

3.2. Luồng Tiền

Cổng thanh toán VNPay QR liên kết với nhiều ngân hàng, lúc đó ở mỗi ngân hàng sẽ tồn tại (ít nhất) 2 tài khoản của VNPay QR.

– 1 tài khoản PGW Merchant Account dùng để tiếp nhận lệnh thanh toán từ phía tài khoản khách hàng Client Account.

– 1 tài khoản PGW Settlement Account dùng để quyết toán (settlmentsettlement) cho tài khoản Merchant Account (tài khoản ngân hàng của Ronin Engineer)

– Đối với ngân hàng, VNPay là 1 merchant kết nối với ngân hàng. Còn đối với VNPay, Ronin Engineer là 1 merchant kết nối với cổng thanh toán.

Như vậy, mọi người có thể hình dung luồng tiền sẽ đi như sau:

  1. Client thao tác thanh toán QR trên ứng dụng ngân hàng. 
  2. Ví dụ ngân hàng khách hàng sử dụng là Techcombank. Sau khi xác thực thành công, tài khoản khách hàng (Client Account) sẽ chuyển khoản tới PGW Merchant Account tại Techcombank.
  3. VNPay có kết nối với Techcombank nên khi tài khoản PGW Merchant Account có biến động số dư thì ngân hàng sẽ gửi thông báo, thông tin giao dịch về cho VNPay để VNPay xử lý.
  4. VNPay xử lý xong sẽ gửi thông báo về Ronin BE tại IPN API.
  5. Sau đó, VNPay gom các thanh toán vào ngày T và thực hiện quyết toán cho Merchant vào ngày T + 1. 
  6. Ví dụ merchant Ronin sử dụng ngân hàng BIDV, VNPay sẽ gửi lệnh quyết toán tới tài khoản PGW Settlement Account tại BIDV và chuyển khoản cho Merchant Account (toàn khoản của Ronin).
  7. Định kỳ VNPay thực hiện đối soát với ngân hàng. Kiểm tra, so sánh giao dịch giữa cổng thanh toán và ngân hàng để đảm bảo tất cả giao dịch đã được ghi chép chính xác và đầy đủ.

Lưu ý:

– Bước 2 và bước 6 là phản ánh luồng tiền.

– Từ bước 1 đến 4 sẽ được thực hiện tại thời điểm giao dịch và trong ngày T.

– Bước 5 và 6 thực hiện tại ngày T + 1.

– Cùng trong 1 thanh toán, nhưng 3 hệ thống khác nhau (bank, payment gateway, merchant), mỗi hệ thống sẽ ghi nhận 1 mã giao dịch khác nhau.

4. Code Mẫu

Đối với luồng thanh toán có 2 bước quan trọng đó là bước 4 (tạo giao dịch và URL thanh toán) và bước 9.1 (API IPN nhận thông báo kết quả giao dịch).

Mình sẽ cùng mọi người review code mẫu nodejs trên trang docs của VNPay nha.

Trước khi review, mọi người vui lòng đọc trước tài liệu kỹ thuật của VNPay để nắm được ý nghĩa của các tham số nhé.

https://sandbox.vnpayment.vn/apis/docs/thanh-toan-pay/pay.html 

4.1. API Tạo URL Thanh Toán

Code mẫu tạo Payment URL: https://codefile.io/f/qAAxf2shgq 

– Đầu tiên, chúng ta nên làm theo những hướng dẫn của VNPay. Cung cấp đầy đủ các tham số và đúng định dạng. Ví dụ một số tham số mọi người cần lưu ý sau.

– vnp_Amount số tiền thanh toán, không có dấu thập phân và phải nhân thêm 100 trước khi gửi sang VNPay.

– Những tham số dạng date có timezone là +7 và format là yyyyMMddHHmmss. Mình chưa hiểu lý do vì sao VNPay không để format ISO

– vnp_IpAddr là string. Nếu lấy IP address theo code mẫu thì giá trị có thể là nhiều địa chỉ IP nối nhau như này 13.160.92.202, 12.161.56.21. Như vậy, không đúng định dạng trong docs. Mọi người nên chỉ lấy 1 địa chỉ IP, có thể là IP đầu tiên hoặc IP cố định của server. Để tránh lỗi có thể xảy ra ở đầu VNPay.

– vnp_ExpireDate mọi người nên đặt thời gian hết hạn. Tham số này trong code mẫu khai báo. Mọi người không nên đặt thời gian quá dài, không nên quá 30p, mình đang để 15p.

– vnp_Version nên sử dụng version mới. Lý do tại sao mình sẽ đề cập tại ở phần bảo mật bên dưới.

– vnp_TxnRef là mã giao dịch tại Ronin BE. Mọi người lưu ý đối với trường hợp mua hàng trên web, lúc đó entity Order sẽ được sinh ra trước, entity Transaction sẽ được sinh ra sau. Ngoài ra, có trường hợp không order nhưng vẫn có transaction. Ví dụ như hoàn tiền (refund). Vậy nên, mọi người lưu ý cần tách biệt 2 entity này ra và vnp_TxnRef nên để là transaction_id.

– Để code clean hơn, mọi người có thể sắp xếp thứ tự tầm quan trọng của các tham số theo chiều giảm dần và nhóm các tham số có quan hệ với nhau thành một nhóm. Ví dụ như sau:

Xem thêm:  Thiết kế Game là gì? Nên bắt đầu từ đâu?

👉 Code mẫu thứ tự khởi tạo params: https://codefile.io/f/Q8qFW121nr 

4.2. API IPN

👉 Code mẫu xử lý IPN: https://codefile.io/f/uIO3R2H1PZ 

– Nhiệm vụ của API IPN này là nhận thông báo kết quả giao dịch và cập nhật lại trạng thái của transaction, order.

– Đầu tiên, chúng ta cần validate những tham số sau:

– secureHash mình sẽ nói sâu hơn ở phần sau. 

– Kiểm tra order có tồn tại hay không

– Kiểm tra số tiền có bằng số tiền của order gốc không

– Kiểm tra trạng thái giao dịch và xử lý giao dịch theo từng trạng thái. 

– Trong trường hợp, bạn để vnp_TxnRef là transaction id thì bạn cần kiểm tra cả transaction và order tương ứng với transaction. Sau đó, cập nhật trạng của cả transaction và order tương ứng.

– Trong code mẫu, sử dụng nested condition rất nhiều, như vậy code sẽ khó đọc. Trường hợp này, mình khuyến kích mọi người sử dụng Early Return pattern để code tường minh hơn. 🧼

https://gomakethings.com/the-early-return-pattern-in-javascript/ 

– Những biến như secretKey, querystring, crypto chúng ta có thể khởi tạo lúc start app, trước khi chạy function này.

– Mình không chuyên về javascript, nếu mọi người có thêm nhận xét thì comment ở dưới giúp mình nhé. 🙏

5. Bảo Mật

5.1. Tính đúng đắn dữ liệu và Xác thực

Trong luồng payment này, chúng ta cần giải quyết được 2 vấn đề bảo mật sau:

– Data integrity: Làm sao đảm bảo tính đúng đắn của dữ liệu? Do payment request được tạo ra ở BE và được gửi về cho FE để client thực hiện thanh toán. Tuy nhiên, phía client là phía dễ bị can thiệp nên chúng ta cần đảm bảo thông tin của payment request không bị sửa đổi trong quá trình vận chuyển từ BE → FE → VNPay.

– Authentity: Làm sao để xác thực rằng đầu tạo payment request là Ronin merchant và đầu gửi IPN là VNPay?

– Liệu có thể sử dụng 1 cơ chế để giải quyết được đồng thời 2 bài toán trên?

Đầu tiên, HTTPS không đáng tin cậy 100% do một số lỗ hổng của giao thức SSL/TLS và các version cũ. Ngoài ra, HTTPS chỉ mã hoá (che giấu) dữ liệu khi truyền tải (BE → FE), trong trường hợp này ta cần đảm bảo dữ liệu không bị sửa đổi ở đầu FE. Do đó, ta cần kết hợp thêm một cơ chế nữa để tăng cường bảo mật.

Một cơ chế mà giải quyết được đồng thời 2 bài toán trên thì chúng ta có thể nghĩ tới Message Authentication Code (key-based hash function) và chữ ký số (digital signature). Mỗi cơ chế đều có ưu nhược điểm. Thông thường, digital signature sử dùng asymmetric key, còn key-based hash sử dụng symmetric key. Key-based hash có hiệu suất tốt hơn nhưng độ bảo mật thường kém hơn so với digital signature. Trong trường hợp này, chúng ta cần đáng giá thêm yếu tố dễ dàng tích hợp. So với digital signature, key-based hash có ưu thế hơn ở điểm này. Do đó, VNPay sử dụng key-based hash, cụ thể là HMACSHA512.

Đầu merchant và đầu cổng thanh toán cần thống nhất với nhau một hash secret trước khi tích hợp. VNPay sẽ generate ra hash secret rồi gửi email cho merchant. Lúc này, mỗi khi tạo payment request, đầu merchant (Ronin BE) cần kết hợp thông tin thanh toán với secret, rồi hash (HMACSHA512) kết quả kết hợp. Cuối cùng, được giá trị vnp_SecureHash gửi về cho Ronin FE. Secure Hash đảm bảo nội dung của payment request không bị can thiệp, sửa đổi ở đầu FE. Khi gửi payment request lên VNPay, hệ thống sẽ sử dụng hash secret để xác thực chỉ có merchant Ronin mới có thể tạo ra payment request này.

5.2. Cập Nhật Trạng Thái Thanh Toán

Lưu ý, bước ReturnURL được thực hiện ở phía client mà phía client là phía dễ bị can thiệp hơn. Do đó, bước cập nhật trạng thái transaction/order phải được thực hiện ở bước IPN (bước 9.1), không được thực hiện ở bước ReturnURL (bước 9.2).

5.3. Whitelist

Để tăng cường bảo mật, chúng ta nên whitelist, chỉ cho phép một số địa chỉ IP có thể gọi vào API IPN. Đội kỹ thuật bên VNPay sẽ cung cấp danh sách địa chỉ IP này cho bạn.

5.4. Version

Best practice: nên sử dụng version mới nhất.

VNPay khuyến cáo sử dụng API version mới. Các thuật toán mã hóa phiên bản cũ đã kém an toàn và bảo mật. Merchant cần chuyển đổi sang phiên bản version 2.1.0 và thuật toán mã hóa HMACSHA512.

Nếu bạn có sử dụng các thư viện ngoài liên quan tới luồng payment thì nên kiểm tra lỗ hổng và update version của thư viện. Tránh sử dụng các method đã bị đánh deprecated.

Và sau khi update version thì nên test kỹ, ít nhất đảm bảo tất cả function đã chạy đúng.

6. Xử Lý Lỗi

Việc xử lý lỗi ở tất cả các bước đều quan trọng, nó giúp dễ debug và hạn chế được ảnh hưởng khi xảy ra lỗi. Và xử lý lỗi ở bước IPN đặc biệt quan trọng. Do đầu VNPay gọi vào API IPN, nếu ở đầu merchant xử lý lỗi tốt thì sẽ hạn chế ảnh hưởng tới đầu VNPay.

6.1. Response Code

Xử lý lỗi thế nào là tốt? Ít nhất chúng ta cần phải có try catch trong quá trình IPN. Ngoài ra, cần trả đúng mã lỗi theo hướng dẫn của VNPay.

Ví dụ:

–  Nếu xử lý giao dịch thành công thì trả về RspCode: ‘00’

– Nếu không tìm được order thì trả về RspCode: ‘01’

– …

Mọi người lưu ý: 

– vnp_ResponseCode và RspCode là 2 mã khác nhau.

– vnp_ResponseCode (request: VNPay → Merchant): mô tả chuyện gì đã xảy ra bên VNPay.

– RspCode (response: Merchant → VNPay): mô tả chuyện gì đã xảy ra trong quá trình xử lý IPN.

Xem thêm:  Tổng hợp Code trang trí tết cho Website

Tuy nhiên, tài liệu của VNPay đoạn này không rõ ràng. Và bên mình phải làm theo test cases trong môi trường test sandbox. Hy vọng đội kỹ thuật VNPay cải thiện lại tài liệu.

6.2. Retry

Tại sao cần trả đúng mã lỗi theo hướng dẫn của VNPay? Như vậy thì đầu VNPay sẽ biết xử lý lỗi gọi IPN như nào. Ví dụ:

– Xử lý giao dịch thành công (RspCode: ‘00’), VNPay sẽ kết thúc luồng thanh toán đó.

– Mã secure hash không hợp lệ (RspCode: ‘97’), VNPay sẽ thực hiện retry, gọi lại IPN.

Trong trường hợp RspCode: 01, 04, 97, 99 hoặc IPN timeout là những lỗi có thể retry thì VNPAY sẽ bật cơ chế retry IPN. Thực hiện retry tối đa 10, trong vòng 5 phút.

Như vậy, việc giao tiếp giữa Merchant và VNPay sẽ đáng tin cậy hơn.

6.3. Idempotent Handler

Tuy nhiên, việc retry có thể dẫn đến vấn đề lặp (duplicate) message. Để giải pháp cho vấn đề này phụ thuộc vào logic của IPN handler. Chúng ta cần kiểm tra trạng thái giao dịch trước khi thực hiện câp nhật trạng thái. Ví dụ, nếu giao dịch ở trạng thái PROCESSING thì cho phép thực thi tiếp, còn ở trạng thái SUCCESSFUL, FAILED thì sẽ reject request.

7. Tracing

Trong giai đoạn đầu tích hợp, tỉ lệ xảy ra lỗi ở điểm tích hợp là khá cao. Do đó, chúng ta cần thu thập được nhiều thông tin để debug. Cụ thể, chúng ta nên đặt log ở đầu vào, đầu ra từng bước trong luồng thanh toán, cả case thành công, lẫn case thất bại, exception.

Mọi người lưu ý, cần đảm bảo có log ở bước 9.2.2 (Return URL). Bước này PGW FE sẽ redirect về Ronin FE để kiểm tra trạng thái giao dịch và hoàn tất luồng thanh toán. 

👉 Nginx logs: https://codefile.io/f/FeFlPs7hj2 

Tại sao lại cần có log ở bước này? bên mình đã gặp trường hợp client chuyển khoản thành công, Ronin BE nhận được IPN và xử lý thành công nhưng màn hình thanh toán QR (PWG FE) vẫn đứng hình, không redirect về Ronin FE. Mình có báo đội kỹ thuật bên VNPay check nhưng họ check không ra và bảo lỗi bên mình. Mình phải show log ở đầu nginx (bước 9.2.2) là để chứng minh lỗi bên VNPay, PWG FE chưa redirect sang Ronin FE. Sau đó, 2 bên cũng chưa tìm ra nguyên nhân gốc. Tuy nhiên, mình chỉ gặp 2 case như này, còn lại đều ổn định.

Để dễ dàng cho việc search log, biết được 1 payment request diễn ra như nào thì ở tất cả log cần chứa thông tin của correlation id (có thể là transaction_id, order_id).

8. Kiểm Thử

VNPay cung cấp môi trường test sandbox và hoạt động ổn định. Đội kỹ thuật sẽ gửi cho bạn đường dẫn tới trang cấu hình môi trường sandbox để bạn chủ động test.

Ảnh test case trên môi trường sandbox của VNPay

Trang này cho phép mình cấu hình IPN URL. Trong trường hợp, bạn chưa có môi trường deploy (chưa có một public IPN URL) và muốn test ở local. Bạn có thể tham khảo giải pháp tạo static domain đơn giản, miễn phí của ngrok. 

https://ngrok.com/blog-post/free-static-domains-ngrok-users 

ngrok http 8888 --domain=fox-funny-noticeably.ngrok-free.app

Sau khi test chức năng, tất cả test case thành công. Nếu bạn có yêu cầu tối thiểu về performance thì bạn có thể thực hiện theo bước load test. Tuy nhiên, do phụ thuộc vào môi trường sandbox của VNPay nên kết quả có thể không chính xác, không giống với môi trường production. Nhưng bạn nên thử load test qua để đảm bảo BE vẫn hoạt động tốt với lượng load lớn hơn.

9. Bước Tiếp Theo

Đối với phần thanh toán, team Ronin sẽ tiếp tục:

– Phát triển thêm các loại giao dịch khác.

– Hoàn thiện tài liệu.

– Truy vấn những giao dịch bị treo.

– Hoàn tiền (refund) tự động.

– Tích hợp phương thức trả góp.

10. Tổng Kết

Khi tích hợp với cổng thanh toán, chúng ta cần:

– Đánh giá nhiều yếu tố khi chọn giải pháp thanh toán như độ bảo mật, phí, độ ổn định, tính năng, tốc độ tích hợp, … VNPay có nhiều điểm đã làm tốt tuy nhiên phí giao dịch hơi cao và tài liệu chưa thực sự thân thiện.

– Nắm được cả về nghiệp vụ để hiểu rõ hơn về luồng thanh toán được xử lý như nào.

– Bảo mật là yếu tố quan trọng khi tích hợp và đặc biệt quan trọng đối với các hệ thống tài chính.

– Xử lý lỗi là việc làm cần thiết giúp cho hệ thống tin cậy (reliable) và khoẻ mạnh (robust) hơn.

Cám ơn mọi người đã đọc đến hết bài.

Nếu mọi người thấy bài viết hữu ích thì nhờ mọi người share để nội dung của Ronin được nhiều người biết hơn nữa. 🙏

Cám ơn mọi người, chúc mọi người nghỉ lễ vui vẻ.

 #payment #integration #backend #software_engineering

———

🧑‍💻 90+ Ronin Engineers: https://roninhub.com/khoa-hoc/software-development-advanced 

📚️ System Design VN: https://fb.com/groups/systemdesign.vn 

Câu hỏi thường gặp

VNPay QR có bảo mật không?

VNPay là một trong những nhà cung cấp giải pháp thanh toán lớn và uy tín tại Việt Nam, tuân thủ tiêu chuẩn bảo mật PCI DSS. Mức độ bảo mật cụ thể phụ thuộc vào phiên bản và cấp độ PCI DSS của họ.

Phí giao dịch của VNPay QR như thế nào?

Phí giao dịch của VNPay QR có thể cao hơn so với một số nhà cung cấp khác. Tuy nhiên, chi phí cụ thể phụ thuộc vào nhiều yếu tố và nên tham khảo bảng giá mới nhất từ VNPay.

RoninHub tích hợp VNPay QR như thế nào?

RoninHub tích hợp VNPay QR thông qua API của VNPay. Luồng thanh toán bao gồm các bước: người dùng tạo yêu cầu trên Ronin FE, Ronin BE gửi yêu cầu đến VNPay, VNPay xử lý và trả kết quả về Ronin BE, cuối cùng Ronin FE hiển thị kết quả cho người dùng.

Tags: codeqrthanh toán onlineVNPAY
AnonyViet

AnonyViet

20 năm kinh nghiệm trong lĩnh vực Security, các chứng chỉ:OSCP, CCNA, CCNP, CISSP. Kiến thức như một ngọn lửa, càng chia sẽ nó sẽ càng bùng cháy!

Related Posts

Code

Opal: Tạo ứng dụng AI không cần viết code

03/08/2025
xoa spam comment wordpress
Code

Cách xóa nhanh tất cả Bình luận rác trên WordPress

14/07/2025 - Updated on 25/07/2025
Code

Code pháo hoa trang trí cho Website dịp tết

25/01/2025 - Updated on 25/07/2025
Code

Code Hiệu Ứng Pháo Hoa Theo Chuột – Trang Trí Website Tết

24/12/2024 - Updated on 24/07/2025
chuyen giao dien website sang trang den
Code

Code chuyển giao diện Website sang nền trắng đen để tưởng nhớ hoặc để Quốc tang

20/07/2024 - Updated on 24/07/2025
Code

Hướng dẫn Active Wordfence Security Premium miễn phí

07/06/2024 - Updated on 24/07/2025
Subscribe
Notify of
guest

guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
oldest
newest
Inline Feedbacks
View all comments

Liên hệ Quảng Cáo

Lien he AnonyViet

Bài viết mới

Cách nén file PDF siêu tốc với Minimal PDF Compress

by Thanh Kim
02/09/2025
0

10 ứng dụng Android nên cài mà không phải ai cũng biết

by Thanh Kim
01/09/2025 - Updated on 02/09/2025
0

Hướng dẫn nhận 50GB iCloud miễn phí trong 3 tháng qua MoMo

by Thanh Kim
31/08/2025
0

Cách đi metro miễn phí trong ngày Quốc khánh 2/9

by Thanh Kim
30/08/2025
0

Giới thiệu

AnonyViet

AnonyViet

Nơi chia sẻ những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến AnonyViet.

Hãy cùng AnonyViet xây dựng một cộng đồng CNTT lớn mạnh nhất!

Giới thiệu

AnonyViet là Website chia sẻ miễn phí tất cả các kiến thức về công nghệ thông tin. AnonyViet cung cấp mọi giải pháp về mạng máy tính, phần mềm, đồ họa và MMO.

Liên hệ

Email: support[@]anonyviet.com

1409 Hill Street #01-01A
Old Hill Street Police Station
Singapore 179369

 

DMCA.com Protection Status

Bình luận gần đây

  • phuong trong Hướng dẫn nhận 80GB Data miễn phí từ Vinaphone từ 15/8
  • Quí trong Hướng dẫn nhận 80GB Data miễn phí từ Vinaphone từ 15/8
  • khoi trong Tut hướng dẫn Hack 4G mới nhất cho sinh viên
  • BaoChi trong Hack Mod Free Fire 1.109 OBB 48 Hack Map Headshot
  • Jiang trong Hướng dẫn nhận Perplexity Pro 1 năm miễn phí trị giá $200
  • dhin trong App check hàng giả: Lá chắn bảo vệ bạn khỏi ma trận hàng fake
  • Communist456 trong Nhận ngay key bản quyền iTop Easy Desktop v3 miễn phí 6 tháng
  • Hevin trong Cách thực hiện kĩ thuật tấn công Shellcode Injection với Autoit
  • khoa trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • Anh trong Genspark: Công cụ AI Agent giúp tải mọi thứ chỉ bằng một câu lệnh
  • AnonyViet trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • phuong trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • Tòn Seven trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • AnonyViet trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • Tuan trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • AnonyViet trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • Thg Trn trong Cách tạo Google AI Pro 12 tháng miễn phí bằng tài khoản sinh viên Ấn Độ
  • Phuong trong Download Deep Freeze 8.6 Full Key – Phần mềm đóng băng ổ đĩa
  • datdeptrai trong Tạo Virus nguy hiểm Tắt Internet vĩnh viễn bằng Notepad
  • Kim trong Cách phát hiện mã QR độc hại để tránh bị lừa đảo

©2025 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ kết quả xổ số hôm nay trực tiếp bóng đá xoilac colatv truc tiep bong da trang chủ hi88 trang chủ hi88 KUBET xoilac 8XBET Kubet https://new88.market/ bong88 https://cwfun.org/ https://hi88.gives/ 33win 789win ww88 kubet https://thabet-vn.com/ Ae888 kubet 789Club 188BET 188BET Link https://789club10.pro kubet 8kbet pg88 99ok xin88 good88 https://www.chantalsutherlandjockey.com/ https://www.go88vn.uk.com/ https://www.rikvip-viet.net/ kubet 32WIN RR88 cakhiatv Thapcam TV https://33winlink.live/ f8bet https://qq883a.com/ https://789betviet.com/ rr88 XX88 Leo88 Leo88 nha cai uy tin mu88 casino Vebo TV https://v9betnet.com/ https://ee88vie.com/ max88 iwin SV388 69VN Zomclub https://hi88fz.com/ https://u888.one/ https://go886.org/ https://sunwin10.org/ https://789club10.life/ Jun88 https://jun88pro.org/ 77Bet HB88 123b https://33winvn.me/ hello88 188bet kubet11 k8cc f168 luckywin fm88 xin88 https://918xxy.com/ https://77betvn.me/ https://hb88vn.live/ kubet thailand vip66 xoso66 vip66 xoso66 luckywin https://tp88fun.com/ trang chủ hi88 daga f8bet hello88 qq88 Luckywin NH88 https://abc8.furniture/ leo88 hb88 77bet GK88 PG88 SV388 PG88 Xoso66 Vip66 hitclub HB88 HB88 https://hubett2.org/ bong99 Ga6789 DAGA XOSO66 new882.info Hi88 8day Thabet 33win Bk8 fun88 789win w88 nhà cái uy tín Go88 sunwin sunwin jun88 rikvip hitclub sunwin go88 98win s666 sv388 12bet v9bet betvisa betvisa vin777 vin777 ee88 bet88 abc8 c54 i9bet ok365 ae888 https://keonhacai.fund/ https://max886.org/ sunwin 32win NH88 33win com https://ok9393.com/ PG88 alo789s sv368pro https://xx88.tech/ xoilac cakhiatv socolive QQ88 TP88 hi 88 King88 79KING Xoso66 xoso66 u888 rr88 79king pg88 f168 88vv https://xx88.tech/ https://mm88.today/ mu88 com 8kbet Xin88 Nohu90 https://qq88pro.vip/ https://vzqq888.com/ https://king88kr.pro/ https://mb66.bz https://789win1.live/ xoso66 98win motphimtv 32win fun88.supply king88 33win NH88 https://fun88.supply/ https://pg88p.top/ hello88 w88 8xbet sv388 betvisa bong88 fun88 78win 8day 8day v9bet s666 go88 luongsontv KUWIN 3389 SH BET u888lm.com https://max88rl.com/ https://ok365rl.com/ HI888 RR88 kubet 99ok FB88 77BET TYPHU88 https://xx88.ink/ https://vb88.social/ game bài đổi thưởng 789BET RR88 https://da88.design/ luongsontv 789f Kkwin go88 S66 sv368 79king https://urr88.com/ sv388 58win xin88 XO88 XX88 VSBET 23WIN TA88 https://88aa.rest/ https://mb66co.com/ TD88 https://fun88.supply/ https://qq88gg.net/ 69vn pg88 colatv truc tiep bong da thapcamtv thapcamtv https://go8h.com/ 8x bet iwin club rik vip https://rr88.navy/ https://e2beting.com/ gem88 f8bet bk8 bk8 Luck8 F8BET80 soc88 typhu88 k8cc k8cc 12bet sa88 cado888 https://q23win.com/ CWIN 32win 32win Vinbet https://vn88-vn.com/ https://i9bet-vn.net/ https://typhu88-vn.com/ https://hb88-vn.org/ 78win 68win BET88 68win f8bet luongsontv luongsontv https://vankhanhtv.cc/ 9bet pg99 789win fund https://king88.international/ https://ax88e.com https://bett88.co/ rikvip gem88 cakhia tv j88 ventures New88 XX88 abc8 abc8 https://king8888.pro/ xx88.me.uk https://28bets.net/ https://tx88t.com/ BCX88 https://23win.men/ 23win com https://thabetcom.life/ 789win com VNEW88 au88 6ff AX88 ty le keo https://nohutm.com 69vn f8bet BET88 Pg88 SODO 98WIN https://pg999.baby/ 789f https://8kbet25.com/ fun88 fun88 888b w88 w88 thabet thabet sunwin https://8kbet25.com/ KJC 9BET DA88 77win https://luck8.world/ https://xx88.asia/ https://33winn.me/ MM88 https://58win.design/ pg88 sv368 BL555 tdtc 79KING new882.info https://33winae.com/ u888 789win CakhiaTV bet88 trực tiếp bóng đá https://nohumo.com 8xbet WIN55 https://bk8co.net/ W88 link 188bet W88 link https://789wincom.me/ 78win01 https://mm88.online/ cola tv colatv trực tiếp bóng đá colatv trực tiếp bóng đá colatv colatv truc tiep bong da colatv colatv bóng đá trực tiếp https://aa888.bike/ 8day tdtc net88 nhatvip soi kèo xoilac tv ALO789 nohu90 OK9 https://shbet.asia/ Okking Win55 https://bk8co.net/ https://kuwin.eu.com/ Trực tiếp bóng đá Xoilac 58win https://pg999.baby/ https://pg88.ca/ E2BET E2BET S8 hoidap247 bk8 https://s68win.com/ uu88 58WIN 32WIN UU88 NOHU90 okvip https://88ibz.com/ https://78wind.com/ https://hm8805.com/ k88 78win GO99 HUBET https://rwinx.com/ https://789wint6.pro/ GK88 https://pg8868.live/ https://go991.club/ MCW https://32win79.top/ EE88 Vin777 daga 69vn 8xbet 188bet 188bet 188bet 888b ax88 https://8kbeta.com/ 33win https://69vn39.com/ VIN777 https://33winae.com/ f168 uu88 KUWIN GG88 https://bet88.archi/ 88clb 8KBET 69VN 33WIN cakhiatv 7mcn Won88 W88 nohu90 32win Kuwin xx88 AU88 Nhà cái uu88 https://bl555.org.uk/ https://bbet88b.com/ https://phimbathux.pro/ https://gamesnohu.com/ game bài đổi thưởng jun88 estate https://vz99se.com/ Iwin gold gavangtv gavangtv RC88 VSBET OK9 68WIN SHBET Bj88 W88 https://sv88.business/ https://lu88.soccer/ https://68xbet.net/ VN88 69VN nohu BET88 https://xx88.center/ ww88 https://23winme.com/ https://ppc.uk.net/ trực tiếp bóng rổ 8kbet 98WIN https://23win.domains/ vswin vswin vswin xo88 789p https://23win.domains/ GOOD88 8kbet uu88 F168 https://bl555.co.uk/ max88 net88 soc88 83067.org https://mn88edu.com/ https://fb88.jp.net/ az888 88vv 8day mu88 8kbet 789win cakhiatv MV88 https://uu88me.com/ https://8kbet.bio/ https://rr88sf.com/ Thabet Casino NỔ HŨ ĐỔI THƯỞNG 789PCOM NHÀ CÁI MMOO bắn cá TT88COM GO 99 888B Nettruyen F168 https://k8cc.wiki/ https://betvisa.wales/ https://12betp1.com/ https://loto188.im/ https://celinediontv.com/ https://sun-n-fun.com/ https://taixiu.eu.com qq88 32win RR88 RR88 https://qq88.studio/ ee88 https://kjc88.com.de/ 469vns.com okfun 8kbet 8kbet rikvip Sunwin 789club tài xỉu online uy tín Game bài đổi thưởng uy tín f8bet kèo nhà cái w88 S666 Typhu88 V9BET Bong88 Fb88 sv388 KIWI 12bet Kubet IWIN IWIN good88 i9BET 99ok 123b 789win Good88 79king ideasforlife.tv Bk8 Hb88 w88 fun88 Kèo nhà cái shbet ok9 bongvip.space okking 89bet v9bet TD88 kèo nhà cái RR88 6ff kjc s666 fb88 xin88 b52 club XX88 kèo nhà cái 5 789f 188bet w88

No Result
View All Result
  • ANONYVIET CẦN CÁC BẠN GIÚP SỨC
  • Chính sách
  • Mini Game AnonyViet và FShare Mừng xuân 2021
  • Privacy
  • Quảng cáo
  • Search
  • Search Results
  • Share Acc Nhaccuatui VIP 2020
  • Thành Viên VIP
    • Danh Sách Đặc Quyền Thành Viên VIP
  • Tiếp tục đi đến trang mới là tính năng gì
  • Trang chủ
  • Đang lấy thông tin dữ liệu
  • Đang đến địa chỉ đích

©2025 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ kết quả xổ số hôm nay trực tiếp bóng đá xoilac colatv truc tiep bong da trang chủ hi88 trang chủ hi88 KUBET xoilac 8XBET Kubet https://new88.market/ bong88 https://cwfun.org/ https://hi88.gives/ 33win 789win ww88 kubet https://thabet-vn.com/ Ae888 kubet 789Club 188BET 188BET Link https://789club10.pro kubet 8kbet pg88 99ok xin88 good88 https://www.chantalsutherlandjockey.com/ https://www.go88vn.uk.com/ https://www.rikvip-viet.net/ kubet 32WIN RR88 cakhiatv Thapcam TV https://33winlink.live/ f8bet https://qq883a.com/ https://789betviet.com/ rr88 XX88 Leo88 Leo88 nha cai uy tin mu88 casino Vebo TV https://v9betnet.com/ https://ee88vie.com/ max88 iwin SV388 69VN Zomclub https://hi88fz.com/ https://u888.one/ https://go886.org/ https://sunwin10.org/ https://789club10.life/ Jun88 https://jun88pro.org/ 77Bet HB88 123b https://33winvn.me/ hello88 188bet kubet11 k8cc f168 luckywin fm88 xin88 https://918xxy.com/ https://77betvn.me/ https://hb88vn.live/ kubet thailand vip66 xoso66 vip66 xoso66 luckywin https://tp88fun.com/ trang chủ hi88 daga f8bet hello88 qq88 Luckywin NH88 https://abc8.furniture/ leo88 hb88 77bet GK88 PG88 SV388 PG88 Xoso66 Vip66 hitclub HB88 HB88 https://hubett2.org/ bong99 Ga6789 DAGA XOSO66 new882.info Hi88 8day Thabet 33win Bk8 fun88 789win w88 nhà cái uy tín Go88 sunwin sunwin jun88 rikvip hitclub sunwin go88 98win s666 sv388 12bet v9bet betvisa betvisa vin777 vin777 ee88 bet88 abc8 c54 i9bet ok365 ae888 https://keonhacai.fund/ https://max886.org/ sunwin 32win NH88 33win com https://ok9393.com/ PG88 alo789s sv368pro https://xx88.tech/ xoilac cakhiatv socolive QQ88 TP88 hi 88 King88 79KING Xoso66 xoso66 u888 rr88 79king pg88 f168 88vv https://xx88.tech/ https://mm88.today/ mu88 com 8kbet Xin88 Nohu90 https://qq88pro.vip/ https://vzqq888.com/ https://king88kr.pro/ https://mb66.bz https://789win1.live/ xoso66 98win motphimtv 32win fun88.supply king88 33win NH88 https://fun88.supply/ https://pg88p.top/ hello88 w88 8xbet sv388 betvisa bong88 fun88 78win 8day 8day v9bet s666 go88 luongsontv KUWIN 3389 SH BET u888lm.com https://max88rl.com/ https://ok365rl.com/ HI888 RR88 kubet 99ok FB88 77BET TYPHU88 https://xx88.ink/ https://vb88.social/ game bài đổi thưởng 789BET RR88 https://da88.design/ luongsontv 789f Kkwin go88 S66 sv368 79king https://urr88.com/ sv388 58win xin88 XO88 XX88 VSBET 23WIN TA88 https://88aa.rest/ https://mb66co.com/ TD88 https://fun88.supply/ https://qq88gg.net/ 69vn pg88 colatv truc tiep bong da thapcamtv thapcamtv https://go8h.com/ 8x bet iwin club rik vip https://rr88.navy/ https://e2beting.com/ gem88 f8bet bk8 bk8 Luck8 F8BET80 soc88 typhu88 k8cc k8cc 12bet sa88 cado888 https://q23win.com/ CWIN 32win 32win Vinbet https://vn88-vn.com/ https://i9bet-vn.net/ https://typhu88-vn.com/ https://hb88-vn.org/ 78win 68win BET88 68win f8bet luongsontv luongsontv https://vankhanhtv.cc/ 9bet pg99 789win fund https://king88.international/ https://ax88e.com https://bett88.co/ rikvip gem88 cakhia tv j88 ventures New88 XX88 abc8 abc8 https://king8888.pro/ xx88.me.uk https://28bets.net/ https://tx88t.com/ BCX88 https://23win.men/ 23win com https://thabetcom.life/ 789win com VNEW88 au88 6ff AX88 ty le keo https://nohutm.com 69vn f8bet BET88 Pg88 SODO 98WIN https://pg999.baby/ 789f https://8kbet25.com/ fun88 fun88 888b w88 w88 thabet thabet sunwin https://8kbet25.com/ KJC 9BET DA88 77win https://luck8.world/ https://xx88.asia/ https://33winn.me/ MM88 https://58win.design/ pg88 sv368 BL555 tdtc 79KING new882.info https://33winae.com/ u888 789win CakhiaTV bet88 trực tiếp bóng đá https://nohumo.com 8xbet WIN55 https://bk8co.net/ W88 link 188bet W88 link https://789wincom.me/ 78win01 https://mm88.online/ cola tv colatv trực tiếp bóng đá colatv trực tiếp bóng đá colatv colatv truc tiep bong da colatv colatv bóng đá trực tiếp https://aa888.bike/ 8day tdtc net88 nhatvip soi kèo xoilac tv ALO789 nohu90 OK9 https://shbet.asia/ Okking Win55 https://bk8co.net/ https://kuwin.eu.com/ Trực tiếp bóng đá Xoilac 58win https://pg999.baby/ https://pg88.ca/ E2BET E2BET S8 hoidap247 bk8 https://s68win.com/ uu88 58WIN 32WIN UU88 NOHU90 okvip https://88ibz.com/ https://78wind.com/ https://hm8805.com/ k88 78win GO99 HUBET https://rwinx.com/ https://789wint6.pro/ GK88 https://pg8868.live/ https://go991.club/ MCW https://32win79.top/ EE88 Vin777 daga 69vn 8xbet 188bet 188bet 188bet 888b ax88 https://8kbeta.com/ 33win https://69vn39.com/ VIN777 https://33winae.com/ f168 uu88 KUWIN GG88 https://bet88.archi/ 88clb 8KBET 69VN 33WIN cakhiatv 7mcn Won88 W88 nohu90 32win Kuwin xx88 AU88 Nhà cái uu88 https://bl555.org.uk/ https://bbet88b.com/ https://phimbathux.pro/ https://gamesnohu.com/ game bài đổi thưởng jun88 estate https://vz99se.com/ Iwin gold gavangtv gavangtv RC88 VSBET OK9 68WIN SHBET Bj88 W88 https://sv88.business/ https://lu88.soccer/ https://68xbet.net/ VN88 69VN nohu BET88 https://xx88.center/ ww88 https://23winme.com/ https://ppc.uk.net/ trực tiếp bóng rổ 8kbet 98WIN https://23win.domains/ vswin vswin vswin xo88 789p https://23win.domains/ GOOD88 8kbet uu88 F168 https://bl555.co.uk/ max88 net88 soc88 83067.org https://mn88edu.com/ https://fb88.jp.net/ az888 88vv 8day mu88 8kbet 789win cakhiatv MV88 https://uu88me.com/ https://8kbet.bio/ https://rr88sf.com/ Thabet Casino NỔ HŨ ĐỔI THƯỞNG 789PCOM NHÀ CÁI MMOO bắn cá TT88COM GO 99 888B Nettruyen F168 https://k8cc.wiki/ https://betvisa.wales/ https://12betp1.com/ https://loto188.im/ https://celinediontv.com/ https://sun-n-fun.com/ https://taixiu.eu.com qq88 32win RR88 RR88 https://qq88.studio/ ee88 https://kjc88.com.de/ 469vns.com okfun 8kbet 8kbet rikvip Sunwin 789club tài xỉu online uy tín Game bài đổi thưởng uy tín f8bet kèo nhà cái w88 S666 Typhu88 V9BET Bong88 Fb88 sv388 KIWI 12bet Kubet IWIN IWIN good88 i9BET 99ok 123b 789win Good88 79king ideasforlife.tv Bk8 Hb88 w88 fun88 Kèo nhà cái shbet ok9 bongvip.space okking 89bet v9bet TD88 kèo nhà cái RR88 6ff kjc s666 fb88 xin88 b52 club XX88 kèo nhà cái 5 789f 188bet w88

wpDiscuz