<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alvaro Ayala C</title>
    <description>The latest articles on DEV Community by Alvaro Ayala C (@alvaro_ayalac_1d7c2734b4).</description>
    <link>https://dev.to/alvaro_ayalac_1d7c2734b4</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3851924%2Ff1b215f4-74f4-47d9-b88b-3f3a6fb35305.jpg</url>
      <title>DEV Community: Alvaro Ayala C</title>
      <link>https://dev.to/alvaro_ayalac_1d7c2734b4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alvaro_ayalac_1d7c2734b4"/>
    <language>en</language>
    <item>
      <title>Cómo crear un sistema de pago por minuto en PHP (caso real aplicado a streaming) con wordpress</title>
      <dc:creator>Alvaro Ayala C</dc:creator>
      <pubDate>Mon, 30 Mar 2026 16:24:00 +0000</pubDate>
      <link>https://dev.to/alvaro_ayalac_1d7c2734b4/como-crear-un-sistema-de-pago-por-minuto-en-php-caso-real-aplicado-a-streaming-con-wordpress-2lg1</link>
      <guid>https://dev.to/alvaro_ayalac_1d7c2734b4/como-crear-un-sistema-de-pago-por-minuto-en-php-caso-real-aplicado-a-streaming-con-wordpress-2lg1</guid>
      <description>&lt;p&gt;Uno de los modelos de monetización más utilizados en plataformas de streaming es el pago por minuto.&lt;/p&gt;

&lt;p&gt;En este artículo te voy a mostrar cómo implementar este sistema usando PHP dentro de WordPress, basado en un caso real donde se desarrolló una plataforma de transmisión en vivo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Qué es un sistema de pago por minuto?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Es un modelo donde:&lt;/p&gt;

&lt;p&gt;El usuario paga mientras consume el contenido&lt;br&gt;
El saldo se descuenta automáticamente cada cierto tiempo&lt;br&gt;
El creador recibe una parte del dinero&lt;/p&gt;

&lt;p&gt;Este sistema es común en plataformas de:&lt;/p&gt;

&lt;p&gt;Streaming en vivo&lt;br&gt;
Consultorías online&lt;br&gt;
Contenido premium&lt;br&gt;
⚙️ Lógica básica del sistema&lt;/p&gt;

&lt;p&gt;La implementación se basa en 3 elementos clave:&lt;/p&gt;

&lt;p&gt;Saldo del usuario&lt;br&gt;
Costo por minuto&lt;br&gt;
Intervalo de descuento automático&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Almacenamiento del saldo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;En WordPress, el saldo se puede guardar usando user_meta:&lt;/p&gt;

&lt;p&gt;add_user_meta($user_id, 'saldo_disponible', 0, true);&lt;/p&gt;

&lt;p&gt;Esto permite manejar un sistema simple sin necesidad de tablas complejas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Descuento automático por minuto&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cada minuto se ejecuta una función que descuenta saldo:&lt;/p&gt;

