V posledních dnech jsem  implementoval dvě platební brány do dvou různých WordPress webů – platební bránu od www.thepay.cz a platební bránu Fio banky. A nemohl to být rozdílnější zážitek. ThePay je moderní jednoduchá krásně přímočaře implementovatelná brána, po registraci ihned získáte údaje a hesla k ostrému provozu. Svou aplikaci si otestujete s demo hesly z dokumentace a až máte vše řádně funkční, tak jen vyměníte hesla a můžete bránu používat naostro – a přijímat platby od zákazníků.

Klientka nabízí službu hlídání domácích mazlíčků, a na webu chtěla mít jednoduché platební tlačítko, aby jí mohli zákazníci snadno posílat zálohové částky na (budoucí) hlídání. Částky 500 Kč, 1000 Kč … přidal jsem k tomu kolonky na jméno, email a telefon, pak klientkou nastavitelný počet tlačítek / částek, a do administrace přehled transakcí a jejich stavů. A bylo hotovo.

No …

… a pak je tu Fio platební brána.

Fio platební brána je strašná. Fio platební brána zamrzla v roce 1995. Technicky, procesně, dokumentačně. Fio banka používá technologii od externí slovenské společnosti Payeezy … která používá technologii od lotyšské společnosti First data … nebo tak nějak. Klientovi přijde emailem textový soubor (příloha) s certifikáty. Ten si musí uložit na disk, přepsat koncovku TXT na RAR, a náhle je z toho zabalený archiv. Ale zaheslovaný. Heslo k rozbalení … přijde druhým emailem. WTF? Tak snad kdyby ho poslali SMSkou, tak to má smysl, ale toto je bezpečnostní opatření level starověk.

Dokumentace je docela otřesná a rozprostřená po několika různých dokumentech. Nějak jsem to dal dohromady, a při testovací platbě zjistím, že na stránce brány, kde má zákazník zadávat údaje ze své karty, svítí jakési %%meno obchodnika%% tam, kde by měl být název webu, ze kterého na bránu přišel. Vždyť Fio ví, jaká firma onu bránu používá … ale nikoli, já sám musím jít a tuto značku přepsat přímo ve zdrojových souborech vzhledu brány. V rozhraní tak starém a nepřívětivém, že mě nechávalo v němém údivu…

Neuvěřitelné. Takhle musel člověk provést několik úprav, a při překlopení do ostrého provozu se stejně načetly původní čisté šablony bez mých úprav. Šokován jsem psal na podporu, co to má znamenat, proč jsem to tedy na testovací instanci brány upravoval, a ať do ostrého provozu laskavě překopírují mé úpravy.

Jenže ostrý provoz je podmíněn tím, že člověk přes to strašné rozhraní na obrázcích výše ještě provede asi 14 testovacích transakcí. Tedy provede je na svém webu, kde bránu implementoval, a v rozhraní bude zadávat jejich výsledky … a některé z nich jsou tak padlé na hlavu, že je třeba kód své implementace fingovaně upravit, aby se transakce poslala v podobě požadované daným testem, a pak úpravy zase vrátit zpět, aby transakce fungovaly dále správně. A když je toto vše hotové, tak musíte napsat na podporu a nechat si schválit, že je možné přepnout bránu do ostrého provozu … a dny čekáte, než vám opět pošlou nové certifikáty a ostrá hesla, opět zabalené v Raru …

Já byl implementací Fio platební brány TAK. STRAŠNĚ. FRUSTROVÁN, že je to z tohoto textu asi zřejmé. Již nikdy více.

(A to nebudu zmiňovat takovou „drobnost“, že ještě nedávno Fio brána neuměla takovou naprosto základní věc jako předat zpět na web informaci o tom, jakou transakci právě zpracovávala. Nevěděl bych tedy, jakou objednávku označit jako uhrazenou (…), protože brána by mi nevrátila její ID … strašné, strašné)

 

Platební systém Xpay.cz je oblíbeným řešením pro klienty, kteří chtějí zpoplatnit přístup ke svému webu, a úhradu umožnit zasláním Premium SMS. Což je mnohem jednodušší způsob, než řešit bankovní převody a platební karty. Na druhou stranu, výše těchto plateb není nikterak závratná (tuším max do 1 500 Kč), a provize mobilnímu operátorovi si také ukousne velkou část z celé transakce … ale to vše je vyváženo onou jednoduchostí platby. Vzít do ruky telefon a poslat SMS, to zvládne každý.

