Cập nhật chủ động các đơn hàng của module kết nối - nukeviet/module-wallet GitHub Wiki

Cập nhật chủ động đơn hàng của các module kết nối là hình thức xử lý khi giao dịch được cập nhật thủ công bởi quản trị trong phần quản lý giao dịch của module wallet. Khi đó hệ thống sẽ chủ động gọi về một file ở các module kết nối (nếu có) để thực hiện việc cập nhật trạng thái giao dịch.

Ví dụ: Module shops kết nối để thanh toán các đơn hàng, khi khách hàng thực hiện thanh toán với cổng thanh toán ATM thì giao dịch sẽ phải cần admin xác nhận chứ không thể tự động hoàn thành như khi thanh toán qua các cổng VNPAY hay PayPal. Do module shops có tích hợp cập nhật chủ động các đơn hàng nên khi admin xác nhận giao dịch của module wallet thì đơn hàng của module shops sẽ tự động được cập nhật trạng thái theo.

Hướng dẫn tích hợp:

Module kết nối tiến hành tạo file có tên wallet.admin.php đặt vào thư mục của module ngang hàng với file version.php. Ví dụ: module shops kết nối thì tồn tại file modules/shops/wallet.admin.php. Nội dung của file wallet.admin.php như sau:

<?php

/**
 * @Project NUKEVIET 4.x
 * @Author VINADES.,JSC ([email protected])
 * @Copyright (C) 2014 VINADES.,JSC. All rights reserved
 * @License GNU/GPL version 2 or any later version
 * @Createdate 2-10-2010 20:59
 */

if (!defined('NV_IS_WALLET_ADMIN')) {
    die('Stop!!!');
}

/*
 * Nếu trong file này cần đọc ra ngôn ngữ của module để thao tác
 * thì giữ lại đoạn code này để lấy ngôn ngữ của module.
 */
$_lang_module = $lang_module;
$lang_module = [];
if (file_exists(NV_ROOTDIR . '/modules/' . $module_file . '/language/admin_' . NV_LANG_INTERFACE . '.php')) {
    require NV_ROOTDIR . '/modules/' . $module_file . '/language/admin_' . NV_LANG_INTERFACE . '.php';
}

/*
 * Các biến hỗ trợ, các biến này là của module kết nối. Ví dụ module shops thì các biến đó là của shops
 * $module_name
 * $module_info
 * $module_file
 * $module_data
 * $module_upload
 * $order_info thông tin về trạng thái thanh toán, id của đơn hàng
 */

// Thực hiện việc cập nhật đơn hàng của module kết nối tại đây. Dưới đây là code ví dụ
$sql = "SELECT * FROM " . NV_PREFIXLANG . "_" . $module_data . "_orders WHERE id=" . $order_info['order_id'];
$order = $db->query($sql)->fetch();
if (!empty($order) and $order['status'] != 4) {
    // Cập nhật lại trạng thái đơn hàng
    $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_orders SET
        status=' . $order_info['paid_status'] . ', edit_time = ' . $order_info['paid_time'] . '
    WHERE id=' . $order_info['order_id'];
    $db->query($sql);

    // Xóa cache module kết nối
    $nv_Cache->delMod($module_name);
}

/*
 * Nếu trong file này có lấy ngôn ngữ của module để xử lý
 * thì sau khi xử lý xong cần trả lại ngôn ngữ của module wallet bằng đoạn code này
 */
// Trả lại lang của wallet
$lang_module = $_lang_module;

Lưu ý: Biến $order_info là mảng một chiều chứa thông tin:

  • $order_info['order_id'] là ID đơn hàng của module kết nối. Module kết nối dựa và giá trị này để lấy ra đơn hàng.
  • $order_info['paid_status'] là trạng thái thanh toán của đơn hàng quy chuẩn theo wallet. Xem tại Bảng trạng thái transaction status
  • $order_info['paid_time'] là thời gian (Unix Time Stamp) thực hiện giao dịch