Tích hợp nâng cao
Sơ đồ tổng quan của mô hình tích hợp nâng cao
Khác với hình thức tích hợp đơn giản, vốn Website bán hàng (gọi tắt là Merchant Site) chỉ gửi sang NgânLượng.vn thông tin sản phẩm và hóa đơn KHÔNG được mã hóa khiến người mua có thể can thiệp sửa đổi nội dung, đồng thời cũng không tự động trả về kết quả thanh toán. Vì vậy khi được thông báo nhận tiền, chủ Website phải đăng nhập vào NgânLượng.vn để kiểm tra trước khi giao hàng. Tích hợp nâng cao khắc phục được hết các yếu điểm này với mô hình hoạt động như trong sơ đồ dưới đây:

Bài viết này sẽ hướng dẫn bạn bằng cách DEMO Video các bước tích hợp nâng cao vào một Merchant Site mẫu viết bằng PHP. Khi đã nắm được cách làm thì bằng cách quy nạp, bạn có thể tự thực hiện tích hợp vào bất kỳ Website nào khác!
Giới thiệu Merchant Site mẫu, chưa tích hợp thanh toán
Website được lấy làm ví dụ gồm có 4 trang: Danh sách sản phẩm (browse.php), Chi tiết sản phẩm (detail.php), Giỏ hàng (cart.php) và Hóa đơn bán hàng (order.php); được viết một cách hết sức đơn giản nhằm mục đích DEMO nên không kết nối cơ CSDL mà được giả lập trong một mảng định nghĩa trong file Database.php
Bước 1: Khai báo Merchant Site và xác minh tên miền
Đăng nhập NgânLượng.vn, vào Menu [ Tích hợp thanh toán ] => [ Website bán hàng B2C ] => [ Tích hợp nâng cao ] => [ Đăng ký Website tích hợp ], rồi nhập các thông tin theo hướng dẫn để đăng ký. Sau đó hệ thống sẽ hướng dẫn bạn các bước để xác minh bạn thật sự là chủ hoặc người đại diện của Website này nhằm tránh việc giả mạo.
Ghi chú: Sau khi khai báo, có thể quay lại trang "Danh sách Merchant Site" để xác minh bất kỳ lúc nào!
Bước 2: Lấy mã Class tích hợp NgânLượng.vn đặt vào mã nguồn Merchant Site
Download mã nguồn các Class dưới đây theo đúng môi trường lập trình của Merchant Site.
[ Mã PHP ] [ Mã JAVA ] [ Mã C#.NET ] [ Mã VB.NET ]
Sửa vào mã nguồn Class NL_Checkout để thay đổi giá trị các biến sau:
merchant_site_code: thay bằng mã Merchant Site của Website bán hàng đang tích hợp mà NgânLượng.vn cấp cho bạn sau khi đăng ký (xem tại trang danh sách Merchant Site).
secure_pass: thay bằng mật khẩu giao tiếp với NgânLượng.vn mà bạn đã khai báo cho Merchant Site, bạn có thể đổi mật khẩu này bất kỳ lúc nào bằng cách sửa thông tin Merchant Site.
Bước 3: Lập trình nhúng nút Thanh toán vào trang Hóa đơn bán hàng
Include Class NL_Checkout nói trên vào mã nguồn trang hóa đơn bán hàng, khởi tạo đối tượng kiểu NL_Checkout rồi truyền các tham số vào hàm buildCheckoutUrl() theo thứ tự như sau:
return_url: Sau khi thanh toán hoàn tất, NgânLượng.vn sẽ chuyển người mua (qua giao thức HTTP Redirect) cùng kết quả thanh toán được mã hóa trong URL về địa chỉ này để Merchant Site xử lý.
receiver: Địa chỉ Email chính của tài khoản nhận tiền.
transaction_info: Thông tin thêm về giao dịch thanh toán (không bắt buộc).
order_code: Mã hóa đơn (hoặc mã hoặc tên sản phẩm) cần thanh toán.
price: Tổng giá trị hóa đơn (hoặc sản phẩm) cần thanh toán.
Hàm này trả về đầu ra là mã HTML của nút thanh toán có sẵn đường Link chuyển người dùng sang NgânLượng.vn để thanh toán trong đó thông tin đơn hàng được mã hóa trong tham số SECURE_CODE, hãy đặt mã này vào vị trí phù hợp tại trang hóa đơn để hiện nút thanh toán nâng cao.
Bước 4: Lập trình trang xử lý kết quả thanh toán và cập nhật trạng thái hóa đơn
Bạn vui lòng xem hướng dẫn chi tiết tại đây
Bước 5: Lập trình Web Service nhận kết quả thanh toán
Nhược điểm của việc nhận kết quả thanh toán thông qua phương thức HTTP Redirect về địa chỉ RETURN_URL như đề cập ở bước 4 là:
1. Trường hợp một trong hai bên hoặc người mua bị lỗi đường truyền hoặc lỗi website dẫn đến hậu quả NgânLượng.vn không thể Redirect người mua cùng kết quả thanh toán được mã hóa trong URL về Merchant Site thì trạng thái hóa đơn sẽ không được cập nhật tự động.
2. Trường hợp thanh toán thành công (trạng thái hóa đơn đã được cập nhật) nhưng giao dịch thanh toán tại NgânLượng.vn sau đó bị hủy hoặc hoàn lại vì một lý do nào đó (ví dụ: người bán hủy giao dịch và trả lại tiền vì hết hàng, người mua khiếu nại NgânLượng.vn phán quyết hủy giao dịch...) thì cũng không thể tự động đồng bộ hóa với trạng thái thanh toán hóa đơn.
Để khắc phục nhược điểm trên, NgânLượng.vn cung cấp THÊM một phương thức nữa giúp đồng bộ trạng thái hóa đơn bán hàng (tại Merchant Site) với trạng thái giao dịch thanh toán (tại NgânLượng.vn) một cách tự động. Theo đó mỗi khi có sự thay đổi trạng thái giao dịch thanh toán, NgânLượng.vn sẽ tự động gọi đến một Web Service (thông qua phương thức SOAP) tại địa chỉ bạn mà đã khai báo trong trường "Web Service giao tiếp với NL" khi đăng ký Merchant Site.
Hãy lập trình Web Service này bao gồm 2 hàm với các tham số đầu vào và nội dung xử lý như sau để đón lời gọi từ NgânLượng.vn:
| Tên hàm | Đầu vào | Hướng dẫn viết nội dung hàm |
UpdateOrder() Thông báo hóa đơn được thanh toán thành công |
transaction_info: Thông tin thêm về giao dịch thanh toán. order_code: Mã hóa đơn được thông báo kết quả. payment_id: Mã giao dịch thanh toán tại NgânLượng.vn. payment_type: Kiểu giao dịch thanh toán [ 1 = Thanh toán ngay, 2 = Tạm giữ ]. secure_code: Tham số an ninh để bạn kiểm tra tính xác thực của lời gọi. |
1. Gọi hàm mã hóa MD5 chuỗi ký tự có nội dung nối tiếp giá trị các tham số transaction_info, order_code, payment_id, payment_type và biến secure_pass (xem bước 2) cách nhau bởi một khoảng trắng (space). 2. So sánh kết quả mã hóa với giá trị của tham số đầu vào secure_code nhận được từ tham số truyền vào, nếu giống nhau hoàn toàn thì tức là hóa đơn bán hàng mã order_code đã được thanh toán. |
RefundOrder() Thông báo giao dịch thanh toán bị hoàn lại |
transaction_info: Thông tin thêm về giao dịch. order_code: Mã hóa đơn bán hàng bị hoàn lại. payment_id: Mã giao dịch thanh toán tại NgânLượng.vn. refund_payment_id: Mã giao dịch hoàn lại tại NgânLượng.vn. payment_type: Kiểu giao dịch thanh toán gốc [ 1 = Thanh toán ngay, 2 = Tạm giữ ]. secure_code: Tham số an ninh để bạn kiểm tra tính xác thực của lời gọi . |
1. Gọi hàm mã hóa MD5 chuỗi ký tự có nội dung nối tiếp giá trị của các tham số transaction_info, order_code, payment_id, refund_payment_id và biến secure_pass (xem bước 2) cách nhau bởi một khoảng trắng (space). 2. So sánh kết quả mã hóa với giá trị của tham số đầu vào secure_code, nếu giống nhau hoàn toàn thì tức là giao dịch NL có mã payment_id thanh toán cho hóa đơn bán hàng mã order_code đã bị hoàn lại. |
Ví dụ nội dung hàm UpdateOrder()
$my_code = md5(transaction_info . ' ' . $order_code . ' ' . $payment_id . ' ' . $payment_type . ' ' . $secure_pass);
if ($my_code == $secure_code)
{
CẬP NHẬT TRẠNG THÁI HÓA ĐƠN MÃ ORDER_CODE THÀNH ĐÃ THANH TOÁN;
}
Ví dụ nội dung hàm RefundOrder()
$my_code = md5($transaction_info . ' ' . $order_code . ' ' . $payment_id . ' ' . $refund_payment_id . ' ' . $secure_pass);
if ($my_code == $secure_code)
{
CẬP NHẬT TRẠNG THÁI HÓA ĐƠN MÃ ORDER_CODE THÀNH ĐÃ HOÀN LẠI TIỀN HOẶC HỦY GIAO DỊCH;
}
DOWNLOAD mã nguồn các ví dụ mẫu
| PHP | JAVA | C#.NET | VB.NET | |
| Class tích hợp NL_Checkout | [ Download ] | [ Download ] | [ Download ] | [ Download ] |
| Website chưa tích hợp | [ Download ] | Sắp có | [ Download ] | [ Download ] |
| Website đã tích hợp | [ Download ] | Sắp có | [ Download ] | [ Download ] |
| Web service nhận kết quả | [ Download ] | Sắp có | [ Download ] | [ Download ] |
Quảng bá sau khi tích hợp
Hãy công khai cho khách hàng biết Website bán hàng của bạn có chấp nhận thanh toán bằng NgânLượng.vn, cho phép họ thanh toán tiện lợi và được bảo vệ để tự tin mua sắm nhiều hơn. Vui lòng chọn 1 mẫu Logo dưới đây chèn vào Header, Footer, cột trái hoặc cột phải tất cả các trang của Website và đặt Link đến https://www.nganluong.vn

Thông báo tích hợp và phối hợp Marketing
Vì quyền lợi của chính bạn, hãy Click vào đây để thông báo cho NgânLượng.vn biết Website vừa tích hợp thanh toán để được:
Nhận các thông tin cập nhật về tích hợp thanh toán.
Chăm sóc, hỗ trợ và tư vấn nâng cao hiệu quả ứng dụng TTTT.
Mời tham gia các chương trình Marketing thúc đẩy bán hàng trực tuyến.
Xét duyệt đưa lên hệ thống Mua sắm và Khuyến mại, được quảng bá đến hàng trăm nghìn người mua.