Při nedávné zakázce jsem platební bránu Xpay implementoval jako plugin pro WordPress. Zájemce měl web s erotickými povídkami, a hodlal jej zpoplatnit posíláním těchto SMS (to je velmi častý případ). Nejdříve jsem dlouho bojoval s dokumentací, neboť jsem s Xpay platební bránou pracoval naposledy před několika lety, a od té doby se některé věci změnily. Ale nakonec jsem se dopracoval k velmi elegantnímu řešení.

Klient si může v administraci WordPressu nastavit až pět různých platebních metod, které se liší výší poplatku, a tím i délkou předplatného, po kterou je uživatelský účet aktivní. Můj plugin pak čeká na pokyn od Xpay brány, že (zjednodušeně) telefonní číslo 789123456 uhradilo 99 Kč. Plugin z nastavení ví, že takovému zákazníkovi má vytvořit účet s platností na např. 30 dní, na pozadí vytvoří nového WordPress uživatele, vygeneruje mu heslo, a Xpay bráně vrátí znění SMS, která je poslána zpět na mobil zákazníka. Například ve tvaru „Děkujeme za vaši platbu! Byl vám vytvořen účet se jménem ABCD a heslem M2f58kWx, platný po dobu 30 dní.“. Zákazník má tedy pár okamžiků po zaplacení poplatku v ruce přístupové údaje na web, a může se přihlásit.

Klient má ve správě stránek a příspěvků k dispozici nastavení, kdy si sám určuje, který obsah je placený (a zobrazí se místo něj pokyny k SMS platbám a přihlašovací formulář), a který je volně přístupný. Může i snadno označit část stránky, která bude veřejná, a která část bude přístupná až po přihlášení … a tedy čtenáře nalákat několika prvními odstavci textu.

Obrátil se na mě klient s žádostí řešení situace, kdy má firma s celoevropskou působností svůj hlavní mezinárodní web a cca 10 webů poboček v různých státech (a jazycích), a ty by měly ideálně bezpracně zobrazovat fotogalerii referencí z hlavního mezinárodního webu. Tamní rozsáhlá fotogalerie obsahuje cca 600 referencí s kvalitními a poutavými fotografiemi a je neustále doplňovaná … jenže to samé provádět na webech všech národních poboček by bylo nepříjemně pracné (vložení nové galerie na hlavní web by obnášelo desetkrát tento úkon opakovat i na ostatních webech). Ovšem tyto kvalitní fotografie tam nemít by zase bylo trestuhodné nevyužití jejich potenciálu.

(Pokračování textu…)

Nedávno jsem dokončil zakázku na propojení webu realitní společnosti Luneta reality a její databáze nemovitostí v realitním systému Urbium. Použil jsem svůj Urbium WordPress plugin. Web společnosti využívá tradičně rozsáhlou placenou „realitní“ šablonu, která sama obsahuje možnost kompletní správy nemovitostí, ale to vše by musel klient řešit ručně bez možnosti automatizace – nejdříve by své nemovitosti zadával v Urbiu (aby byly kopírovány na inzertní servery), a poté by je musel znovu zadávat v administračním rozhraní šablony, aby se zobrazovaly na jeho webu.

Můj plugin zajistil jejich zkopírování z Urbia na web, a dále bylo třeba připravit „na míru“ jejich zakomponování do šablony. Díky tomu, že šlo o realitní šablonu, nebylo třeba vymýšlet něco nového, ale mohl jsem rovnou zvolit z několika předpřipravených podob přehledu nemovitostí a jejich detailových stránek (tedy to si samozřejmě zvolil klient). Přesto to obnášelo podrobné zpětné inženýrství, kdy jsem ze šablony vyzobával jednotlivé prvky a nechával je zobrazovat mým pluginem. Jde o situaci, kdy šablona o žádných nemovitostech neví (žádné ve své správě nemá), ale ví, jak mají případně vypadat, zatímco můj plugin nemovitosti má (stáhl si je z Urbia), ale neví, v jaké podobě je na webu prezentovat.

Po drobných finálních laděních a úpravách je vše hotové a funkční.

