Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/OTapi/ drwxr-xr-x | |
| Viewing file: Select action/file-type: process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
const axios = require('axios');
const xmlbuilder = require('xmlbuilder');
const crypto = require('crypto');
// Your OTAPI credentials and config
const OT_Key = 'c4e85fb9-7f86-4091-8d38-73a7b4db3d79';
const OT_Secret = 'df54991d57503f6d1b88e0279cbf0c25';
// // Build the XML parameters
// const xmlParameters = xmlbuilder.create('SearchItemsParameters', { encoding: 'UTF-8' })
// .ele('ItemTitle', 'adidas').up()
// .ele('Provider', 'Alibaba1688').up()
// .ele('Order', 'TotalVolumeDesc')
// .end({ pretty: false });
const xmlParameters = `<SearchItemsParameters>
<ItemTitle>adidas</ItemTitle>
<Provider>Alibaba1688</Provider>
<Order>TotalVolumeDesc</Order>
</SearchItemsParameters>`;
// OTAPI method
const method = 'BatchSearchItemsFrame';
function getUTCTimestamp() {
const now = new Date();
const yyyy = now.getUTCFullYear();
const MM = String(now.getUTCMonth() + 1).padStart(2, '0');
const dd = String(now.getUTCDate()).padStart(2, '0');
const HH = String(now.getUTCHours()).padStart(2, '0');
const mm = String(now.getUTCMinutes()).padStart(2, '0');
const ss = String(now.getUTCSeconds()).padStart(2, '0');
return `${yyyy}${MM}${dd}${HH}${mm}${ss}`;
}
const timestamp = getUTCTimestamp();
console.log(timestamp); // Example: "20250518172302"
console.log('Timestamp:', timestamp); // Debug
// const signature = crypto
// .createHash('sha1')
// .update(OT_Secret + method + timestamp)
// .digest('hex');
// Other parameters
const params = {
instanceKey: OT_Key,
language: '',
framePosition: 0,
frameSize: 50,
xmlParameters: xmlParameters,
timestamp: timestamp, // <-- Add this line
blockList: '',
sessionId: '',
};
function buildQueryString(params) {
return Object.keys(params)
.sort()
.map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)
.join('&');
}
function calculateSignature(method, params, secret) {
const queryString = buildQueryString(params);
const toSign = method + queryString + secret;
return crypto.createHash('SHA256').update(toSign).digest('hex');
}
async function callOtapi() {
// const signature = 'a2ee99e0a0fc25057f08173c0c3906ff6e265179bdb8a27cc7e80127ddcef94f';
const signature = calculateSignature(method, params, OT_Secret);
const queryString = buildQueryString(params);
const url = `http://otapi.net/service-json/${method}?signature=${signature}&${queryString}`;
console.log('Request URL:', url); // Debug
try {
// const response = await axios.get(url);
// console.log('Response:', response.data);
} catch (err) {
if (err.response) console.error('Error response:', err.response.data);
else console.error('Request error:', err.message);
}
}
callOtapi(); |
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0265 ]-- |