import { randomUUID } from 'node:crypto';
import type { PaymentProvider } from './types';

/** Test provider: "completes" every checkout instantly, without charging. Never enable in production. */
export const mockProvider: PaymentProvider = {
  name: 'mock',

  async createCheckout({ productId, resultCode, origin }) {
    const url = new URL('/api/checkout/complete', origin);
    url.searchParams.set('product', productId);
    url.searchParams.set('code', resultCode);
    url.searchParams.set('session', `mock_${randomUUID()}`);
    return { url: url.toString() };
  },

  async confirmCheckout(params) {
    const session = params.get('session');
    const productId = params.get('product');
    const resultCode = params.get('code');
    if (!session?.startsWith('mock_') || !productId || !resultCode) return null;
    return { productId, resultCode, reference: session };
  },
};