Obrátil se na mě zákazník s prosbou o vyřešení problému s napadeným WordPress webem, který během posledních 24 hodin rozeslal cca 25 000 spamových emailů, a jejich hosting jim ho vypnul. Ihned jsem se pustil do práce. V přeposlaném e-mailu od hostingu byla ukázka z logu, kde byly spamové requesty očividně zastoupeny voláním „POST /wp-admin/admin-ajax.php“. Už to mi mělo napovědět, že to nebude úplně běžné napadení – to se totiž nesoustředí jen na jeden soubor, ale má rozesetá zadní vrátka po celém webu.

(Pokračování textu…)

Již snad 15 let (ne-li déle) spravuji webové stránky svému (nyní již bývalému) bydlišti – obci Vír (www.virvudolisvratky.cz). Ještě během studií na gymnáziu jsem vytvořil jednoduchý „neoficiální“ webík, později jej přenesl na vlastní redakční systém, poté na jeho novou verzi … nejstarší zveřejněné informace jsou z roku 2006. Použitý redakční systém jsem již ovšem přestal rozvíjet a udržovat, toto „objevování kola“ nebylo po ekonomické stránce smysluplné. Naopak bylo stále zřejmější, že by bylo vhodné tento pomalu zastarávající web přenést na redakční systém WordPress.

(Pokračování textu…)

Nedávno jsem dokončil zakázku, kde jsem měl původně propojit WordPress web s realitní datábází Urbia, ale nakonec jsem realizoval celý nový web (na základě grafického návrhu). V rámci práce jsem nakonec také celý svůj původní Urbium plugin zahodil, a začal jej programovat úplně nově. Prvotní verzi jsem vytvořil v roce 2013, tuším jako úplně první WordPress plugin, s minimálními zkušenostmi, jak to dělat správně. Nyní o tři roky a desítky pluginů později jsem již měl naprosto jasnou představu, jak to udělat „co nejlépe“. A než se tedy v rámci této zakázky potýkat se starým a nekvalitně naprogramovaným pluginem, tak jsem jej naprogramoval úplně nově a mnohem kvalitněji.

Zdánlivě se nic moc nezměnilo, ale reality se nyní importují jako „posty“ (tedy nativní WP objekty), a z toho vyplývá, že je možné pro ně připravit vlastní šablony přímo v tématu vzhledu. A vše je programováno s ohledem na budoucí rozšiřitelnost – aby případná rozšíření funkčnosti neznamenala nutnost přepsání jádra pluginu. Spousty dalších vylepšení.

Mioweb je rozšíření WordPressu doplňující do něj možnosti prodeje infoproduktů (on-line kurzy, školení, e-booky,…) a snadné tvoření propracovaných stránek „skládáním“ mnoha rozmanitých prvků (nadpisy, obrázky, videa, formuláře, …) v tzv. „builderu“. Nechci rozepisovat, co Mioweb umí – už proto, že jej jako programátor nemám rád 😀 Proč to? Protože na Miowebem poháněném webu je spousta úkonů snadných v tradiční instalaci WordPressu najednou extrémně komplikovaná až nemožná, a klienti to obtížně chápou.

Obrátil se na mě klient s požadavkem: „Mám na webu členskou sekci rozdělenou do sedmi kapitol, a registrační formulář. Chci, aby se každý registrovaný uživatel mohl na 15 minut podívat do každé kapitoly (obsahují videa a články), ale pak mu bylo toto oprávnění zrušeno. Po 15 minutách by se mu již zobrazil pouze objednávkový formulář a za přístup do všech kapitol by musel zaplatit.“ 

(Pokračování textu…)

V pondělí ráno jsem usedl s kávou k počítači a přemýšlel, do které práce se pustím nejdříve, když mi přišel e-mail s prosbou o vyřešení „hacku“ WP webu mého několikaletého klienta (kterému jsem původně implementoval platební bránu). Provozovatel hostingu web vypnul, protože rozesílal tisíce spamových e-mailů denně – jasná známka napadení webu a jeho zneužití k nekalým účelům. Tyto problémy „mám rád“, protože je to vždy něco nového, souboj s neviditelným nepřítelem, zákopový boj digitální války 🙂

(Pokračování textu…)

Nedávno jsem se dostal ke dvěma různým webům na WordPressu, které napadli neznámí útočníci. Každý z hacků byl naprosto odlišný, a obsa se mi povedlo – zdá se – zdárně vyřešit.

(Pokračování textu…)