El desenvolupament d'aquesta versió ha costat 4.360 euros. El cost de la primera versió va ser de 38.000 euros. El cost acumulat des de la primera versió és de 42.360 euros, però el cost per a tu és només la llicència des de 80€.
Nova branca 2.0.x del plugin Subscripcions Avançades per WooCommerce. És una versió major: el plugin deixa de dependre de l'extensió WooCommerce Subscriptions i estrena cobraments recurrents automàtics natius amb Stripe, PayPal Payments i WooPayments, a més de Redsys, que continua viatjant dins del propi plugin.
Versions de la branca
2.0.0
Important:
- Aquesta és una versió major. Llegeix les notes d'actualització abans d'actualitzar, especialment si ara mateix cobres a través de PayPal Standard.
- Aquesta versió requereix WordPress 6.5 o superior i WooCommerce 8.0 o superior. El requisit anterior (WordPress 5.1, WooCommerce 5.1) mai s'havia arribat a provar de veritat, i al provar-ho per a aquesta versió es va comprovar que el plugin no podia funcionar allà. Les xifres noves són aquelles sobre les quals s'ha verificat aquesta versió.
- PayPal Standard deixa de ser suportat. El propi WooCommerce ho desaconsella des de la seva versió 5.5 i ho bloqueja en instal·lacions noves. Si ara mateix cobres les subscripcions amb PayPal Standard, instal·la WooCommerce PayPal Payments i migra els mètodes de pagament dels teus clients abans d'actualitzar a la 2.0.0.
Nou:
- Pagaments recurrents automàtics amb Stripe. Les renovacions es cobren ara off-session sobre la targeta guardada del client utilitzant el plugin WooCommerce Stripe Payment Gateway (es requereix la versió 9.8.0 o superior). No cal cap extensió de pagament Subscriptions.
- Pagaments recurrents automàtics amb PayPal Payments. Les renovacions es cobren a través del token de la bóveda (vault) de PayPal utilitzant el plugin WooCommerce PayPal Payments (es requereix la versió 3.0 o superior). No cal cap extensió de pagament Subscriptions.
- Pagaments recurrents automàtics amb WooPayments. Les renovacions es cobren off-session sobre el mètode de pagament guardat del client utilitzant el plugin WooPayments (es requereix la versió 7.0 o superior). No cal cap extensió de pagament Subscriptions.
- Emmagatzematge fiable del mètode de pagament en el checkout. Quan un client compra una subscripció amb Stripe, PayPal Payments o WooPayments, el plugin s'assegura que el mètode de pagament quedi guardat per a les renovacions, encara que aquestes passarel·les normalment només ho facin quan WooCommerce Subscriptions està actiu.
- Gestió de 3D Secure (SCA) en les renovacions. Quan el banc demana autenticació addicional en un cobrament recurrent, la renovació es marca com a fallida amb un motiu clar i es pot avisar al client perquè autoritzi el següent intent.
- Reintent automàtic de les renovacions fallides. Quan un pagament falla (targeta rebutjada, saldo insuficient, autenticació requerida, etc.), el programador de reintents reprograma automàticament el següent intent.
- Detecció d'acords de PayPal cancel·lats. Si un client cancela la seva autorització de PayPal fora de la teva botiga, la següent renovació ho detecta, la subscripció passa a «en espera» i el mètode de pagament guardat es marca com a no vàlid perquè el client pugui tornar a autoritzar-lo.
- Comprovació de seguretat de divisa en les renovacions. El plugin es nega a cobrar una renovació en una moneda diferent a la del pagament original, cosa que evita dobles cobraments accidentals en la moneda equivocada després d'un canvi de divisa de la botiga.
- Canvi de mètode de pagament entre passarel·les. Els clients poden canviar entre Stripe, PayPal Payments i WooPayments des de La meva compte, i la següent renovació utilitza automàticament el mètode nou.
- Nou ajust d'administració «Cancel·la la subscripció en el reemborsament total d'una ordre de renovació», a WooCommerce > Ajustos > Subscripcions Avançades > Ajustos Avançats. Desactivat per defecte. Quan està desactivat, un reemborsament total només deixa una nota en la subscripció; quan està activat, la subscripció es cancel·la. Els reemborsaments parcials mai cancel·len.
- Els reemborsaments de la comanda del primer pagament (la comanda pare) cancel·len sempre la subscripció. És el que s'espera de forma natural al reemborsar la compra original, i és independent del nou ajust d'administració.
- Notes automàtiques en la subscripció cada vegada que es reemborsa una renovació (total o parcialment), perquè la cronologia de la subscripció quedi clara.
- Panell de compatibilitat de passarel·les de pagament a la pantalla d'ajustos del plugin (WooCommerce > Ajustos > Subscripcions Avançades > Ajustos Generals). Mostra d'un cop d'ull si els plugins de passarel·la suportats estan instal·lats i actius, i ofereix enllaços d'instal·lació o activació en un clic quan no ho estan.
- Detecció de disputes i contracàrrecs en Stripe i PayPal. Quan un client obre una disputa, la comanda relacionada passa a «en espera» perquè puguis reaccionar abans de la següent renovació.
- Detecció de l'eliminació del mètode de pagament en Stripe. Si s'esborra el token de la targeta guardada, totes les subscripcions que l'utilitzen es marquen i passen a «en espera» perquè el client pugui guardar un mètode nou.
- Redsys apareix al panell de compatibilitat de passarel·les com a passarel·la inclosa: viatja dins d'aquest plugin i mai necessita una instal·lació a part.
Corregit:
- Desactivar WooCommerce ja no tira el lloc sencer. Fins ara, si WooCommerce deixava de ser actiu per qualsevol motiu (el apagaves per revisar alguna cosa, fallava una actualització o donava un error propi), aquest plugin seguia intentant utilitzar-lo i tirava totes les pàgines del lloc, incloent l'administració de WordPress, sense més volta enrere que el FTP. Ara el plugin detecta que WooCommerce no està, no fa res de forma silenciosa i mostra un avís explicatiu a l'administració. En tornar a activar WooCommerce tot es restableix sense cap acció addicional.
- Les renovacions podien programar-se en el moment equivocat, o no programar-se, en botigues la zona horària de les quals està configurada com a desfasament UTC en lloc de com a ciutat. La correcció afecta a com es llegeix la zona horària del lloc al calcular quan venç un pagament programat.
- Una comanda cancel·lada ja no deixa enrere una subscripció fantasma. Si un pagament fallava i el reintent del client generava una comanda NOVA en lloc de reprendre la primera (cosa que passa quan es perd la sessió o canvia el carret), la subscripció sense pagar de la comanda abandonada es quedava per sempre al compte del client. Mai es cobrava i no es podia activar, però el client veia una subscripció que mai havia pagat. Cancel·lar aquesta comanda ara l'elimina. Les subscripcions ja actives no es toquen mai: cancel·lar una comanda de renovació deixa la subscripció en marxa, com ha de ser.
- Esborrar el plugin ara neteja el que és seu. Fins ara, eliminar el plugin deixava tot enrere: els seus ajustos, els seus bloquejos de pagament i —el que tenia conseqüències visibles— les seves tasques programades, que WordPress seguia intentant executar encara que no quedés res instal·lat que les atengués, fallant i reintentant-les indefinidament. En desinstal·lar ara s'eliminen els ajustos propis del plugin i es cancel·len les seves tasques programades. Deliberadament NO s'esborren les teves subscripcions, les teves comandes ni cap dada de clients: són registres de negoci, es queden a la base de dades, i en reinstal·lar el plugin tornen exactament com estaven.
- Esborrar el plugin en un lloc que mai va tenir WooCommerce ja no omple el registre d'errors. La neteja buscava tasques programades en una taula que WooCommerce mai havia creat, cosa que produïa un error de base de dades per cada grup de tasques del plugin. Mai va ser fatal (la neteja acabava igualment i els missatges només apareixien amb la depuració activada), però en una xarxa multisitio es repetia en cada lloc. La neteja segueix funcionant exactament igual; només es silencien els missatges inútils, i únicament en un lloc on aquesta taula falta de veritat.
- Productes variables amb una barreja de variacions de subscripció i de no subscripció: comprar una variació que NO és una subscripció ja no guarda la targeta del client ni crea una subscripció. El plugin decidia si una variació era de subscripció mirant l'ajust del producte pare i ignorava completament la casella «Subscripció» de la pròpia variació, així que en un producte variable on només algunes variacions són subscripcions, totes es comportaven com a tals. Una variació sense ajust propi continua heretant el del pare, de manera que un producte que acabes de marcar com a subscripció continua funcionant fins que configures les seves variacions.
- Una subscripció configurada per renovar-se manualment ja no es cobra de forma automàtica. Entre la renovació programada i la passarel·la de pagament no hi havia res que comprovés si el client havia demanat pagar a mà, i a la comanda de renovació —que per a les renovacions manuals es crea deliberadament sense mètode de pagament— se li omplia un a partir de la comanda original just abans del cobrament. Les renovacions manuals ara s'aturen en ambdós punts, i es neteja qualsevol reintent automàtic pendent sobre elles.
- Fixar la data d'inici d'una subscripció des de la pantalla d'administració ja no provoca un error fatal. La pantalla cridava a un mètode d'escriptura de dates que no existia en l'objecte de subscripció, així que en qualsevol botiga sense l'extensió WooCommerce Subscriptions el desament moria amb «Call to undefined method». El flux de comandes amb data d'inici fallava igual per un segon mètode inexistent. Ambdós estan ara implementats sobre l'emmagatzematge de dates propi del plugin; una subscripció a la qual mai se li ha escrit una data d'inici continua informant de la data de creació de la seva comanda, exactament com abans.
- Productes variables: els ajustos de subscripció per variació no apareixien mai al marcar una variació com a subscripció. La pantalla d'edició de producte sol·licitava el script carregador sense minificar independentment de l'ajust
SCRIPT_DEBUG, així que en les instal·lacions que només inclouen el recurs minificat tornava un 404 i el panell de camps —que roman ocult fins que aquest script s'executa— no arribava a aparèixer. - Els correus de notificació de subscripció disparats directament a través de la Scheduler API del plugin ara sí s'envien. L'API acceptava un tipus de notificació i el passava endavant, però la funció que hi havia darrere no declarava aquest paràmetre, així que PHP el descartava i el tipus arribava buit: no s'enviava cap correu i l'esdeveniment de notificació no indicava tipus algun. Les notificacions llançades pel programador en els seus propis hooks no estaven afectades.
- Una data de primer pagament fixada des de la pantalla d'administració de la subscripció ara sí es cobra. L'acció programada es creava amb el nom de hook de WooCommerce Subscriptions, que aquest plugin no escolta, de manera que el pagament simplement mai s'executava en botigues sense aquesta extensió. L'acció es programa ara en el hook de renovació propi del plugin i en el mateix grup que la resta d'accions de pagament, així que cancel·lar, pausar o esborrar la subscripció l'elimina com s'espera. El nom de hook antic es continua programant en paral·lel per a les botigues que depenien d'ell, i es pot desactivar amb el filtre
aswc_start_date_schedule_legacy_payment_hook. - Canviar una data de primer pagament ja programada ara mou aquest pagament en lloc d'afegir un segon.
- La integració amb els blocs de Carret i Pagament ja no desapareix en llocs que funcionen amb
SCRIPT_DEBUGactivat. Només es distribuïa el script minificat, així que la ruta sense minificar que WordPress demana en aquest mode tornava un 404 i tota la integració deixava de carregar-se en silenci, portant-se per davant el control «View Attached Products» de les caixes de subscripció i els anuncis parlats del total recurrent. Ara ambdues versions es generen a partir del mateix codi font. - Les taules de descomptes de les pàgines de producte ja carreguen la seva fulla d'estils i el seu script en els temes clàssics. Els recursos es resolien a partir del producte que s'estava renderitzant en el bucle, que encara no està disponible quan un tema clàssic encola els scripts, així que en aquests temes la taula apareixia completament sense estils i el refresc de descomptes dels productes variables no s'executava. Els temes de blocs no estaven afectats.
- Passarel·la Redsys inclosa: les comandes de subscripció es detecten ara correctament en el checkout, de manera que se sol·licita a Redsys el token de targeta recurrent (COF) i les renovacions poden cobrar-se automàticament.
- Passarel·la Redsys inclosa: la targeta de subscripció guardada apareix ara a La meva compte > Mètodes de pagament (etiquetada com a «Subscription»). El filtre de mètodes de pagament guardats la ocultava al executar-se fora del context de checkout.
- Passarel·la Redsys inclosa: guardar el token de la subscripció ja no aborta la notificació de pagament quan el banc no retorna el número de targeta enmascarat (
Ds_Card_Number); s'emmagatzema un marcador segur dels últims quatre dígits perquè la tokenització i les renovacions automàtiques segueixin funcionant. - Pont de PayPal: el contenidor de serveis del plugin oficial s'obté ara a través de l'acció real d'arrencada de PPCP (amb una alternativa directa), de manera que els cobraments de renovació funcionen. La cerca anterior depenia d'un filtre que no existeix en WooCommerce PayPal Payments.
- Pont de PayPal: les càrregues útils dels webhooks ja no es processen quan la verificació de firma de PayPal ha rebutjat la petició, la qual cosa tanca un vector de manipulació no autenticada de l'estat de comandes i subscripcions.
- Pont de PayPal: els cobraments de renovació segueixen exactament el gestor oficial de renovacions (només
vault_id, sense el camp invàlidstored_credentials) i el resultat del cobrament es llegeix de la captura real, no només de l'estat de la comanda de PayPal. Les configuracions amb intenció d'autorització s'informen amb claredat en lloc de marcar-se com a pagades sense capturar els fons. - Pont de PayPal: les comandes de renovació emmagatzemen ara les metadades oficials de PayPal i l'identificador de transacció, de manera que els reemborsaments des de l'administració de WooCommerce i les consultes de disputes funcionen sobre les renovacions cobrades pel pont.
- Pont de PayPal: la disponibilitat del vault es llegeix del sistema d'ajustaments actual (amb alternativa heredada), els tokens de Venmo i Apple Pay s'envien amb el seu payment source correcte, i la marca de vault només s'injecta en el checkout quan guardar mètodes de pagament és realment elegible.
- Pont de PayPal: les passarel·les de PayPal s'oculten en el checkout per als carrets de subscripció amb prova gratuïta (total zero), que PayPal no pot guardar en el vault sense un cobrament real en aquesta configuració.
- Pont de Stripe: les excepcions de l'API de Stripe durant les renovacions es capturen i es registren com a fallits de pagament, i cada cobrament de renovació envia una clau d'idempotència determinista, la qual cosa evita cobraments duplicats quan una petició expira i es reintenta.
- Pont de Stripe: les renovacions correctes emmagatzemen ara l'identificador de càrrec de Stripe com a identificador de transacció de la comanda, de manera que els reemborsaments i les disputes iniciades des del panell de Stripe s'associen a la comanda correcta.
- Pont de Stripe: les renovacions pagades amb tokens de Stripe Link es cobren amb el tipus de mètode de pagament correcte, i la comprovació de la moneda original llegeix la moneda emmagatzemada localment en lloc de cridar a l'API de Stripe en cada renovació.
- Pont de Stripe: s'elimina el suport de SEPA. L'identificador de la passarel·la SEPA heredada ja no existeix en Stripe 10.x i les seves renovacions mai podien cobrar-se; targeta i Link segueixen totalment suportats.
- WooPayments i Stripe: el mètode de pagament es guarda ara de forma fiable en el checkout de blocs (Store API). La detecció anterior no arribava a coincidir mai per la manera com WooCommerce exposa el context de pagament, i les subscripcions es quedaven sense token per a les renovacions.
- El guardat del mètode de pagament ja no duplica la targeta quan el client paga amb un mètode de pagament ja guardat.
- Canviar el mètode de pagament d'una subscripció amb WooPayments o Stripe ara tokenitza la targeta nova sense cobrar al client. Abans es podia cobrar l'import complet de la renovació en el moment del canvi.
- El checkout activa i oculta automàticament la casella «guardar mètode de pagament» en les passarel·les de targeta quan el carro conté una subscripció, de manera que les compres amb 3D Secure també acaben amb un token guardat.
- Els hooks de pagament de les renovacions comproven ara que la comanda segueixi necessitant pagament abans de cobrar (programador, ponts i l'acció «retry payment» de l'administració), la qual cosa evita cobraments duplicats en comandes ja pagades o autoritzades.
- Quan un mètode de pagament guardat deixa de ser vàlid o s'elimina, la subscripció afectada passa ara a «en espera» amb una nota explicativa, en lloc de fallar en silenci en la següent renovació.
- Les lectures de metadades en botigues sense HPOS podien retornar la subscripció equivocada o corrompre els comptadors de reintents per un argument incorrecte passat a
get_post_meta(); corregides totes les crides. - Passarel·la Redsys inclosa: es verifica la firma de la resposta REST de renovació, les comparacions de firma fan servir
hash_equals(), les notificacions es rebutgen quan no hi ha configurada una clau SHA-256, i s'ha corregit un fall en el maneig de la clau en mode de proves. Nota: les renovacions cobren intencionadament el token recurrent (R) més recent del client; quan un client actualitza la seva targeta, el token nou substitueix l'anterior per a tots els seus cobraments recurrents.
Seguretat:
- La caixa de subscripció multiproducte decideix ara el seu propi preu en el servidor. La petició d'«afegir a la subscripció» portava el total de la caixa, i aquesta xifra s'emmagatzemava com a preu de línia del carro, així que una petició manipulada podia comprar una caixa per qualsevol import. El preu es deriva ara dels preus de producte de la pròpia botiga (o del preu fix configurat en la caixa) i la xifra de la petició s'ignora.
- La caixa de subscripció multiproducte només accepta ara els productes que realment ofereix. Tant la petició d'afegir com la d'editar acceptaven qualsevol ID de producte i retornaven el seu nom, preu i imatge sense comprovar ni la configuració de la caixa ni si el producte és visible públicament, cosa que revelava preus de productes en esborrany, privats i protegits per contrasenya a visitants sense identificar. Les seleccions es validen ara contra la llista de productes o categories de la pròpia caixa i contra la visibilitat del producte.
- Desar una variació de producte exigeix ara la capacitat «edit products» per si mateixa, a més del seu nonce. No era explotable abans, perquè WooCommerce només arriba a aquest gestor després de la seva pròpia comprovació de capacitats; és defensa en profunditat en la funció que escriu.
Actualitzat:
- Quan no es pot llegir la zona horària del lloc, el plugin ho deixa dit ara en el seu propi log. Sempre ha seguit endavant en lloc de fallar, recorrent al desfasament UTC del lloc i, en el seu defecte, al propi UTC. Fer-ho en silenci significava que una renovació cobrada a una hora inesperada no tenia res que ho expliqués. El comportament alternatiu no canvia; ara queda registrat, i només quan ocorre de debò.
- Neteja interna: el plugin ja no barreja les seves dades amb les de l'extensió WooCommerce Subscriptions, cosa que evita conflictes quan ambdós plugins conviuen al mateix lloc.
- Documentació per a desenvolupadors actualitzada. La referència de hooks cobreix ara totes les accions i filtres nous que introdueixen els ponts de pagament (veure
docs/hooks-reference.md). - Passarel·la Redsys inclosa: el registre migra de l'API obsoleta
WC_Logger::add()al logger modern, i l'identificador de mòdul als logs reflecteix ara aquest plugin (Advanced_Subscriptions_Redsys) en lloc del gateway independent Redsys Light.
Compatibilitat:
- Provada fins a WordPress 7.1 i WooCommerce 11.1.0.
- Requereix WooCommerce Stripe Payment Gateway 9.8.0 o superior per al pont de Stripe.
- Requereix WooCommerce PayPal Payments 3.0 o superior per al pont de PayPal.
- Requereix WooPayments 7.0 o superior per al pont de WooPayments.
- Totalment compatible amb l'emmagatzematge de comandes d'alt rendiment de WooCommerce (HPOS).
- El plugin ja no depèn de l'extensió WooCommerce Subscriptions. Funciona de forma autònoma.







