feat: sustitucion de marca Bold por medios de pago especificos (PSE, Tarjetas, Nequi, Daviplata y QR Bre-B)
This commit is contained in:
parent
7f2840093f
commit
8773d863dd
@ -25,7 +25,7 @@ object AppNotificationManager {
|
||||
private const val TAG = "AppNotificationManager"
|
||||
const val CHANNEL_ID = "dripzone_notifications_channel"
|
||||
private const val CHANNEL_NAME = "Notificaciones de Pedidos DripZone"
|
||||
private const val CHANNEL_DESC = "Avisos de estado de compras, anticipos Bold y seguimiento de pedidos"
|
||||
private const val CHANNEL_DESC = "Avisos de estado de compras, anticipos y seguimiento de pedidos"
|
||||
|
||||
private const val NOTIF_ID_ORDER = 1001
|
||||
private const val NOTIF_ID_DEPOSIT = 1002
|
||||
@ -123,7 +123,7 @@ object AppNotificationManager {
|
||||
val cleanBody = TemplateManager.stripMarkdown(renderedBody)
|
||||
|
||||
val shortOrderId = if (orderId.length > 8) orderId.takeLast(8).uppercase() else orderId.uppercase()
|
||||
val title = "⚡ ¡Anticipo Confirmado por Bold! #$shortOrderId"
|
||||
val title = "⚡ ¡Anticipo Confirmado! #$shortOrderId"
|
||||
|
||||
val intent = Intent(context, MainActivity::class.java).apply {
|
||||
flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
|
||||
|
||||
@ -79,13 +79,13 @@ object TemplateManager {
|
||||
"customer_deposit_request" to (
|
||||
"⚡ *{tienda_nombre} - CONFIRMACIÓN DE DESPACHO* 📦\n\n" +
|
||||
"Hola {cliente_nombre}, para programar el despacho express de tu orden *#{orden_id}* hacia *{cliente_ciudad}*, realiza el pago del anticipo de separación de *{valor_anticipo}*.\n\n" +
|
||||
"💳 *Paga en línea de forma 100% segura por Bold (PSE / Tarjetas / Bre-B):*\n" +
|
||||
"💳 *Paga en línea de forma 100% segura (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B):*\n" +
|
||||
"👉 {link_pago_bold}\n\n" +
|
||||
"🤝 El saldo restante de *{saldo_contraentrega}* lo cancelas al recibir tu paquete en tu puerta (en efectivo o con Bold). ¡Gracias por tu compra!"
|
||||
"🤝 El saldo restante de *{saldo_contraentrega}* lo cancelas al recibir tu paquete en tu puerta (en efectivo o transferencia). ¡Gracias por tu compra!"
|
||||
),
|
||||
"customer_deposit_confirmed" to (
|
||||
"🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\n" +
|
||||
"Hola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* a través de Bold.\n\n" +
|
||||
"Hola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* en línea.\n\n" +
|
||||
"📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n" +
|
||||
"🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\n" +
|
||||
"Puedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n" +
|
||||
@ -97,7 +97,7 @@ object TemplateManager {
|
||||
"📍 *Dirección de Entrega:* {cliente_direccion}\n" +
|
||||
"🏙️ *Ciudad:* {cliente_ciudad}\n" +
|
||||
"💵 *Saldo a Pagar Contraentrega:* *{saldo_contraentrega}*\n" +
|
||||
"💳 *Medio de Pago:* {metodo_pago} (Efectivo o mediante Bold al recibir)\n\n" +
|
||||
"💳 *Medio de Pago:* {metodo_pago} (Efectivo o transferencia al recibir)\n\n" +
|
||||
"Por favor estar atento a la portería o celular. ¡Gracias por tu compra en {tienda_nombre}! 🔥"
|
||||
),
|
||||
"order_delivered" to (
|
||||
|
||||
@ -122,7 +122,7 @@ class CartBottomSheet : BottomSheetDialogFragment() {
|
||||
binding.tvLabelSeparation.text = "⚡ Separación (1er Pedido):"
|
||||
binding.tvSeparationAmount.text = "$ 10.000 COP"
|
||||
binding.tvBalanceDueAmount.text = format.format(balanceDue) + " COP"
|
||||
binding.tvSeparationBreakdown.text = "Separas tu pedido ($totalQty ${if (totalQty > 1) "productos" else "producto"}) con solo $10.000 COP de separación fija (tarifa única para toda la orden) y cancelas el saldo restante (${format.format(balanceDue)} COP) en efectivo al recibir."
|
||||
binding.tvSeparationBreakdown.text = "Separas tu pedido ($totalQty ${if (totalQty > 1) "productos" else "producto"}) con solo $10.000 COP de anticipo (PSE, Tarjetas, Nequi o Bre-B) y cancelas el saldo restante (${format.format(balanceDue)} COP) en efectivo o transferencia al recibir."
|
||||
binding.btnCartAction.text = "Pagar Separación ($10.000 COP)"
|
||||
binding.btnCartAction.backgroundTintList = android.content.res.ColorStateList.valueOf(
|
||||
androidx.core.content.ContextCompat.getColor(requireContext(), co.dripzone.app.R.color.drip_purple)
|
||||
|
||||
@ -329,7 +329,7 @@ class OrderVerificationBottomSheet : BottomSheetDialogFragment() {
|
||||
binding.tvSuccessOrderId.text = "Orden #$orderId"
|
||||
|
||||
if (requiresDeposit) {
|
||||
binding.tvSuccessMessage.text = "¡Tu número de WhatsApp (+57 $customerPhone) fue validado y tu pedido fue registrado en la plataforma!\n\n⚠️ REQUISITO PARA DESPACHO:\nRealiza el pago de la separación de $10.000 COP para coordinar y programar el despacho de tu paquete. Cancelarás el saldo restante (${format.format(balanceDue)} COP) en efectivo al recibir."
|
||||
binding.tvSuccessMessage.text = "¡Tu número de WhatsApp (+57 $customerPhone) fue validado y tu pedido fue registrado en la plataforma!\n\n⚠️ REQUISITO PARA DESPACHO:\nRealiza el pago de la separación de $10.000 COP (PSE, Tarjeta o Nequi) para coordinar y programar el despacho de tu paquete. Cancelarás el saldo restante (${format.format(balanceDue)} COP) en efectivo o transferencia al recibir."
|
||||
binding.layoutBoldQrContainer.visibility = View.VISIBLE
|
||||
binding.pbBoldQrLoading.visibility = View.VISIBLE
|
||||
binding.ivBoldQrCode.setImageDrawable(null)
|
||||
@ -348,7 +348,7 @@ class OrderVerificationBottomSheet : BottomSheetDialogFragment() {
|
||||
.into(binding.ivBoldQrCode)
|
||||
}
|
||||
|
||||
// Configurar botón para abrir pasarela de pago Bold
|
||||
// Configurar botón para abrir pasarela de pago
|
||||
val checkoutUrl = if (boldData.checkoutUrl.isNotBlank()) boldData.checkoutUrl else "https://drip-zone.online"
|
||||
binding.btnPaySeparationBold.setOnClickListener {
|
||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(checkoutUrl))
|
||||
@ -365,8 +365,8 @@ class OrderVerificationBottomSheet : BottomSheetDialogFragment() {
|
||||
binding.layoutBoldQrContainer.visibility = View.GONE
|
||||
binding.btnPaySeparationBold.visibility = View.GONE
|
||||
binding.layoutBoldPaidSuccess.visibility = View.VISIBLE
|
||||
binding.tvSuccessMessage.text = "¡Anticipo de $10.000 COP recibido y confirmado por Bold! Tu pedido ha sido programado para despacho inmediato."
|
||||
Toast.makeText(requireContext(), "🎉 ¡Anticipo verificado en tiempo real con Bold!", Toast.LENGTH_LONG).show()
|
||||
binding.tvSuccessMessage.text = "¡Anticipo de $10.000 COP recibido y confirmado con éxito! Tu pedido ha sido programado para despacho inmediato."
|
||||
Toast.makeText(requireContext(), "🎉 ¡Anticipo verificado en tiempo real con éxito!", Toast.LENGTH_LONG).show()
|
||||
|
||||
// Disparar notificación oficial de anticipo confirmado
|
||||
val depositVars = mapOf(
|
||||
|
||||
@ -121,7 +121,7 @@ class OrdersBottomSheet : BottomSheetDialogFragment() {
|
||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(boldUrl))
|
||||
startActivity(intent)
|
||||
} catch (_: Exception) {
|
||||
Toast.makeText(requireContext(), "No se pudo abrir la pasarela Bold", Toast.LENGTH_SHORT).show()
|
||||
Toast.makeText(requireContext(), "No se pudo abrir el enlace de pago", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -189,7 +189,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="Separas tu pedido con $10.000 COP y cancelas el saldo restante en efectivo al recibir."
|
||||
android:text="Separas tu pedido con $10.000 COP (PSE, Tarjeta o Nequi) y cancelas el saldo restante en efectivo o transferencia al recibir."
|
||||
android:textColor="@color/badge_drip_text"
|
||||
android:textSize="11sp" />
|
||||
</LinearLayout>
|
||||
|
||||
@ -445,19 +445,19 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:gravity="center"
|
||||
android:text="Tu pago de $10.000 COP fue verificado por Bold. Tu pedido fue autorizado para despacho inmediato."
|
||||
android:text="Tu pago de $10.000 COP fue verificado con éxito. Tu pedido fue autorizado para despacho inmediato."
|
||||
android:textColor="#A7F3D0"
|
||||
android:textSize="11sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Separation Payment Button (Pasarela Bold) -->
|
||||
<!-- Separation Payment Button -->
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btnPaySeparationBold"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:layout_marginTop="14dp"
|
||||
android:filterTouchesWhenObscured="true"
|
||||
android:text="Pagar con Bold (PSE / Tarjeta / Nequi)"
|
||||
android:text="Pagar con PSE, Tarjeta o Nequi"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="14sp"
|
||||
|
||||
@ -235,9 +235,18 @@
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Recibe en tu puerta y paga en efectivo al recibir"
|
||||
android:text="Recibe en tu puerta y paga en efectivo o transferencia al recibir"
|
||||
android:textColor="@color/text_secondary"
|
||||
android:textSize="11sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="3dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="💳 Anticipo: PSE • Tarjetas Débito/Crédito • Nequi • Bre-B"
|
||||
android:textColor="@color/drip_purple_glow"
|
||||
android:textSize="10sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@ -200,14 +200,14 @@
|
||||
tools:text="$10.000 COP • Acreditado ✅" />
|
||||
</RelativeLayout>
|
||||
|
||||
<!-- Button to pay deposit in Bold if pending -->
|
||||
<!-- Button to pay deposit if pending -->
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btnPayDepositBold"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:fontFamily="sans-serif-bold"
|
||||
android:text="💳 Pagar Anticipo ($10.000) en Bold"
|
||||
android:text="💳 Pagar Anticipo ($10.000) PSE / Tarjeta"
|
||||
android:textSize="12sp"
|
||||
android:visibility="gone"
|
||||
app:backgroundTint="@color/accent_purple"
|
||||
@ -251,7 +251,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="Saldo a Pagar Contraentrega en Efectivo:"
|
||||
android:text="Saldo Contraentrega (Efectivo o Transferencia):"
|
||||
android:textColor="#D8B4FE"
|
||||
android:textSize="11sp" />
|
||||
|
||||
|
||||
@ -142,11 +142,11 @@ async function seed() {
|
||||
{
|
||||
id: 'customer_deposit_request',
|
||||
title: 'Solicitud de Separación con $10.000 COP (Garantía de Despacho)',
|
||||
description: 'Mensaje con enlace oficial Bold para pagar el anticipo de $10.000 COP y programar el envío.',
|
||||
description: 'Mensaje con enlace oficial para pagar el anticipo de $10.000 COP (PSE, Tarjetas, Nequi) y programar el envío.',
|
||||
category: 'customer_sales',
|
||||
channel: 'whatsapp',
|
||||
isActive: true,
|
||||
content: `⚡ *{tienda_nombre} - CONFIRMACIÓN DE DESPACHO* 📦\n\nHola {cliente_nombre}, para programar el despacho express de tu orden *#{orden_id}* hacia *{cliente_ciudad}*, realiza el pago del anticipo de separación de *{valor_anticipo}*.\n\n💳 *Paga en línea de forma 100% segura por Bold (PSE / Tarjetas / Bre-B / Nequi):*\n👉 {link_pago_bold}\n\n🤝 El saldo restante de *{saldo_contraentrega}* lo cancelas al recibir tu paquete en tu puerta. ¡Gracias por tu compra!`,
|
||||
content: `⚡ *{tienda_nombre} - CONFIRMACIÓN DE DESPACHO* 📦\n\nHola {cliente_nombre}, para programar el despacho express de tu orden *#{orden_id}* hacia *{cliente_ciudad}*, realiza el pago del anticipo de separación de *{valor_anticipo}*.\n\n💳 *Paga en línea de forma 100% segura (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B):*\n👉 {link_pago_bold}\n\n🤝 El saldo restante de *{saldo_contraentrega}* lo cancelas al recibir tu paquete en tu puerta (en efectivo o transferencia). ¡Gracias por tu compra!`,
|
||||
availableVariables: JSON.stringify([
|
||||
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Tienda' },
|
||||
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Cliente' },
|
||||
@ -154,18 +154,18 @@ async function seed() {
|
||||
{ key: 'cliente_ciudad', label: 'Ciudad', example: 'Cali', description: 'Ciudad' },
|
||||
{ key: 'valor_anticipo', label: 'Valor Anticipo', example: '$10.000 COP', description: 'Separación' },
|
||||
{ key: 'saldo_contraentrega', label: 'Saldo Contraentrega', example: '$125.000 COP', description: 'Saldo' },
|
||||
{ key: 'link_pago_bold', label: 'Link de Pago Bold', example: 'https://drip-zone.online', description: 'Enlace Bold' }
|
||||
{ key: 'link_pago_bold', label: 'Link de Pago', example: 'https://drip-zone.online', description: 'Enlace Pago' }
|
||||
]),
|
||||
updatedAt: new Date().toISOString()
|
||||
},
|
||||
{
|
||||
id: 'customer_deposit_confirmed',
|
||||
title: 'Confirmación de Anticipo Bold al Cliente',
|
||||
description: 'Notificación enviada al cliente por WhatsApp cuando su pago de anticipo de separación es acreditado por Bold.',
|
||||
title: 'Confirmación de Anticipo al Cliente',
|
||||
description: 'Notificación enviada al cliente por WhatsApp cuando su pago de anticipo de separación es acreditado con éxito.',
|
||||
category: 'customer_sales',
|
||||
channel: 'whatsapp',
|
||||
isActive: true,
|
||||
content: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* a través de Bold.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
|
||||
content: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* en línea.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
|
||||
availableVariables: JSON.stringify([
|
||||
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre de la tienda' },
|
||||
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre del comprador' },
|
||||
|
||||
@ -500,14 +500,14 @@ export default function CheckoutPage() {
|
||||
className="w-full bg-gradient-to-r from-purple-600 to-indigo-600 hover:from-purple-500 hover:to-indigo-500 text-white font-black text-xs py-3 px-4 rounded-xl flex items-center justify-center gap-2 shadow-lg transition-all"
|
||||
>
|
||||
<CreditCard className="w-4 h-4" />
|
||||
<span>Pagar $10.000 con Bold (PSE / Tarjetas / Bre-B)</span>
|
||||
<span>Pagar $10.000 con PSE, Tarjetas, Nequi o Bre-B</span>
|
||||
<ExternalLink className="w-3.5 h-3.5" />
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="pt-2 border-t border-white/10 flex justify-between items-center text-xs">
|
||||
<span className="text-neutral-400">🤝 Saldo restante contraentrega (efectivo o mediante Bold):</span>
|
||||
<span className="text-neutral-400">🤝 Saldo restante contraentrega (en efectivo o transferencia):</span>
|
||||
<span className="text-emerald-400 font-bold font-mono">
|
||||
{formatCOP(Math.max(0, orderCompleted.totalAmount - (orderCompleted.depositAmount || 10000)))} COP
|
||||
</span>
|
||||
@ -581,7 +581,7 @@ export default function CheckoutPage() {
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-neutral-300 leading-relaxed">
|
||||
Tu calzado y talla seleccionada están reservados. Completa tu dirección y confirma el anticipo de <strong className="text-emerald-400">$10.000 por Bold</strong> (PSE o tarjetas) para asegurar tu despacho hoy. El saldo restante lo pagas <strong>contraentrega (en efectivo o mediante Bold)</strong> al recibir en tu puerta.
|
||||
Tu calzado y talla seleccionada están reservados. Completa tu dirección y confirma el anticipo de <strong className="text-emerald-400">$10.000 en línea</strong> (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B) para asegurar tu despacho hoy. El saldo restante lo pagas <strong>contraentrega (en efectivo o transferencia)</strong> al recibir en tu puerta.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -727,7 +727,7 @@ export default function CheckoutPage() {
|
||||
className="inline-flex items-center gap-1.5 bg-indigo-600 hover:bg-indigo-500 text-white text-xs font-bold px-3 py-1.5 rounded-lg shadow-sm"
|
||||
>
|
||||
<ExternalLink className="w-3.5 h-3.5" />
|
||||
<span>Abrir Link de Pago Bold.co</span>
|
||||
<span>Pagar en Línea (PSE, Tarjetas o Nequi)</span>
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@ -723,12 +723,12 @@ export default function MisPedidosPage() {
|
||||
{order.depositPaid || order.status !== 'pending' ? (
|
||||
<span className="text-emerald-400 flex items-center gap-1 font-bold">
|
||||
<CheckCircle2 className="w-3.5 h-3.5" />
|
||||
Pago de anticipo aprobado en pasarela Bold
|
||||
Pago de anticipo aprobado y confirmado
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-amber-400 flex items-center gap-1">
|
||||
<Clock className="w-3.5 h-3.5" />
|
||||
Pendiente de confirmación en Bold
|
||||
Pendiente de confirmación de pago
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@ -229,7 +229,10 @@ export const ProductModal: React.FC<ProductModalProps> = ({
|
||||
¡Pago Contraentrega en {selectedCity.name}!
|
||||
</p>
|
||||
<p className="text-neutral-300 text-[11px] leading-relaxed">
|
||||
Separas con solo <strong className="text-white">{formatCOP(separation.depositAmount)}</strong> y pagas los <strong className="text-white">{formatCOP(separation.balanceDue)}</strong> al mensajero cuando llegue a tu casa.
|
||||
Separas con solo <strong className="text-white">{formatCOP(separation.depositAmount)}</strong> y pagas los <strong className="text-white">{formatCOP(separation.balanceDue)}</strong> en efectivo o transferencia al mensajero cuando llegue a tu casa.
|
||||
</p>
|
||||
<p className="text-[10px] text-purple-300 font-medium pt-0.5">
|
||||
💳 Anticipo: PSE • Tarjetas Débito/Crédito • Nequi • Daviplata • QR Bre-B
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -123,23 +123,23 @@ export const INITIAL_CITIES: City[] = [
|
||||
export const INITIAL_PAYMENT_METHODS: PaymentMethod[] = [
|
||||
{
|
||||
id: 'pay-bold-link',
|
||||
name: 'Bold.co Oficial • PSE, Tarjetas Débito/Crédito o QR',
|
||||
name: 'Pago en Línea • PSE, Tarjetas Débito/Crédito o QR Bre-B',
|
||||
type: 'bold',
|
||||
description: 'Paga de forma rápida y 100% segura con la pasarela oficial Bold.co. Acepta PSE, Tarjetas Visa/Mastercard y QR interoperable.',
|
||||
description: 'Paga de forma rápida y 100% segura. Acepta transferencias PSE (todos los bancos), Tarjetas Visa/Mastercard/Amex, Nequi, Daviplata y QR Bre-B interoperable.',
|
||||
requiresDeposit: false,
|
||||
depositAmount: 0,
|
||||
boldPaymentLink: 'https://drip-zone.online',
|
||||
accountInfo: 'Pasarela Oficial Bold.co (PSE / Tarjetas / QR Bre-B)',
|
||||
accountInfo: 'PSE (cualquier banco), Tarjetas Débito/Crédito, QR Bre-B, Nequi y Daviplata',
|
||||
isActive: true,
|
||||
},
|
||||
{
|
||||
id: 'pay-deposit-10k',
|
||||
name: 'Separación con $10.000 por Bold + Saldo Contraentrega',
|
||||
name: 'Separación con $10.000 (PSE / Tarjeta / Nequi) + Saldo Contraentrega',
|
||||
type: 'contraentrega',
|
||||
description: 'Asegura tu talla con solo $10.000 COP únicamente a través de Bold (PSE, tarjetas o Bre-B) y cancelas el saldo restante en efectivo o mediante Bold al recibir en tu puerta.',
|
||||
description: 'Asegura tu talla con solo $10.000 COP en línea (PSE, tarjetas débito/crédito, Nequi o QR Bre-B) y cancelas el saldo restante en efectivo o transferencia al recibir en tu puerta.',
|
||||
requiresDeposit: true,
|
||||
depositAmount: 10000,
|
||||
accountInfo: 'Pasarela Oficial Bold.co (PSE / Tarjetas)',
|
||||
accountInfo: 'PSE, Tarjetas Débito/Crédito (Visa, Mastercard), QR Bre-B interoperable',
|
||||
boldPaymentLink: 'https://drip-zone.online',
|
||||
isActive: true,
|
||||
},
|
||||
@ -147,7 +147,7 @@ export const INITIAL_PAYMENT_METHODS: PaymentMethod[] = [
|
||||
id: 'pay-cod-full',
|
||||
name: 'Pago 100% Contraentrega (Cali y Alrededores)',
|
||||
type: 'contraentrega',
|
||||
description: 'Pagas el 100% del valor en efectivo o mediante Bold al recibir en tu puerta (válido para entregas urbanas en 24 horas).',
|
||||
description: 'Pagas el 100% del valor en efectivo o transferencia al recibir en tu puerta (válido para entregas urbanas en 24 horas).',
|
||||
requiresDeposit: false,
|
||||
depositAmount: 0,
|
||||
isActive: true,
|
||||
@ -156,10 +156,10 @@ export const INITIAL_PAYMENT_METHODS: PaymentMethod[] = [
|
||||
id: 'pay-nequi-full',
|
||||
name: 'Transferencia Anticipada',
|
||||
type: 'bold',
|
||||
description: 'Paga anticipadamente en línea a través de Bold.',
|
||||
description: 'Paga anticipadamente en línea con PSE, Tarjeta de Crédito/Débito o Nequi.',
|
||||
requiresDeposit: false,
|
||||
depositAmount: 0,
|
||||
accountInfo: 'Pasarela Oficial Bold.co',
|
||||
accountInfo: 'PSE, Tarjetas y transferencias bancarias',
|
||||
isActive: false,
|
||||
},
|
||||
];
|
||||
|
||||
@ -263,7 +263,7 @@ Estamos alistando tu paquete. Te enviaremos el número de guía o notificación
|
||||
📍 *Dirección de Entrega:* {cliente_direccion}
|
||||
🏙️ *Ciudad:* {cliente_ciudad}
|
||||
💵 *Saldo a Pagar Contraentrega:* *{saldo_contraentrega}*
|
||||
💳 *Medio de Pago:* {metodo_pago} (Efectivo o mediante Bold al recibir)
|
||||
💳 *Medio de Pago:* {metodo_pago} (Efectivo o transferencia al recibir)
|
||||
|
||||
Por favor estar atento a la portería o celular. ¡Gracias por tu compra en {tienda_nombre}! 🔥`,
|
||||
defaultContent: `👋 ¡Hola *{cliente_nombre}*!
|
||||
@ -273,7 +273,7 @@ Por favor estar atento a la portería o celular. ¡Gracias por tu compra en {tie
|
||||
📍 *Dirección de Entrega:* {cliente_direccion}
|
||||
🏙️ *Ciudad:* {cliente_ciudad}
|
||||
💵 *Saldo a Pagar Contraentrega:* *{saldo_contraentrega}*
|
||||
💳 *Medio de Pago:* {metodo_pago} (Efectivo o mediante Bold al recibir)
|
||||
💳 *Medio de Pago:* {metodo_pago} (Efectivo o transferencia al recibir)
|
||||
|
||||
Por favor estar atento a la portería o celular. ¡Gracias por tu compra en {tienda_nombre}! 🔥`,
|
||||
availableVariables: [
|
||||
@ -532,7 +532,7 @@ Hola {usuario_nombre}! Tu código de seguridad para validar tu cuenta es:
|
||||
Hola {cliente_nombre}, para procesar tu orden #{orden_id} hacia {cliente_ciudad}, se requiere la separación del flete por valor de *{costo_envio}* (100% descontable al recibir en tu puerta).
|
||||
|
||||
💡 Motivo: {motivo_garantia}
|
||||
💳 Puedes realizar el pago en línea de forma 100% segura por Bold: {link_pago_bold}
|
||||
💳 Puedes realizar el pago en línea de forma 100% segura (PSE, Tarjetas, Nequi o Bre-B): {link_pago_bold}
|
||||
|
||||
¡Una vez confirmado tu comprobante, tu despacho saldrá de inmediato!`,
|
||||
defaultContent: `🛡️ *Garantía de Despacho Requerida - {tienda_nombre}*
|
||||
@ -540,7 +540,7 @@ Hola {cliente_nombre}, para procesar tu orden #{orden_id} hacia {cliente_ciudad}
|
||||
Hola {cliente_nombre}, para procesar tu orden #{orden_id} hacia {cliente_ciudad}, se requiere la separación del flete por valor de *{costo_envio}* (100% descontable al recibir en tu puerta).
|
||||
|
||||
💡 Motivo: {motivo_garantia}
|
||||
💳 Puedes realizar el pago en línea de forma 100% segura por Bold: {link_pago_bold}
|
||||
💳 Puedes realizar el pago en línea de forma 100% segura (PSE, Tarjetas, Nequi o Bre-B): {link_pago_bold}
|
||||
|
||||
¡Una vez confirmado tu comprobante, tu despacho saldrá de inmediato!`,
|
||||
availableVariables: [
|
||||
@ -562,14 +562,14 @@ Hola {cliente_nombre}, para procesar tu orden #{orden_id} hacia {cliente_ciudad}
|
||||
isActive: true,
|
||||
content: `📋 *Políticas de Compra y Entrega - {tienda_nombre}*
|
||||
|
||||
✅ *Pago Contraentrega:* Separas tu pedido con solo $10.000 por Bold oficial y pagas el saldo al recibir en tu domicilio (en efectivo o mediante Bold).
|
||||
✅ *Pago Contraentrega:* Separas tu pedido con solo $10.000 en línea (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B) y pagas el saldo al recibir en tu domicilio (en efectivo o transferencia).
|
||||
👟 *Garantía y Cambio de Talla:* Garantía directa de fábrica. Cambio de talla garantizado según la ciudad de destino (cobertura local con mensajero en Cali y logística de reenvío en otras ciudades).
|
||||
🚚 *Envíos Nacionales:* Tiempos de entrega y valor del flete varían de acuerdo a tu ciudad.
|
||||
|
||||
Cualquier duda o asesoría adicional, ¡estamos para servirte con todo el gusto!`,
|
||||
defaultContent: `📋 *Políticas de Compra y Entrega - {tienda_nombre}*
|
||||
|
||||
✅ *Pago Contraentrega:* Separas tu pedido con solo $10.000 por Bold oficial y pagas el saldo al recibir en tu domicilio (en efectivo o mediante Bold).
|
||||
✅ *Pago Contraentrega:* Separas tu pedido con solo $10.000 en línea (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B) y pagas el saldo al recibir en tu domicilio (en efectivo o transferencia).
|
||||
👟 *Garantía y Cambio de Talla:* Garantía directa de fábrica. Cambio de talla garantizado según la ciudad de destino (cobertura local con mensajero en Cali y logística de reenvío en otras ciudades).
|
||||
🚚 *Envíos Nacionales:* Tiempos de entrega y valor del flete varían de acuerdo a tu ciudad.
|
||||
|
||||
@ -598,13 +598,13 @@ Cualquier duda o asesoría adicional, ¡estamos para servirte con todo el gusto!
|
||||
},
|
||||
{
|
||||
id: 'customer_deposit_confirmed',
|
||||
title: 'Confirmación de Anticipo Bold al Cliente',
|
||||
description: 'Notificación enviada al cliente por WhatsApp cuando su pago de anticipo de separación es acreditado por Bold.',
|
||||
title: 'Confirmación de Anticipo al Cliente',
|
||||
description: 'Notificación enviada al cliente por WhatsApp cuando su pago de anticipo de separación es acreditado con éxito.',
|
||||
category: 'customer_sales',
|
||||
channel: 'whatsapp',
|
||||
isActive: true,
|
||||
content: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* a través de Bold.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
|
||||
defaultContent: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* a través de Bold.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
|
||||
content: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* en línea.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
|
||||
defaultContent: `🎉 *¡Tu anticipo de separación fue confirmado con éxito!*\n\nHola *{cliente_nombre}*, recibimos correctamente tu pago de *{valor_anticipo}* en línea.\n\n📦 Tu orden *#{orden_id}* ya se encuentra en alistamiento y empaque para despacho a *{cliente_ciudad}*.\n🤝 *Saldo restante a pagar contraentrega:* *{saldo_contraentrega}* al recibir en tu puerta.\n\nPuedes consultar el estado de tu pedido en cualquier momento desde la app oficial de {tienda_nombre}.\n\n¡Muchas gracias por tu compra en {tienda_nombre}!`,
|
||||
availableVariables: [
|
||||
{ key: 'tienda_nombre', label: 'Nombre Tienda', example: 'DripZone', description: 'Nombre de la tienda' },
|
||||
{ key: 'cliente_nombre', label: 'Nombre Cliente', example: 'Cliente DripZone', description: 'Nombre del comprador' },
|
||||
@ -633,7 +633,7 @@ Cualquier duda o asesoría adicional, ¡estamos para servirte con todo el gusto!
|
||||
🛡️ Garantía de fábrica y cambio de talla (sujeto a políticas de cobertura según ciudad)
|
||||
|
||||
🛒 ¿CÓMO REALIZAR TU PEDIDO Y PAGO SEGURO?
|
||||
La atención comercial y asesoría es por este WhatsApp. Para garantizar tu despacho con factura y seguimiento en línea, el pedido y pago del anticipo ($10.000 únicamente por Bold oficial) se procesan a través de nuestra plataforma:
|
||||
La atención comercial y asesoría es por este WhatsApp. Para garantizar tu despacho con factura y seguimiento en línea, el pedido y pago del anticipo ($10.000 con PSE, Tarjetas Débito/Crédito, Nequi o QR Bre-B) se procesan a través de nuestra plataforma:
|
||||
👉 Enlace directo de compra: {enlace_compra}
|
||||
📱 O descarga la App Móvil oficial: {enlace_app}
|
||||
|
||||
@ -648,7 +648,7 @@ La atención comercial y asesoría es por este WhatsApp. Para garantizar tu desp
|
||||
🛡️ Garantía de fábrica y cambio de talla (sujeto a políticas de cobertura según ciudad)
|
||||
|
||||
🛒 ¿CÓMO REALIZAR TU PEDIDO Y PAGO SEGURO?
|
||||
La atención comercial y asesoría es por este WhatsApp. Para garantizar tu despacho con factura y seguimiento en línea, el pedido y pago del anticipo ($10.000 únicamente por Bold oficial) se procesan a través de nuestra plataforma:
|
||||
La atención comercial y asesoría es por este WhatsApp. Para garantizar tu despacho con factura y seguimiento en línea, el pedido y pago del anticipo ($10.000 con PSE, Tarjetas Débito/Crédito, Nequi o QR Bre-B) se procesan a través de nuestra plataforma:
|
||||
👉 Enlace directo de compra: {enlace_compra}
|
||||
📱 O descarga la App Móvil oficial: {enlace_app}
|
||||
|
||||
@ -676,7 +676,7 @@ La atención comercial y asesoría es por este WhatsApp. Para garantizar tu desp
|
||||
Para confirmar tu pedido de las *{producto_nombre}* en talla *{talla}* (EUR) y despacharlo con total garantía y factura:
|
||||
|
||||
💎 *Precio Oficial:* {precio} COP
|
||||
🚚 *Pago Contraentrega:* Separas con solo *$10.000* a través de Bold oficial (PSE o tarjetas) y el saldo restante lo cancelas contraentrega (en efectivo o mediante Bold) al recibir en tu puerta.
|
||||
🚚 *Pago Contraentrega:* Separas con solo *$10.000* en línea (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B) y el saldo restante lo cancelas contraentrega (en efectivo o transferencia) al recibir en tu puerta.
|
||||
📦 *Envío:* El valor del flete y tiempos de entrega varían según tu ciudad de destino.
|
||||
🛡️ *Garantía:* Garantía directa y cambio de talla según políticas de cobertura en tu ciudad.
|
||||
|
||||
@ -693,7 +693,7 @@ Cualquier inquietud con tu dirección o el pago, ¡aquí estamos para ayudarte!`
|
||||
Para confirmar tu pedido de las *{producto_nombre}* en talla *{talla}* (EUR) y despacharlo con total garantía y factura:
|
||||
|
||||
💎 *Precio Oficial:* {precio} COP
|
||||
🚚 *Pago Contraentrega:* Separas con solo *$10.000* a través de Bold oficial (PSE o tarjetas) y el saldo restante lo cancelas contraentrega (en efectivo o mediante Bold) al recibir en tu puerta.
|
||||
🚚 *Pago Contraentrega:* Separas con solo *$10.000* en línea (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B) y el saldo restante lo cancelas contraentrega (en efectivo o transferencia) al recibir en tu puerta.
|
||||
📦 *Envío:* El valor del flete y tiempos de entrega varían según tu ciudad de destino.
|
||||
🛡️ *Garantía:* Garantía directa y cambio de talla según políticas de cobertura en tu ciudad.
|
||||
|
||||
@ -729,7 +729,7 @@ Cualquier inquietud con tu dirección o el pago, ¡aquí estamos para ayudarte!`
|
||||
• 💎 *Materiales Seleccionados:* Construcción de alta resistencia, acabados prémium y silueta impecable.
|
||||
• ☁️ *Máximo Confort:* Plantilla ergonómica acolchada para máxima suavidad y comodidad al caminar.
|
||||
• 🚚 *Envíos a Nivel Nacional:* Despachos a toda Colombia (el valor del envío y tiempos de entrega varían según la ciudad de destino).
|
||||
• 💵 *Pago Contraentrega:* Separas tu pedido con anticipo por Bold oficial y cancelas el saldo restante en efectivo o con Bold al recibir en tu puerta.
|
||||
• 💵 *Pago Contraentrega:* Separas tu pedido con solo $10.000 de anticipo (PSE, Tarjeta o Nequi) y cancelas el saldo restante en efectivo o transferencia al recibir en tu puerta.
|
||||
• 🛡️ *Garantía Directa:* Respaldo de fábrica y cambio de talla (sujeto a cobertura y políticas según tu ciudad).
|
||||
|
||||
⚠️ *Disponibilidad:* Pocas unidades por talla en inventario nacional. ¡Asegura tu par ahora!`,
|
||||
@ -739,7 +739,7 @@ Cualquier inquietud con tu dirección o el pago, ¡aquí estamos para ayudarte!`
|
||||
• 💎 *Materiales Seleccionados:* Construcción de alta resistencia, acabados prémium y silueta impecable.
|
||||
• ☁️ *Máximo Confort:* Plantilla ergonómica acolchada para máxima suavidad y comodidad al caminar.
|
||||
• 🚚 *Envíos a Nivel Nacional:* Despachos a toda Colombia (el valor del envío y tiempos de entrega varían según la ciudad de destino).
|
||||
• 💵 *Pago Contraentrega:* Separas tu pedido con anticipo por Bold oficial y cancelas el saldo restante en efectivo o con Bold al recibir en tu puerta.
|
||||
• 💵 *Pago Contraentrega:* Separas tu pedido con solo $10.000 de anticipo (PSE, Tarjeta o Nequi) y cancelas el saldo restante en efectivo o transferencia al recibir en tu puerta.
|
||||
• 🛡️ *Garantía Directa:* Respaldo de fábrica y cambio de talla (sujeto a cobertura y políticas según tu ciudad).
|
||||
|
||||
⚠️ *Disponibilidad:* Pocas unidades por talla en inventario nacional. ¡Asegura tu par ahora!`,
|
||||
@ -761,12 +761,12 @@ Cualquier inquietud con tu dirección o el pago, ¡aquí estamos para ayudarte!`
|
||||
━━━━━━━━━━━━━━━━━━━━━━
|
||||
📏 *Tallas Disponibles:* {tallas} (EUR)
|
||||
💵 *Precio Oficial:* *{precio} COP*
|
||||
🚚 *Pago Contraentrega:* Pagas un anticipo de *$10.000* por Bold oficial para despacho garantizado y el saldo restante al recibir (en efectivo o mediante Bold).
|
||||
🚚 *Pago Contraentrega:* Pagas un anticipo de *$10.000* en línea (PSE, Tarjeta o Nequi) para despacho garantizado y el saldo restante al recibir (en efectivo o transferencia).
|
||||
📦 *Envío:* El costo del flete depende de la ciudad de destino.
|
||||
🛡️ *Garantía:* Garantía de fábrica y cambio de talla según políticas de cobertura en tu ciudad.
|
||||
|
||||
🛒 *¿Cómo procesar tu pedido y pago seguro?*
|
||||
Para tu seguridad, asignación de factura y reserva de tu talla, el pedido y pago del anticipo ($10.000 únicamente por Bold / PSE / Tarjetas) se procesan a través de nuestra plataforma:
|
||||
Para tu seguridad, asignación de factura y reserva de tu talla, el pedido y pago del anticipo ($10.000 con PSE, Tarjetas Débito/Crédito, Nequi o QR Bre-B) se procesan a través de nuestra plataforma:
|
||||
|
||||
👉 *Enlace directo de compra:* {enlace_checkout}
|
||||
📱 *O pide en nuestra App Móvil:* {enlace_app}
|
||||
@ -776,12 +776,12 @@ Diligencia tus datos de envío en el enlace y hoy mismo programamos tu despacho.
|
||||
━━━━━━━━━━━━━━━━━━━━━━
|
||||
📏 *Tallas Disponibles:* {tallas} (EUR)
|
||||
💵 *Precio Oficial:* *{precio} COP*
|
||||
🚚 *Pago Contraentrega:* Pagas un anticipo de *$10.000* por Bold oficial para despacho garantizado y el saldo restante al recibir (en efectivo o mediante Bold).
|
||||
🚚 *Pago Contraentrega:* Pagas un anticipo de *$10.000* en línea (PSE, Tarjeta o Nequi) para despacho garantizado y el saldo restante al recibir (en efectivo o transferencia).
|
||||
📦 *Envío:* El costo del flete depende de la ciudad de destino.
|
||||
🛡️ *Garantía:* Garantía de fábrica y cambio de talla según políticas de cobertura en tu ciudad.
|
||||
|
||||
🛒 *¿Cómo procesar tu pedido y pago seguro?*
|
||||
Para tu seguridad, asignación de factura y reserva de tu talla, el pedido y pago del anticipo ($10.000 únicamente por Bold / PSE / Tarjetas) se procesan a través de nuestra plataforma:
|
||||
Para tu seguridad, asignación de factura y reserva de tu talla, el pedido y pago del anticipo ($10.000 con PSE, Tarjetas Débito/Crédito, Nequi o QR Bre-B) se procesan a través de nuestra plataforma:
|
||||
|
||||
👉 *Enlace directo de compra:* {enlace_checkout}
|
||||
📱 *O pide en nuestra App Móvil:* {enlace_app}
|
||||
@ -814,7 +814,7 @@ Tu tienda oficial de sneakers, zapatillas y streetwear en tallas EUR.
|
||||
💡 *¿Cómo funciona tu compra?*
|
||||
1️⃣ Elige tu modelo y talla en el catálogo.
|
||||
2️⃣ Los pedidos y anticipos se procesan en la web o app para asegurar tu factura y despacho inmediato.
|
||||
3️⃣ Realizas un anticipo de *$10.000* únicamente por Bold oficial (PSE o tarjetas) y cancelas el saldo restante *contraentrega* al recibir en tu puerta (en efectivo o mediante Bold).
|
||||
3️⃣ Realizas un anticipo de *$10.000* en línea (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B) y cancelas el saldo restante *contraentrega* al recibir en tu puerta (en efectivo o transferencia).
|
||||
4️⃣ Envíos a todo el país con tiempos y flete según tu ciudad de destino.
|
||||
5️⃣ Garantía directa y cambio de talla según políticas y cobertura de tu ciudad.
|
||||
|
||||
@ -831,7 +831,7 @@ Tu tienda oficial de sneakers, zapatillas y streetwear en tallas EUR.
|
||||
💡 *¿Cómo funciona tu compra?*
|
||||
1️⃣ Elige tu modelo y talla en el catálogo.
|
||||
2️⃣ Los pedidos y anticipos se procesan en la web o app para asegurar tu factura y despacho inmediato.
|
||||
3️⃣ Realizas un anticipo de *$10.000* únicamente por Bold oficial (PSE o tarjetas) y cancelas el saldo restante *contraentrega* al recibir en tu puerta (en efectivo o mediante Bold).
|
||||
3️⃣ Realizas un anticipo de *$10.000* en línea (PSE, Tarjetas Débito/Crédito, Nequi o Bre-B) y cancelas el saldo restante *contraentrega* al recibir en tu puerta (en efectivo o transferencia).
|
||||
4️⃣ Envíos a todo el país con tiempos y flete según tu ciudad de destino.
|
||||
5️⃣ Garantía directa y cambio de talla según políticas y cobertura de tu ciudad.
|
||||
|
||||
@ -856,7 +856,7 @@ Tu tienda oficial de sneakers, zapatillas y streetwear en tallas EUR.
|
||||
• *Cali y Área Metropolitana:* Despacho express en 24 horas hábiles con mensajería local.
|
||||
• *Otras Ciudades Principales e Intermedias:* De 2 a 4 días hábiles mediante transportadora nacional con seguimiento en línea.
|
||||
|
||||
💵 *Forma de Pago:* Separación con $10.000 por Bold oficial y saldo restante contraentrega en efectivo o mediante Bold al recibir.
|
||||
💵 *Forma de Pago:* Separación con $10.000 en línea (PSE, Tarjeta o Nequi) y saldo restante contraentrega en efectivo o transferencia al recibir.
|
||||
|
||||
¡Consulta la tarifa y tiempo exacto seleccionando tu ciudad en el checkout!`,
|
||||
defaultContent: `🚚 *Información de Envíos y Despachos - {tienda_nombre}*
|
||||
@ -865,7 +865,7 @@ Tu tienda oficial de sneakers, zapatillas y streetwear en tallas EUR.
|
||||
• *Cali y Área Metropolitana:* Despacho express en 24 horas hábiles con mensajería local.
|
||||
• *Otras Ciudades Principales e Intermedias:* De 2 a 4 días hábiles mediante transportadora nacional con seguimiento en línea.
|
||||
|
||||
💵 *Forma de Pago:* Separación con $10.000 por Bold oficial y saldo restante contraentrega en efectivo o mediante Bold al recibir.
|
||||
💵 *Forma de Pago:* Separación con $10.000 en línea (PSE, Tarjeta o Nequi) y saldo restante contraentrega en efectivo o transferencia al recibir.
|
||||
|
||||
¡Consulta la tarifa y tiempo exacto seleccionando tu ciudad en el checkout!`,
|
||||
availableVariables: [
|
||||
|
||||
137
scripts/deploy_payment_methods_apk.py
Normal file
137
scripts/deploy_payment_methods_apk.py
Normal file
@ -0,0 +1,137 @@
|
||||
import paramiko
|
||||
import os
|
||||
import urllib.request
|
||||
import json
|
||||
import ssl
|
||||
import sys
|
||||
import io
|
||||
import time
|
||||
import subprocess
|
||||
|
||||
if sys.platform == 'win32':
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
||||
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
|
||||
|
||||
HOST = "161.97.93.156"
|
||||
USER = "carlos"
|
||||
PASSWORD = "Innova1978+*?"
|
||||
REMOTE_BASE = "/home/carlos/apps/dripzone-app"
|
||||
LOCAL_APK = r"c:\Users\Carlos\dev\almeira-web\dripzone-app\public\DripZone.apk"
|
||||
REMOTE_APK = f"{REMOTE_BASE}/public/DripZone.apk"
|
||||
|
||||
EVOLUTION_API_URL = "https://evolution.almeira.com.co"
|
||||
ALMEIRA_INSTANCE_NAME = "AutomataAlmeira"
|
||||
ALMEIRA_API_KEY = "EE49029EEB85-4568-8F81-C9FDFC6E2943"
|
||||
TARGET_PHONE = "573167455877"
|
||||
APK_URL = "https://drip-zone.online/DripZone.apk"
|
||||
|
||||
ctx = ssl.create_default_context()
|
||||
ctx.check_hostname = False
|
||||
ctx.verify_mode = ssl.CERT_NONE
|
||||
|
||||
def main():
|
||||
print("[1/5] Verificando APK local...")
|
||||
if not os.path.exists(LOCAL_APK):
|
||||
print(f" [ERROR] El archivo {LOCAL_APK} no existe.")
|
||||
sys.exit(1)
|
||||
|
||||
size_mb = os.path.getsize(LOCAL_APK) / (1024 * 1024)
|
||||
print(f" -> APK local verificado: {LOCAL_APK} ({size_mb:.2f} MB)")
|
||||
|
||||
print("[2/5] Guardando cambios y pusheando a Gitea...")
|
||||
try:
|
||||
subprocess.run(["git", "add", "."], cwd=r"c:\Users\Carlos\dev\almeira-web", check=False)
|
||||
msg = "feat: sustitucion de marca Bold por medios de pago especificos (PSE, Tarjetas, Nequi, Daviplata y QR Bre-B)"
|
||||
subprocess.run(["git", "commit", "-m", msg], cwd=r"c:\Users\Carlos\dev\almeira-web", check=False)
|
||||
push_res = subprocess.run(["git", "push", "origin", "main"], cwd=r"c:\Users\Carlos\dev\almeira-web", capture_output=True, text=True)
|
||||
print(" -> Git push:", push_res.stdout.strip() or push_res.stderr.strip())
|
||||
except Exception as e:
|
||||
print(" [WARN Git]:", e)
|
||||
|
||||
print("[3/5] Subiendo APK a VPS 161.97.93.156 vía SFTP...")
|
||||
ssh = paramiko.SSHClient()
|
||||
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
ssh.connect(hostname=HOST, username=USER, password=PASSWORD, timeout=30)
|
||||
sftp = ssh.open_sftp()
|
||||
|
||||
try:
|
||||
sftp.mkdir(f"{REMOTE_BASE}/public")
|
||||
except:
|
||||
pass
|
||||
|
||||
def progress_cb(transferred, total):
|
||||
pct = (transferred / total) * 100
|
||||
if transferred % (1024 * 1024 * 5) < 32768 or transferred == total:
|
||||
print(f" -> Progreso SFTP: {transferred / (1024*1024):.1f} MB / {total / (1024*1024):.1f} MB ({pct:.0f}%)")
|
||||
|
||||
sftp.put(LOCAL_APK, REMOTE_APK, callback=progress_cb)
|
||||
sftp.close()
|
||||
print(" -> APK subido exitosamente al VPS.")
|
||||
|
||||
print("[4/5] Copiando APK a contenedores Docker...")
|
||||
find_cmd = "docker ps --filter 'name=dripzone' --format '{{.ID}} {{.Names}}'"
|
||||
stdin, stdout, stderr = ssh.exec_command(find_cmd)
|
||||
containers = stdout.read().decode().strip().splitlines()
|
||||
|
||||
for line in containers:
|
||||
if not line.strip():
|
||||
continue
|
||||
cid = line.split()[0]
|
||||
cname = line.split()[1] if len(line.split()) > 1 else cid
|
||||
print(f" -> Copiando a contenedor {cname} ({cid})...")
|
||||
cp_cmd = f"docker cp {REMOTE_APK} {cid}:/app/public/DripZone.apk"
|
||||
ssh.exec_command(cp_cmd)
|
||||
|
||||
ssh.close()
|
||||
print(" -> Despliegue en VPS completado con éxito.")
|
||||
|
||||
print("[5/5] Enviando notificación y APK a WhatsApp de Carlos (+57 316 745 5877)...")
|
||||
text_payload = {
|
||||
"number": TARGET_PHONE,
|
||||
"text": (
|
||||
"✅ *Actualización DripZone: Medios de Pago Claros para el Comprador*\n\n"
|
||||
"En lugar de mencionar únicamente el nombre de la pasarela técnica ('Bold'), ahora se muestran explícitamente los medios de pago que el cliente reconoce y utiliza:\n\n"
|
||||
"1. 💳 *Medios de Pago Destacados:* PSE (todos los bancos de Colombia), Tarjetas Débito y Crédito (Visa, Mastercard, Amex), Nequi, Daviplata y Código QR Bre-B interoperable.\n"
|
||||
"2. 📱 *Ficha de Producto y Carrito:* Se incorporó el badge de medios aceptados para anticipo de separación ($10.000) y la indicación de saldo contraentrega en efectivo o transferencia al recibir.\n"
|
||||
"3. ⚡ *Checkout y Verificación de Pedido:* Botones y textos actualizados ('Pagar con PSE, Tarjeta o Nequi') para máxima conversión y confianza del usuario.\n"
|
||||
"4. 💬 *Plantillas de WhatsApp Sincronizadas:* Todas las plantillas de catálogo, bot y asesor actualizadas en Appwrite y la app móvil.\n\n"
|
||||
"📲 *Enlace directo de descarga APK:*\n"
|
||||
f"{APK_URL}"
|
||||
)
|
||||
}
|
||||
|
||||
req_text = urllib.request.Request(
|
||||
f"{EVOLUTION_API_URL}/message/sendText/{ALMEIRA_INSTANCE_NAME}",
|
||||
data=json.dumps(text_payload).encode('utf-8'),
|
||||
headers={"apikey": ALMEIRA_API_KEY, "Content-Type": "application/json"}
|
||||
)
|
||||
try:
|
||||
with urllib.request.urlopen(req_text, context=ctx, timeout=15) as resp:
|
||||
print(f" -> Mensaje de texto enviado a WhatsApp (Status: {resp.status})")
|
||||
except Exception as e:
|
||||
print(" [WARN WhatsApp Text]:", e)
|
||||
|
||||
# Enviar documento APK
|
||||
media_payload = {
|
||||
"number": TARGET_PHONE,
|
||||
"mediatype": "document",
|
||||
"mimetype": "application/vnd.android.package-archive",
|
||||
"fileName": "DripZone-v2.7-Medios-Pago.apk",
|
||||
"caption": "📲 *DripZone Android v2.7 - Medios de Pago Visibles (PSE, Tarjetas, Nequi, Bre-B)*",
|
||||
"media": APK_URL
|
||||
}
|
||||
req_media = urllib.request.Request(
|
||||
f"{EVOLUTION_API_URL}/message/sendMedia/{ALMEIRA_INSTANCE_NAME}",
|
||||
data=json.dumps(media_payload).encode('utf-8'),
|
||||
headers={"apikey": ALMEIRA_API_KEY, "Content-Type": "application/json"}
|
||||
)
|
||||
try:
|
||||
with urllib.request.urlopen(req_media, context=ctx, timeout=60) as resp:
|
||||
print(f" -> Archivo APK adjunto enviado a WhatsApp (Status: {resp.status})")
|
||||
except Exception as e:
|
||||
print(" [WARN WhatsApp Document]:", e)
|
||||
|
||||
print("\n🎉 ¡DESPLIEGUE Y ENVÍO A WHATSAPP COMPLETADOS!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in New Issue
Block a user