Hướng dẫn các lập trình viên của Website đối tác tích hợp Cổng thanh toán Checkout.vn để xử lý giao dịch Thanh toán trực tuyến cho khách hàng sử dụng Key và Token
Website sử dụng hàm mã hóa AES-256-CBC để tạo link thanh toán cho khách hàng
URL có dạng:
https://checkout.vn/checkout?token={TOKEN}&datas={JSON_DATA}
Thông tin bao gồm:
Tham số |
Kiểu dữ liệu |
Bắt buộc/ Tùy chọn |
Desc |
description |
String |
Tùy chọn |
Mô tả thông tin giao dịch |
currency |
string |
Bắt buộc |
Đơn vị tiền tệ : VND |
order_items |
Array[] = {item_name: “abc”, item_quantity : 2, item_price : 1000 } |
Bắt buộc |
Danh sách thông tin sản phẩm trong order |
payment_type_id |
Number |
Không bắt buộc |
ID cổng thanh toán |
pay_money |
Number |
Bắt buộc |
Số tiền cần thanh toán |
contact_name |
String |
Bắt buộc |
Tên Khách hàng |
contact_mobile |
String |
Tùy chọn |
Số điện thoại KH |
contact_email |
String |
Tùy chọn |
Email KH |
order_id |
String |
Bắt buộc |
Mã đơn hàng của đối tác |
url_thanks
|
String |
Tùy chọn |
Link trả về kết quả thanh toán khi thành công bao gồm các thông tin: trans_id: Mã giao dịch từ cổng thanh toán order_id: Mã đơn đối tác order_code: Mã đơn hệ thống Checkout.vn channel: Kênh thanh toán money: Số tiền thanh toán pay_fee: Phí thanh toán real_money: Số tiền thực nhận token: Token checksum xác thực giao dịch |
url_cancel |
String |
Tùy chọn |
Link trả về kết quả thanh toán khi thất bại bao gồm các thông tin: order_code: Mã đơn hệ thống Checkout.vn message: Nội dung lỗi khi giao dịch |
Code PHP hàm mã hóa JSON_DATA:
function genLinkPayment($apiKey, $token, $value) {
$serialize = true;
$iv = random_bytes(16);
$cipher = 'AES-256-CBC';
$value = \openssl_encrypt(
$serialize ? serialize($value) : $value,
$cipher, $apiKey, 0, $iv
);
$mac = hashMake($iv = base64_encode($iv), $value, $apiKey);
$json = json_encode(compact('iv', 'value', 'mac'));
$link = "https://checkout.vn/checkout?token=$token&datas=". base64_encode($json);
return $link;
}