Phần 1: Hướng dẫn đăng ký
tài khoản và Merchant Site NganLuong.vn
Bước 1: đăng ký tài
khoản ngân lượng
Bước 2: kích hoạt tài
khoản
Bước 3: sau khi nhấp vào
link kích hoạt yêu cầu nhập mã kích hoạt mà ngân lượng gửi vào số điện thoại
cho bạn
Kích hoạt thành công
Bước 4: sau khi kích
hoạt thành công ví điện tử bạn hãy đăng nhập
Sau khi đăng nhập bạn
tiến hành tích hợp thanh toán
Bước 5: bạn chọn vào
tích hợp nâng cao | và chọn vào đăng ký merchant Site
Bước 6: điền đầy đủ
thông tin của bạn
Giao diện đăng ký thành
công xuất hiện nếu không có lỗi
Phần 2: Hướng dẫn lập
trình tích hợp ngân lượng vào website của bạn (với sourcecode có sẵn)
Bước 1: tạo 1 class
PaymentController.cs
Bạn copy hết đoạn code
dưới đây vào trong class (phần chữ in nghiêng)
using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;
using System.Collections;
/// <summary>
/// Summary description for DataProvider
/// </summary>
public class PaymentController
{
public PaymentController()
{
//
// TODO: Add constructor logic here
//
}
private String nganluong_url = "https://www.nganluong.vn/checkout.php";
private String merchant_site_code = "000-000"; //thay mã merchant site mà bạn đã đăng ký vào
đây
private String secure_pass = "xxx-xxx"; //thay mật khẩu giao tiếp giữa website của bạn
với NgânLượng.vn mà bạn đã đăng ký vào đây
#region GetMD5Hash
public String GetMD5Hash(String input)
{
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
bs
= x.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();
foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}
String md5String = s.ToString();
return md5String;
}
#endregion GetMD5Hash
#region BuildCheckoutUrl
public String BuildCheckoutUrl(String return_url, String receiver, String transaction_info, String order_code, String price)
{
// Tạo biến secure code
String secure_code = "";
secure_code
+= this.merchant_site_code;
secure_code
+= " " + HttpUtility.UrlEncode(return_url).ToLower();
secure_code
+= " " + receiver;
secure_code
+= " " + transaction_info;
secure_code
+= " " + order_code;
secure_code
+= " " + price;
secure_code
+= " " + this.secure_pass;
// Tạo mảng băm
Hashtable ht = new Hashtable();
ht.Add("merchant_site_code", this.merchant_site_code);
ht.Add("return_url", HttpUtility.UrlEncode(return_url).ToLower());
ht.Add("receiver", receiver);
ht.Add("transaction_info", transaction_info);
ht.Add("order_code", order_code);
ht.Add("price", price);
ht.Add("secure_code", this.GetMD5Hash(secure_code));
// Tạo url redirect
String redirect_url = this.nganluong_url;
if (redirect_url.IndexOf("?") == -1)
{
redirect_url
+= "?";
}
else if (redirect_url.Substring(redirect_url.Length
- 1, 1) != "?" && redirect_url.IndexOf("&") == -1)
{
redirect_url
+= "&";
}
String url = "";
// Duyệt các phần tử trong mảng băm ht1 để tạo
redirect url
IDictionaryEnumerator en = ht.GetEnumerator();
while (en.MoveNext())
{
if (url == "")
url
+= en.Key.ToString() + "=" + en.Value.ToString();
else
url
+= "&" + en.Key.ToString() + "=" + en.Value.ToString();
}
String rdu = redirect_url + url;
return rdu;
}
#endregion BuildCheckoutUrl
#region VerifyPaymentUrl
public Boolean VerifyPaymentUrl(String transaction_info, String order_code, String price, String payment_id, String payment_type, Stringerror_text, String secure_code)
{
// Tạo mã xác thực từ chủ web
String str = "";
str
+= " " + transaction_info;
str
+= " " + order_code;
str
+= " " + price;
str
+= " " + payment_id;
str
+= " " + payment_type;
str
+= " " + error_text;
str
+= " " + this.merchant_site_code;
str
+= " " + this.secure_pass;
// Mã hóa các tham số
String verify_secure_code = "";
verify_secure_code
= this.GetMD5Hash(str);
// Xác thực mã của chủ web với mã trả về từ
nganluong.vn
if (verify_secure_code == secure_code) return true;
return false;
}
#endregion VerifyPaymentUrl
}
Bước 2: trong button xác
nhận đặt hàng bạn đưa đoạn code này vào
//bạn nên mã hóa mã hóa
đơn
Session["OrderID"] = SecurityProvider.Encrypt(lblMaHoaDon.Text, true);
Gọi hàm
ThanhToanNganLuong();
ThanhToanNganLuong();
#region thanh toan ngan luong
private void ThanhToanNganLuong()
{
PaymentController payment = new PaymentController();
if (string.IsNullOrEmpty(Request.Form["submit"]))
{
//khai báo url trả về
string return_url = "http://aspnet.webvn.biz/DatHangThanhCong.aspx?order_code=" + Session["OrderID"];
//khai báo địa chỉ email nhận tiền
string receiver = "quochung211187@gmail.com";
//khai báo thông tin giao dịch
this.Response.Write("Kết
quả thanh toán không hợp lệ");
string transaction_info = "";
//khai báo mã sản phẩm, mã đơn hàng, mã giỏ hàng
string order_code = SecurityProvider.Encrypt(lblMaHoaDon.Text, true);
//khai báo tổng số tiền thanh toán
string price = litTongThanhTien.Text;
//gửi thông tin giao dịch đến nganluong.vn
string url = payment.BuildCheckoutUrl(return_url, receiver,
transaction_info, order_code, price);
Response.Redirect(url);
}
if (this.Request.QueryString["process"] == "complete")
{
//lấy thông tin giao dịch
string transaction_info = this.Request.QueryString["transaction_info"];
//lấy mã sản phẩm, mã đơn hàng, giỏ hàng giao
dịch
string order_code = this.Request.QueryString["order_code"];
//lấy tổng số tiền thanh toán
string price = this.Request.QueryString["price"];
//lấy mã giao dịch thanh toán tại nganluong.vn
string payment_id = this.Request.QueryString["payment_id"];
//lấy loại giao dịch tại nganluong.vn (1=thanh
toán ngay, 2=thanh toán tạm giữ)
string payment_type = this.Request.QueryString["payment_type"];
//lấy thông tin chi tiết về lỗi trong quá trình
thanh toán
string error_text = this.Request.QueryString["error_text"];
//lấy mã kiểm tra tính hợp lệ của đầu vào
string secure_code = this.Request.QueryString["secure_code"];
//xử lý đầu vào
bool veri = payment.VerifyPaymentUrl(transaction_info,
order_code, price, payment_id, payment_type, error_text, secure_code);
if (veri == false)
{
//tham số gửi về không hợp lệ, có sự can thiệp
từ bên ngoài
this.Response.Write("Kết
quả thanh toán không hợp lệ");
}
else
{
if (!string.IsNullOrEmpty(error_text))
{
//có lỗi trong quá trình thanh toán
Response.Write("Có lỗi: " + error_text + "! Hãy thực hiện lại!");
}
else
{
//thanh toán thành công
this.Response.Write("Thanh
toán thành công");
}
}
}
}
#endregion thanh toan ngan luong
Bước 3: build project và
tiến hành thử nghiệm thanh toán
Phần 3: Tiến hành thử
nghiệm thanh toán
Bước 1: Chọn xác nhận
đặt hàng với nganluong
Bước 2: có 2 lựa chọn
thanh toán
Thanh toán tạm giữ và
thanh toán toán ngay
ü Thanh toán tạm giữ:
Điền mã xác nhận mà ngân
lượng gửi về điện thoại cho bạn
Tài khoản của người bán
khi nhận số tiền thanh toán từ người mua sẽ được tạm giữ
Người bán sẽ tiến hành
xác nhận giao hàng
Người mua tiếp tục
phê chuẩn đã nhận được hàng khi đó tiền sẽ được nganluong xác nhận chuyển vào
tài khoản người bán và người mua cũng nhận được mail thông báo
Người mua đăng nhập vào
ngân lượng và chọn vào link phê chuẩn
Điền mã xác minh vào
Người bán sẽ kiểm tra
lại và thấy kết quả giao dich thành công
ü thanh toán toán ngay: trường hợp này bạn
nên cân nhắc và sau khi thanh toán tiền sẽ trực tiếp gửi vào tài khoản người
bán
0 comments:
Post a Comment