import CryptoJS from 'crypto-js';
import 'crypto-js/hmac-sha3';
import Settings from '@pixelpay/sdk-core/lib/models/Settings';
import { APP_CONFIG, PIXELPAY_USE_SANDBOX } from './app';

/** HMAC SHA3-512: app_key|order_id|app_url (docs PixelPay Secure Signature) */
export const createPixelPayTransactionSignature = (orderId: string): string => {
  const { appKey, secretKey, appUrl } = PIXELPAY_USE_SANDBOX
    ? APP_CONFIG.pixelpaySandbox
    : { appKey: APP_CONFIG.pixelpayProd.key, secretKey: '', appUrl: APP_CONFIG.pixelpayProd.appUrl };

  const payload = [appKey, orderId, appUrl].join('|');
  return CryptoJS.HmacSHA3(payload, secretKey).toString();
};

/** Firma dinámica por orden — solo requerida en sandbox para ventas/auths */
export const applyPixelPayTransactionSignature = (settings: Settings, orderId: string) => {
  if (!PIXELPAY_USE_SANDBOX) {
    return;
  }
  settings.setupHeaders({ 'x-client-signature': createPixelPayTransactionSignature(orderId) });
};
