sPayment
// Create Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu giao dịch lên API server bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendTransaction
 * @async
 * @description Gửi POST request với dữ liệu giao dịch.
 * @param {Object} data - Dữ liệu giao dịch.
 * @param {string} data.sender - STK người gửi (VD: '20052005987').
 * @param {string} data.accountNo - Số tài khoản (VD: '1234567890').
 * @param {string} data.bankcode - bank code (VD: 'VCB') => 970422.
 * @param {number} data.amount - Số tiền (VD: 1000000).
 * @param {string} data.description - Mô tả (VD: 'Kiên đẹp trai').
 * @param {string} data.token - Token xác thực.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendTransaction({ sender: '20052005987', accountNo: '1234567890', bankcode: '970422', amount: 1000000, description: 'Kiên đẹp trai', token: 'valid-token' });
 */
async function sendTransaction(data) {
    if (!data) return { success: false, error: 'Thiếu dữ liệu' };

    const API_URL = 'http://localhost:3000/transferbank/lpbank/create';
    try {
        const response = await axios.post(API_URL, data, {
            headers: { 'Content-Type': 'application/json' }
        });
        return { success: true, data: response.data };
    } catch (error) {
        return { success: false, error: error.response?.data || error.message };
    }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi giao dịch.
 */
async function main() {
    const data = {
        sender: '20052005987',
        accountNo: '20052005987',
        bankcode: '970422',
        amount: 1000000,
        description: 'Kiên đẹp trai',
        token: 'valid-token'
    };
    const result = await sendTransaction(data);
    console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();
                                    

Confim Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu xác nhận giao dịch lên API bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendConfirmTransaction
 * @async
 * @description Gửi POST request để xác nhận giao dịch.
 * @param {Object} data - Dữ liệu xác nhận.
 * @param {string} data.token - Token xác thực cua tai khoản (VD: 'valid-token').
 * @param {string} data.spaytoken - Token cua giao dich duoc tra ve sau khi tao giao dich ( token nay la duy nhất cho mỗi giao dịch).
 * @param {string} data.code - SMART OTP HOAC SOFT OTP (VD: '999999).
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendConfirmTransaction({ token: 'valid-token', spaytoken: 'xyz789', code: 'TRANS001' });
 */
async function sendConfirmTransaction(data) {
  if (!data || !data.token || !data.spaytoken || !data.code) {
    return { success: false, error: 'Thiếu token, spaytoken hoặc code' };
  }

  const API_URL = 'http://localhost:3000/transferbank/lpbank/confirm';
  try {
    const response = await axios.post(API_URL, data, {
      headers: { 'Content-Type': 'application/json' }
    });
    return { success: true, data: response.data };
  } catch (error) {
    return { success: false, error: error.response?.data || error.message };
  }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi dữ liệu xác nhận.
 */
async function main() {
  const data = {
    token: 'valid-token',
    spaytoken: 'etttfh-ffhf-ffhf-ffhf-ffhf',
    code: '9999'
  };
  const result = await sendConfirmTransaction(data);
  console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();

                            

// Create Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu giao dịch lên API server bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendTransaction
 * @async
 * @description Gửi POST request với dữ liệu giao dịch.
 * @param {Object} data - Dữ liệu giao dịch.
 * @param {string} data.accountNo - Số tài khoản (VD: '1234567890').
 * @param {string} data.bankcode - bank code (VD: 'VCB') => 970422.
 * @param {number} data.amount - Số tiền (VD: 1000000).
 * @param {string} data.description - Mô tả (VD: 'Kiên đẹp trai').
 * @param {string} data.token - Token xác thực.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendTransaction({ accountNo: '1234567890', bankcode: '970422', amount: 1000000, description: 'Kiên đẹp trai', token: 'valid-token' });
 */
async function sendTransaction(data) {
    if (!data) return { success: false, error: 'Thiếu dữ liệu' };

    const API_URL = 'http://localhost:3000/transferbank/msb/create';
    try {
        const response = await axios.post(API_URL, data, {
            headers: { 'Content-Type': 'application/json' }
        });
        return { success: true, data: response.data };
    } catch (error) {
        return { success: false, error: error.response?.data || error.message };
    }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi giao dịch.
 */
async function main() {
    const data = {
        accountNo: '20052005987',
        bankcode: '970422',
        amount: 1000000,
        description: 'Kiên đẹp trai',
        token: 'valid-token'
    };
    const result = await sendTransaction(data);
    console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();
                                    

Confim Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu xác nhận giao dịch lên API bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendConfirmTransaction
 * @async
 * @description Gửi POST request để xác nhận giao dịch.
 * @param {Object} data - Dữ liệu xác nhận.
 * @param {string} data.token - Token xác thực cua tai khoản (VD: 'valid-token').
 * @param {string} data.spaytoken - Token cua giao dich duoc tra ve sau khi tao giao dich ( token nay la duy nhất cho mỗi giao dịch).
 * @param {string} data.code - SMART OTP HOAC SOFT OTP (VD: '999999).
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendConfirmTransaction({ token: 'valid-token', spaytoken: 'xyz789', code: 'TRANS001' });
 */
async function sendConfirmTransaction(data) {
  if (!data || !data.token || !data.spaytoken || !data.code) {
    return { success: false, error: 'Thiếu token, spaytoken hoặc code' };
  }

  const API_URL = 'http://localhost:3000/transferbank/msb/confirm';
  try {
    const response = await axios.post(API_URL, data, {
      headers: { 'Content-Type': 'application/json' }
    });
    return { success: true, data: response.data };
  } catch (error) {
    return { success: false, error: error.response?.data || error.message };
  }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi dữ liệu xác nhận.
 */
async function main() {
  const data = {
    token: 'valid-token',
    spaytoken: 'etttfh-ffhf-ffhf-ffhf-ffhf',
    code: '9999'
  };
  const result = await sendConfirmTransaction(data);
  console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();

                            

// Create Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu giao dịch lên API server bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendTransaction
 * @async
 * @description Gửi POST request với dữ liệu giao dịch.
 * @param {Object} data - Dữ liệu giao dịch.
 * @param {string} data.sender - STK người gửi (VD: '20052005987').
 * @param {string} data.accountNo - Số tài khoản (VD: '1234567890').
 * @param {string} data.bankcode - bank code (VD: 'VCB') => 970422.
 * @param {number} data.amount - Số tiền (VD: 1000000).
 * @param {string} data.description - Mô tả (VD: 'Kiên đẹp trai').
 * @param {string} data.token - Token xác thực.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendTransaction({ sender: '20052005987', accountNo: '1234567890', bankcode: '970422', amount: 1000000, description: 'Kiên đẹp trai', token: 'valid-token' });
 */
async function sendTransaction(data) {
    if (!data) return { success: false, error: 'Thiếu dữ liệu' };

    const API_URL = 'http://localhost:3000/transferbank/vietcombank/create';
    try {
        const response = await axios.post(API_URL, data, {
            headers: { 'Content-Type': 'application/json' }
        });
        return { success: true, data: response.data };
    } catch (error) {
        return { success: false, error: error.response?.data || error.message };
    }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi giao dịch.
 */
async function main() {
    const data = {
        sender: '20052005987',
        accountNo: '20052005987',
        bankcode: '970422',
        amount: 1000000,
        description: 'Kiên đẹp trai',
        token: 'valid-token'
    };
    const result = await sendTransaction(data);
    console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();
                                    

Confim Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu xác nhận giao dịch lên API bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendConfirmTransaction
 * @async
 * @description Gửi POST request để xác nhận giao dịch.
 * @param {Object} data - Dữ liệu xác nhận.
 * @param {string} data.token - Token xác thực cua tai khoản (VD: 'valid-token').
 * @param {string} data.spaytoken - Token cua giao dich duoc tra ve sau khi tao giao dich ( token nay la duy nhất cho mỗi giao dịch).
 * @param {string} data.code - SMART OTP HOAC SOFT OTP (VD: '999999).
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendConfirmTransaction({ token: 'valid-token', spaytoken: 'xyz789', code: 'TRANS001' });
 */
async function sendConfirmTransaction(data) {
  if (!data || !data.token || !data.spaytoken || !data.code) {
    return { success: false, error: 'Thiếu token, spaytoken hoặc code' };
  }

  const API_URL = 'http://localhost:3000/transferbank/vietcombank/confirm';
  try {
    const response = await axios.post(API_URL, data, {
      headers: { 'Content-Type': 'application/json' }
    });
    return { success: true, data: response.data };
  } catch (error) {
    return { success: false, error: error.response?.data || error.message };
  }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi dữ liệu xác nhận.
 */
async function main() {
  const data = {
    token: 'valid-token',
    spaytoken: 'etttfh-ffhf-ffhf-ffhf-ffhf',
    code: '9999'
  };
  const result = await sendConfirmTransaction(data);
  console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();

                            

// Create Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu giao dịch lên API server bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendTransaction
 * @async
 * @description Gửi POST request với dữ liệu giao dịch.
 * @param {Object} data - Dữ liệu giao dịch.
 * @param {string} data.sender - STK người gửi (VD: '20052005987').
 * @param {string} data.accountNo - Số tài khoản (VD: '1234567890').
 * @param {string} data.bankcode - bank code (VD: 'VCB') => 970422.
 * @param {number} data.amount - Số tiền (VD: 1000000).
 * @param {string} data.description - Mô tả (VD: 'Kiên đẹp trai').
 * @param {string} data.token - Token xác thực.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendTransaction({ sender: '20052005987', accountNo: '1234567890', bankcode: '970422', amount: 1000000, description: 'Kiên đẹp trai', token: 'valid-token' });
 */
async function sendTransaction(data) {
    if (!data) return { success: false, error: 'Thiếu dữ liệu' };

    const API_URL = 'http://localhost:3000/transferbank/bidv/create';
    try {
        const response = await axios.post(API_URL, data, {
            headers: { 'Content-Type': 'application/json' }
        });
        return { success: true, data: response.data };
    } catch (error) {
        return { success: false, error: error.response?.data || error.message };
    }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi giao dịch.
 */
async function main() {
    const data = {
        sender: '20052005987',
        accountNo: '20052005987',
        bankcode: '970422',
        amount: 1000000,
        description: 'Kiên đẹp trai',
        token: 'valid-token'
    };
    const result = await sendTransaction(data);
    console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();
                                    

Confim Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu xác nhận giao dịch lên API bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendConfirmTransaction
 * @async
 * @description Gửi POST request để xác nhận giao dịch.
 * @param {Object} data - Dữ liệu xác nhận.
 * @param {string} data.token - Token xác thực cua tai khoản (VD: 'valid-token').
 * @param {string} data.spaytoken - Token cua giao dich duoc tra ve sau khi tao giao dich ( token nay la duy nhất cho mỗi giao dịch).
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendConfirmTransaction({ token: 'valid-token', spaytoken: 'xyz789' });
 */
async function sendConfirmTransaction(data) {
  if (!data || !data.token || !data.spaytoken ) {
    return { success: false, error: 'Thiếu token, spaytoken hoặc code' };
  }

  const API_URL = 'http://localhost:3000/transferbank/bidv/confirm';
  try {
    const response = await axios.post(API_URL, data, {
      headers: { 'Content-Type': 'application/json' }
    });
    return { success: true, data: response.data };
  } catch (error) {
    return { success: false, error: error.response?.data || error.message };
  }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi dữ liệu xác nhận.
 */
async function main() {
  const data = {
    token: 'valid-token',
    spaytoken: 'etttfh-ffhf-ffhf-ffhf-ffhf'
  };
  const result = await sendConfirmTransaction(data);
  console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();

                            

// Create Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu giao dịch lên API server bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendTransaction
 * @async
 * @description Gửi POST request với dữ liệu giao dịch.
 * @param {Object} data - Dữ liệu giao dịch.
 * @param {string} data.sender - STK người gửi (VD: '20052005987').
 * @param {string} data.accountNo - Số tài khoản (VD: '1234567890').
 * @param {string} data.bankcode - bank code (VD: 'VCB') => 970422.
 * @param {number} data.amount - Số tiền (VD: 1000000).
 * @param {string} data.description - Mô tả (VD: 'Kiên đẹp trai').
 * @param {string} data.token - Token xác thực.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendTransaction({ sender: '20052005987', accountNo: '1234567890', bankcode: '970422', amount: 1000000, description: 'Kiên đẹp trai', token: 'valid-token' });
 */
async function sendTransaction(data) {
    if (!data) return { success: false, error: 'Thiếu dữ liệu' };

    const API_URL = 'http://localhost:3000/transferbank/icb/create';
    try {
        const response = await axios.post(API_URL, data, {
            headers: { 'Content-Type': 'application/json' }
        });
        return { success: true, data: response.data };
    } catch (error) {
        return { success: false, error: error.response?.data || error.message };
    }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi giao dịch.
 */
async function main() {
    const data = {
        sender: '20052005987',
        accountNo: '20052005987',
        bankcode: '970422',
        amount: 1000000,
        description: 'Kiên đẹp trai',
        token: 'valid-token'
    };
    const result = await sendTransaction(data);
    console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();
                                    

Confim Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu xác nhận giao dịch lên API bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendConfirmTransaction
 * @async
 * @description Gửi POST request để xác nhận giao dịch.
 * @param {Object} data - Dữ liệu xác nhận.
 * @param {string} data.token - Token xác thực cua tai khoản (VD: 'valid-token').
 * @param {string} data.spaytoken - Token cua giao dich duoc tra ve sau khi tao giao dich ( token nay la duy nhất cho mỗi giao dịch).
 * @param {string} data.code - SMART OTP HOAC SOFT OTP (VD: '999999).
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendConfirmTransaction({ token: 'valid-token', spaytoken: 'xyz789', code: 'TRANS001' });
 */
async function sendConfirmTransaction(data) {
  if (!data || !data.token || !data.spaytoken || !data.code) {
    return { success: false, error: 'Thiếu token, spaytoken hoặc code' };
  }

  const API_URL = 'http://localhost:3000/transferbank/icb/confirm'';
  try {
    const response = await axios.post(API_URL, data, {
      headers: { 'Content-Type': 'application/json' }
    });
    return { success: true, data: response.data };
  } catch (error) {
    return { success: false, error: error.response?.data || error.message };
  }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi dữ liệu xác nhận.
 */
async function main() {
  const data = {
    token: 'valid-token',
    spaytoken: 'etttfh-ffhf-ffhf-ffhf-ffhf',
    code: '9999'
  };
  const result = await sendConfirmTransaction(data);
  console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();

                            

// Create Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu giao dịch lên API server bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendTransaction
 * @async
 * @description Gửi POST request với dữ liệu giao dịch.
 * @param {Object} data - Dữ liệu giao dịch.
 * @param {string} data.sender - STK người gửi (VD: '20052005987').
 * @param {string} data.accountNo - Số tài khoản (VD: '1234567890').
 * @param {string} data.bankcode - bank code (VD: 'VCB') => 970422.
 * @param {number} data.amount - Số tiền (VD: 1000000).
 * @param {string} data.description - Mô tả (VD: 'Kiên đẹp trai').
 * @param {string} data.token - Token xác thực.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendTransaction({ sender: '20052005987', accountNo: '1234567890', bankcode: '970422', amount: 1000000, description: 'Kiên đẹp trai', token: 'valid-token' });
 */
async function sendTransaction(data) {
    if (!data) return { success: false, error: 'Thiếu dữ liệu' };

    const API_URL = 'http://localhost:3000/transferbank/seabank/create';
    try {
        const response = await axios.post(API_URL, data, {
            headers: { 'Content-Type': 'application/json' }
        });
        return { success: true, data: response.data };
    } catch (error) {
        return { success: false, error: error.response?.data || error.message };
    }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi giao dịch.
 */
async function main() {
    const data = {
        sender: '20052005987',
        accountNo: '20052005987',
        bankcode: '970422',
        amount: 1000000,
        description: 'Kiên đẹp trai',
        token: 'valid-token'
    };
    const result = await sendTransaction(data);
    console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();
                                    

Confim Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu xác nhận giao dịch lên API bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendConfirmTransaction
 * @async
 * @description Gửi POST request để xác nhận giao dịch.
 * @param {Object} data - Dữ liệu xác nhận.
 * @param {string} data.token - Token xác thực cua tai khoản (VD: 'valid-token').
 * @param {string} data.spaytoken - Token cua giao dich duoc tra ve sau khi tao giao dich ( token nay la duy nhất cho mỗi giao dịch).
 * @param {string} data.code - SMART OTP HOAC SOFT OTP (VD: '999999).
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendConfirmTransaction({ token: 'valid-token', spaytoken: 'xyz789', code: 'TRANS001' });
 */
async function sendConfirmTransaction(data) {
  if (!data || !data.token || !data.spaytoken || !data.code) {
    return { success: false, error: 'Thiếu token, spaytoken hoặc code' };
  }

  const API_URL = 'http://localhost:3000/transferbank/seabank/confirm';
  try {
    const response = await axios.post(API_URL, data, {
      headers: { 'Content-Type': 'application/json' }
    });
    return { success: true, data: response.data };
  } catch (error) {
    return { success: false, error: error.response?.data || error.message };
  }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi dữ liệu xác nhận.
 */
async function main() {
  const data = {
    token: 'valid-token',
    spaytoken: 'etttfh-ffhf-ffhf-ffhf-ffhf',
    code: '9999'
  };
  const result = await sendConfirmTransaction(data);
  console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();

                            

// Create Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu giao dịch lên API server bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendTransaction
 * @async
 * @description Gửi POST request với dữ liệu giao dịch.
 * @param {Object} data - Dữ liệu giao dịch.
 * @param {string} data.accountNo - Số tài khoản (VD: '1234567890').
 * @param {string} data.bankcode - bank code (VD: 'VCB') => 970422.
 * @param {number} data.amount - Số tiền (VD: 1000000).
 * @param {string} data.description - Mô tả (VD: 'Kiên đẹp trai').
 * @param {string} data.token - Token xác thực.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendTransaction({ accountNo: '1234567890', bankcode: '970422', amount: 1000000, description: 'Kiên đẹp trai', token: 'valid-token' });
 */
async function sendTransaction(data) {
    if (!data) return { success: false, error: 'Thiếu dữ liệu' };

    const API_URL = 'http://localhost:3000/transferbank/viettelpay/create';
    try {
        const response = await axios.post(API_URL, data, {
            headers: { 'Content-Type': 'application/json' }
        });
        return { success: true, data: response.data };
    } catch (error) {
        return { success: false, error: error.response?.data || error.message };
    }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi giao dịch.
 */
async function main() {
    const data = {
        sender: '20052005987',
        accountNo: '20052005987',
        bankcode: '970422',
        amount: 1000000,
        description: 'Kiên đẹp trai',
        token: 'valid-token'
    };
    const result = await sendTransaction(data);
    console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();
                                    

Confim Giao dịch

/**
 * @module TransactionClient
 * @description Gửi dữ liệu xác nhận giao dịch lên API bằng axios.
 * @requires axios
 */
const axios = require('axios');

/**
 * @function sendConfirmTransaction
 * @async
 * @description Gửi POST request để xác nhận giao dịch.
 * @param {Object} data - Dữ liệu xác nhận.
 * @param {string} data.token - Token xác thực cua tai khoản (VD: 'valid-token').
 * @param {string} data.spaytoken - Token cua giao dich duoc tra ve sau khi tao giao dich ( token nay la duy nhất cho mỗi giao dịch).
 * @param {string} data.code - MA OTP DUOC GUI QUA SMS cua BAN.
 * @returns {Promise} { success: boolean, data|error: Object|string }
 * @example
 * sendConfirmTransaction({ token: 'valid-token', spaytoken: 'xyz789', code: 'TRANS001' });
 */
async function sendConfirmTransaction(data) {
  if (!data || !data.token || !data.spaytoken || !data.code) {
    return { success: false, error: 'Thiếu token, spaytoken hoặc code' };
  }

  const API_URL = 'http://localhost:3000/transferbank/viettelpay/confirm';
  try {
    const response = await axios.post(API_URL, data, {
      headers: { 'Content-Type': 'application/json' }
    });
    return { success: true, data: response.data };
  } catch (error) {
    return { success: false, error: error.response?.data || error.message };
  }
}

/**
 * @function main
 * @async
 * @description Chạy ví dụ gửi dữ liệu xác nhận.
 */
async function main() {
  const data = {
    token: 'valid-token',
    spaytoken: 'etttfh-ffhf-ffhf-ffhf-ffhf',
    code: '9999'
  };
  const result = await sendConfirmTransaction(data);
  console.log('Kết quả:', result);
}

// Chạy chương trình
if (require.main === module) main();

                            

URL API
https://spayment.net/api/zalopaysend

Code Example

// URL API ZaloPaySend
$url = 'https://spayment.net/api/zalopaysend';

// Dữ liệu gửi đi
$data = [
    'token' => 'YOUR_VALID_TOKEN',              // Token xác thực người dùng
    'pin' => '123456',                          // Mã PIN ZaloPay
    'phone' => '0987654321',                    // Số điện thoại người nhận tiền
    'amount' => 100000,                         // Số tiền muốn chuyển (VNĐ)
    'description' => 'Chuyển tiền qua API'      // Nội dung chuyển khoản
];

// Khởi tạo cURL
$ch = curl_init();

// Cấu hình cURL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);              // Lấy phản hồi
curl_setopt($ch, CURLOPT_POST, true);                        // Sử dụng POST
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));    // Gửi JSON
curl_setopt($ch, CURLOPT_HTTPHEADER, [                       // Header
    'Content-Type: application/json',
    'Accept: application/json'
]);

// (Tùy chọn) Bỏ kiểm tra chứng chỉ SSL nếu test máy local
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// Thực hiện yêu cầu
$response = curl_exec($ch);

// Kiểm tra lỗi cURL
if (curl_errno($ch)) {
    echo '❌ Lỗi cURL: ' . curl_error($ch);
    curl_close($ch);
    exit;
}

// Lấy mã trạng thái HTTP
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// Giải mã JSON
$responseData = json_decode($response, true);

// Hiển thị kết quả
if ($httpCode === 200) {
    echo "✅ Thành công:\n";
    print_r($responseData);
} else {
    echo "❌ Thất bại (HTTP $httpCode):\n";
    print_r($responseData);
}