20260204
This commit is contained in:
@@ -46,7 +46,6 @@ class TestPanel extends HTMLElement {
|
||||
this.selectedProducts = [];
|
||||
this.testUser = null;
|
||||
this.lastOrder = null;
|
||||
this.lastPaymentLink = null;
|
||||
this.loading = false;
|
||||
|
||||
this.shadowRoot.innerHTML = `
|
||||
@@ -66,11 +65,12 @@ class TestPanel extends HTMLElement {
|
||||
height: 100%;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
max-width: 600px;
|
||||
}
|
||||
.panel {
|
||||
background: var(--panel);
|
||||
@@ -227,50 +227,6 @@ class TestPanel extends HTMLElement {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<div class="panel-title">2. Link de Pago (MercadoPago)</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">Monto</div>
|
||||
<div class="row">
|
||||
<input type="number" id="inputAmount" placeholder="Monto en ARS" class="flex-1" />
|
||||
<button id="btnPaymentLink" disabled>Generar Link de Pago</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section" id="paymentResult" style="display:none;">
|
||||
<div class="result success">
|
||||
<div class="result-label">Link de pago</div>
|
||||
<a class="result-link" id="paymentLinkValue" href="#" target="_blank">—</a>
|
||||
<div style="margin-top:8px;">
|
||||
<span class="result-label">Preference ID:</span>
|
||||
<span id="preferenceIdValue">—</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel-title" style="margin-top:24px;">3. Simular Pago Exitoso</div>
|
||||
|
||||
<div class="section">
|
||||
<p style="font-size:12px;color:var(--muted);margin:0;">
|
||||
Simula el webhook de MercadoPago con status "approved".
|
||||
Esto actualiza la orden en WooCommerce a "processing".
|
||||
</p>
|
||||
<button id="btnSimulateWebhook" disabled>Simular Pago Exitoso</button>
|
||||
</div>
|
||||
|
||||
<div class="section" id="webhookResult" style="display:none;">
|
||||
<div class="result success">
|
||||
<div class="result-label">Pago simulado</div>
|
||||
<div class="result-value" id="webhookStatusValue">—</div>
|
||||
<div style="margin-top:8px;">
|
||||
<span class="result-label">Orden status:</span>
|
||||
<span id="webhookOrderStatusValue">—</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
@@ -279,8 +235,6 @@ class TestPanel extends HTMLElement {
|
||||
this.shadowRoot.getElementById("btnGenerate").onclick = () => this.generateRandomOrder();
|
||||
this.shadowRoot.getElementById("btnClear").onclick = () => this.clearAll();
|
||||
this.shadowRoot.getElementById("btnCreateOrder").onclick = () => this.createOrder();
|
||||
this.shadowRoot.getElementById("btnPaymentLink").onclick = () => this.createPaymentLink();
|
||||
this.shadowRoot.getElementById("btnSimulateWebhook").onclick = () => this.simulateWebhook();
|
||||
|
||||
this.loadProducts();
|
||||
}
|
||||
@@ -379,16 +333,7 @@ class TestPanel extends HTMLElement {
|
||||
|
||||
updateButtonStates() {
|
||||
const hasProducts = this.selectedProducts.length > 0;
|
||||
const hasOrder = this.lastOrder?.woo_order_id;
|
||||
const hasPaymentLink = this.lastPaymentLink?.init_point;
|
||||
|
||||
this.shadowRoot.getElementById("btnCreateOrder").disabled = !hasProducts;
|
||||
this.shadowRoot.getElementById("btnPaymentLink").disabled = !hasOrder;
|
||||
this.shadowRoot.getElementById("btnSimulateWebhook").disabled = !hasOrder;
|
||||
|
||||
if (hasOrder) {
|
||||
this.shadowRoot.getElementById("inputAmount").value = this.lastOrder.total || "";
|
||||
}
|
||||
}
|
||||
|
||||
async createOrder() {
|
||||
@@ -433,101 +378,16 @@ class TestPanel extends HTMLElement {
|
||||
}
|
||||
}
|
||||
|
||||
async createPaymentLink() {
|
||||
if (this.loading) return;
|
||||
if (!this.lastOrder?.woo_order_id) {
|
||||
modal.warn("Primero creá una orden");
|
||||
return;
|
||||
}
|
||||
|
||||
const amount = parseFloat(this.shadowRoot.getElementById("inputAmount").value);
|
||||
if (!amount || amount <= 0) {
|
||||
modal.warn("Ingresá un monto válido");
|
||||
return;
|
||||
}
|
||||
|
||||
this.loading = true;
|
||||
const btn = this.shadowRoot.getElementById("btnPaymentLink");
|
||||
btn.disabled = true;
|
||||
btn.textContent = "Generando...";
|
||||
|
||||
try {
|
||||
const result = await api.createPaymentLink({
|
||||
woo_order_id: this.lastOrder.woo_order_id,
|
||||
amount,
|
||||
});
|
||||
|
||||
if (result.ok) {
|
||||
this.lastPaymentLink = result;
|
||||
const linkEl = this.shadowRoot.getElementById("paymentLinkValue");
|
||||
linkEl.href = result.init_point || result.sandbox_init_point || "#";
|
||||
linkEl.textContent = result.init_point || result.sandbox_init_point || "—";
|
||||
this.shadowRoot.getElementById("preferenceIdValue").textContent = result.preference_id || "—";
|
||||
this.shadowRoot.getElementById("paymentResult").style.display = "block";
|
||||
} else {
|
||||
modal.error("Error: " + (result.error || "Error desconocido"));
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("[test-panel] createPaymentLink error:", e);
|
||||
modal.error("Error generando link: " + e.message);
|
||||
} finally {
|
||||
this.loading = false;
|
||||
btn.textContent = "Generar Link de Pago";
|
||||
this.updateButtonStates();
|
||||
}
|
||||
}
|
||||
|
||||
async simulateWebhook() {
|
||||
if (this.loading) return;
|
||||
if (!this.lastOrder?.woo_order_id) {
|
||||
modal.warn("Primero creá una orden");
|
||||
return;
|
||||
}
|
||||
|
||||
this.loading = true;
|
||||
const btn = this.shadowRoot.getElementById("btnSimulateWebhook");
|
||||
btn.disabled = true;
|
||||
btn.textContent = "Simulando...";
|
||||
|
||||
try {
|
||||
const amount = parseFloat(this.shadowRoot.getElementById("inputAmount").value) || this.lastOrder.total || 0;
|
||||
|
||||
const result = await api.simulateMpWebhook({
|
||||
woo_order_id: this.lastOrder.woo_order_id,
|
||||
amount,
|
||||
});
|
||||
|
||||
if (result.ok) {
|
||||
this.shadowRoot.getElementById("webhookStatusValue").textContent = `Payment ${result.payment_id} - ${result.status}`;
|
||||
this.shadowRoot.getElementById("webhookOrderStatusValue").textContent = result.order_status || "processing";
|
||||
this.shadowRoot.getElementById("webhookResult").style.display = "block";
|
||||
} else {
|
||||
modal.error("Error: " + (result.error || "Error desconocido"));
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("[test-panel] simulateWebhook error:", e);
|
||||
modal.error("Error simulando webhook: " + e.message);
|
||||
} finally {
|
||||
this.loading = false;
|
||||
btn.textContent = "Simular Pago Exitoso";
|
||||
this.updateButtonStates();
|
||||
}
|
||||
}
|
||||
|
||||
clearAll() {
|
||||
this.selectedProducts = [];
|
||||
this.testUser = null;
|
||||
this.lastOrder = null;
|
||||
this.lastPaymentLink = null;
|
||||
|
||||
this.renderProductList();
|
||||
this.renderUserInfo();
|
||||
this.updateButtonStates();
|
||||
|
||||
this.shadowRoot.getElementById("orderResult").style.display = "none";
|
||||
this.shadowRoot.getElementById("paymentResult").style.display = "none";
|
||||
this.shadowRoot.getElementById("webhookResult").style.display = "none";
|
||||
this.shadowRoot.getElementById("inputAmount").value = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user