Act Sem 23-30 Jun - Google Play/PIP Flutter Purchases - Laravel Herd 504 - Manual Payments Online Store

Welcome to another week where I'm going to talk about all the updates that have happened on both my YouTube channel and my blog.

YouTube/Blog

Opinion on Unfair Ratings on Steam
I uploaded a video, a bit of an opinion piece, in which I comment on a reflection from the creator of Ori—a famous video game I love—where he argues that on platforms like Steam, some people play for 60 hours (for example) but then add one star. It doesn't make sense, at least to me, and neither does it to him.

The worst part is that some people buy it, return it, and before returning it, leave a negative rating... and that review stays there! The same thing happens on platforms like Udemy. That was the main topic discussed in that video.

"No creo que esto deba permitirse" El creador de Ori revela un problema sobre las reseñas en Steam - https://youtu.be/8NztwQn_Xd8

Flutter Purchases + Google Play
I also posted how to make in-app purchases in Flutter for Android, using the plugin you see on the screen. This is the same one I use in my Academia app. Remember, if you're offering a digital service, Google requires you to use its own payment platform. PayPal or any third-party alternatives cannot be used.

Comprar dentro de la aplicación en Flutter/Android con in_app_purchase - Google Play - https://youtu.be/s5evTBvxUNA

504/503 Error in Laravel
Did you see a 504 or 503 error? These errors don't display any visible logs on the screen, so they're usually server or PHP errors. In the video, I show the steps I followed to find the cause and how I resolved it.

Laravel Herd - Reparar errores 504 - 503 PHP y Nginx- https://youtu.be/hVFHPk6r5hc

Optional Parameters in Laravel Routes
I also talked about optional parameters in Laravel routes. Personally, I don't like how they work because if a parameter isn't defined, instead of returning null, Laravel tries to look for a nonexistent model, which can cause unexpected errors.

Parámetros opcionales en las rutas de Laravel NO tienen sentido... - Opinión - https://youtu.be/q8bbQXIl3kI

Audio Looping in Unreal Engine 5
On my other YouTube channel, I showed how you can pause and resume looping audio, which is very useful if you're developing video games.

Bucle de Audios en Unreal Engine 5 y Pausar/Play a gusto - https://youtu.be/jyHE-A-7o-A

USB Hub I Didn't Know I Needed
Also, I'm sharing a USB hub I discovered I needed without realizing it. It allows me to disconnect devices with the touch of a button. This has made my life easier and kept my desk much cleaner.

No sabía que necesitaba este Hub USB hasta que lo tuve... - https://youtu.be/vf1FTiuyI0Y

Picture-in-Picture in Flutter
I showed how to implement Picture-in-Picture (PIP) mode in Flutter, as I use it in my Academia app. Pressing the button puts the video into floating mode, allowing you to easily resize it. Clicking it again puts the video back into full screen mode. Very useful for improving the user experience.

Modo Picture in Picture en Flutter en Android, Implementación y consejos - https://youtu.be/hC-4VRGIyJc

Course/Book Online Store

Recording Manual Payments
Within the course, we also advanced an important section: recording manual payments. This is useful if a user has a problem with their payment method or if they purchased a product and, for some reason, it wasn't registered correctly. Here we show how to handle it step by step, as we're working with polymorphic relationships between books and products.

User Profile and Translations
We continue with good practices and work on the translations section. From the user profile, you can change the application language (for example, from English to Spanish). Although it's not a complete real-time change, it does allow multiple sections to change correctly using Livewire.

Coupon Management: A Technical Challenge
The coupon module has been one of the most complicated. At first glance, it seems simple, but when you manage dynamic pricing, it gets much more complicated. For example, if you have a $15 product and a $2 coupon, the new price should be $13.

The real complication comes when applying the coupon after the payment interface has been generated. Since Livewire is a SPA (Single Page Application), the view is already loaded, and you can't dynamically inject JavaScript from Livewire as you would in a traditional app.

  1. Pagos en dashboard: Pagos manuales

    1. Implementamos opción de pagos locales para crear y actualizar.

  2. Pagos en dashboard: Pagos manuales, Paymable

    1. Definimos el campo de paymable para los formularios de crear y editar.

  3. Pagos en dashboard: Filtros

    1. Implementamos un sistema de filtros para el listado.

  4. Pagos en dashboard: Filtros, tipos al seleccionar producto

    1. Al seleccionar el tipo producto es un producto, definimos un filtro para los tipos.

  5. Vista de perfil para el usuario

    1. Creamos la pagina de perfil del usuario

  6. Vista perfil para el curso: Traducción

    1. Vamos a crear las configuraciones para permitir la app multi idioma.

  7. Vista perfil para el curso: Cambiar lenguaje

    1. Implementamos el componente de perfil la opción de cambiar el lenguaje.

  8. Middleware para actualizar el idioma

    1. Creamos in middleware para TODAS las rutas de web para actualizar el lenguaje.

  9. Cupón: Migración y Modelo

    1. Crearemos la migración y el modelo para los cupones.

  10. Cupón: Dashboard

    1. Creamos el proceso administrativo para los cupones.

  11. Cupón: Generar

    1. Vamos a generar el cupón de manera automatizada.

  12. Cupón: Componente de Livewire para el pago

    1. Te muestro un error sobre el ciclo de vida de Alpine por el cual, tengamos que adaptar el desarrollo posterior.

  13. Layout para la tienda

    1. Creamos un nuevo layout para la tienda.

  14. Problemas con eventos de Livewire (Ej, wire:click) y ejecutar JavaScript

    1. Hablamos sobre los eventos de Livewire y la inyección de JS.

I agree to receive announcements of interest about this Blog.

Youtube/Blog Google Play Shopping Flutter - Laravel Herd 504 - Optional Parameters in Laravel PIP Flutter Routes Course/Book Manual Payments - Translations - Generating Coupons

| 👤 Andrés Cruz

🇪🇸 En español