Skip to content

Node.js 接入示例 ​

javascript
const crypto = require('crypto');
const axios = require('axios');

class XindaPay {
  constructor(token) {
    this.apiUrl = 'https://usdt.686869.cloud';
    this.token = token;
  }

  sign(params) {
    const filtered = {};
    for (const [k, v] of Object.entries(params)) {
      if (k !== 'signature' && v !== null && v !== '' && v !== undefined) {
        filtered[k] = v;
      }
    }
    const sortedKeys = Object.keys(filtered).sort();
    const parts = sortedKeys.map(k => {
      let v = filtered[k];
      if (typeof v === 'boolean') v = v ? 'true' : 'false';
      return `${k}=${v}`;
    });
    const signStr = parts.join('&') + this.token;
    return crypto.createHash('md5').update(signStr).digest('hex').toLowerCase();
  }

  async createTransaction(params) {
    params.signature = this.sign(params);
    const res = await axios.post(
      `${this.apiUrl}/api/v1/order/create-transaction`,
      params,
      { timeout: 30000 }
    );
    return res.data;
  }

  verifyCallback(data) {
    const received = data.signature || '';
    const expected = this.sign(data);
    return received === expected;
  }
}

(async () => {
  const pay = new XindaPay('your_api_token_here');
  const result = await pay.createTransaction({
    order_id: 'ORDER_' + Date.now(),
    amount: 28.88,
    fiat: 'CNY',
    trade_type: 'usdt.trc20',
    notify_url: 'https://your.site/notify',
    redirect_url: 'https://your.site/success',
  });
  console.log(result.data.payment_url);
})();

XindaPayusdt · 加密货币收款网关