&lt;p&gt;function descontar_saldo($user_id) {&lt;br&gt;
    $saldo = floatval(get_user_meta($user_id, 'saldo_disponible', true));&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if ($saldo &amp;lt;= 0) return 0;

$nuevo = $saldo - 3000;
update_user_meta($user_id, 'saldo_disponible', $nuevo);

return $nuevo;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ejecución en tiempo real (AJAX)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para ejecutar esto sin recargar la página:&lt;/p&gt;

&lt;p&gt;setInterval(() =&amp;gt; {&lt;br&gt;
  fetch('/wp-admin/admin-ajax.php', {&lt;br&gt;
    method: 'POST',&lt;br&gt;
    body: new URLSearchParams({&lt;br&gt;
      action: 'descuento_minuto'&lt;br&gt;
    })&lt;br&gt;
  });&lt;br&gt;
}, 60000);&lt;/p&gt;

&lt;p&gt;Esto permite descontar saldo automáticamente mientras el usuario está conectado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distribución de ganancias&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;En el caso real:&lt;/p&gt;

&lt;p&gt;Usuario paga: 3000 COP por minuto&lt;br&gt;
Creador recibe: 1500 COP (50%)&lt;br&gt;
function sumar_ganancia_creador($user_id) {&lt;br&gt;
    $saldo = get_user_meta($user_id, 'saldo_disponible', true);&lt;br&gt;
    $nuevo = $saldo + 1500;&lt;br&gt;
    update_user_meta($user_id, 'saldo_disponible', $nuevo);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validación de saldo antes de iniciar&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antes de permitir el acceso:&lt;/p&gt;

&lt;p&gt;function tiene_saldo($user_id) {&lt;br&gt;
    $saldo = get_user_meta($user_id, 'saldo_disponible', true);&lt;br&gt;
    return $saldo &amp;gt;= 3000;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Esto evita accesos sin pago.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aplicación real&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Este tipo de sistema ya se utiliza en plataformas donde los usuarios acceden a contenido en tiempo real con pagos directos, combinando streaming, interacción y monetización.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consideraciones importantes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Validar saldo constantemente&lt;br&gt;
Evitar que el usuario siga conectado sin crédito&lt;br&gt;
Sincronizar frontend y backend&lt;br&gt;
Controlar errores en AJAX&lt;/p&gt;

&lt;p&gt;Implementar un sistema de pago por minuto en PHP es más sencillo de lo que parece si se estructura correctamente.&lt;/p&gt;

&lt;p&gt;Con herramientas nativas de WordPress y un poco de JavaScript, es posible crear modelos de monetización en tiempo real sin depender de servicios externos.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>php</category>
      <category>tutorial</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>How I Built a Live Streaming Platform with PHP, WordPress and WebRTC (Real Case)</title>
      <dc:creator>Alvaro Ayala C</dc:creator>
      <pubDate>Mon, 30 Mar 2026 16:11:49 +0000</pubDate>
      <link>https://dev.to/alvaro_ayalac_1d7c2734b4/how-i-built-a-live-streaming-platform-with-php-wordpress-and-webrtc-real-case-a2h</link>
      <guid>https://dev.to/alvaro_ayalac_1d7c2734b4/how-i-built-a-live-streaming-platform-with-php-wordpress-and-webrtc-real-case-a2h</guid>
      <description>&lt;p&gt;Building a real-time streaming platform is usually associated with complex infrastructures and expensive services.&lt;/p&gt;

&lt;p&gt;However, in this case, I developed a fully functional live streaming system using PHP, WordPress, and WebRTC — all inside a custom plugin.&lt;/p&gt;

&lt;p&gt;This is a real-world implementation, not a theoretical example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Goal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The main idea was to create a platform where:&lt;/p&gt;

&lt;p&gt;Users can watch live streams&lt;br&gt;
Private sessions can be started between users&lt;br&gt;
Real-time chat is available&lt;br&gt;
A pay-per-minute system is implemented&lt;/p&gt;

&lt;p&gt;All without relying on external streaming services.&lt;/p&gt;

&lt;p&gt;⚙️ Tech Stack&lt;br&gt;
Backend: PHP (WordPress plugin)&lt;br&gt;
Database: MySQL ($wpdb)&lt;br&gt;
Streaming: WebRTC (PeerJS)&lt;br&gt;
Frontend: JavaScript + AJAX&lt;br&gt;
&lt;strong&gt;Real-Time Streaming with WebRTC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The core of the system is based on WebRTC using PeerJS.&lt;/p&gt;

&lt;p&gt;The broadcaster (model) shares their camera:&lt;/p&gt;

&lt;p&gt;navigator.mediaDevices.getUserMedia({ video: true, audio: true });&lt;/p&gt;

&lt;p&gt;The viewer connects using a dummy stream to avoid permission prompts:&lt;/p&gt;

&lt;p&gt;function createDummyStream() {&lt;br&gt;
  const canvas = document.createElement('canvas');&lt;br&gt;
  return canvas.captureStream();&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This approach significantly improves UX.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private Sessions Logic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Private sessions are handled via URL parameters:&lt;/p&gt;

&lt;p&gt;/transmision-privada?babe=username&lt;/p&gt;

&lt;p&gt;Flow:&lt;/p&gt;

&lt;p&gt;User selects a model&lt;br&gt;
A direct peer connection is created&lt;br&gt;
The session starts in real time&lt;br&gt;
Disconnection is detected automatically&lt;br&gt;
💸 Pay-Per-Minute System&lt;/p&gt;

&lt;p&gt;One of the most important parts is monetization.&lt;/p&gt;

&lt;p&gt;Users are charged per minute&lt;br&gt;
Balance is updated in real time&lt;br&gt;
Broadcasters receive a percentage&lt;/p&gt;

&lt;p&gt;Example logic:&lt;/p&gt;

&lt;p&gt;function charge_user_per_minute($user_id) {&lt;br&gt;
    $balance = get_user_meta($user_id, 'balance', true);&lt;br&gt;
    return $balance - 3000;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This allows building scalable revenue models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-Time Chat (AJAX)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of using WebSockets, I implemented chat using AJAX polling:&lt;/p&gt;

&lt;p&gt;Messages sent via admin-ajax.php&lt;br&gt;
Fetched every few seconds&lt;br&gt;
Rendered dynamically&lt;/p&gt;

&lt;p&gt;Simple, but effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stream State Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A custom table tracks active streams:&lt;/p&gt;

&lt;p&gt;active_private&lt;br&gt;
active_public&lt;br&gt;
finished&lt;/p&gt;

&lt;p&gt;This allows listing live streams and controlling sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role-Based Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two main roles:&lt;/p&gt;

&lt;p&gt;Broadcasters (models)&lt;br&gt;
Subscribers (users)&lt;/p&gt;

&lt;p&gt;Managed directly through WordPress roles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This architecture is already being used in production in a live webcam streaming platform with direct payment system, where all these concepts are applied together.&lt;/p&gt;

&lt;p&gt;It combines real-time video, chat, and monetization in a single environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building a streaming platform with PHP and WordPress is absolutely possible if you combine the right tools.&lt;/p&gt;

&lt;p&gt;The real challenge is not just streaming video — it's integrating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time communication&lt;/li&gt;
&lt;li&gt;Payment logic&lt;/li&gt;
&lt;li&gt;User roles&lt;/li&gt;
&lt;li&gt;System state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project proves that you can build complex, scalable systems without leaving the WordPress ecosystem.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
