Reklamace chybné transakce v PayPal

Reklamace chybné transakce v PayPal
« kdy: 28. 12. 2020, 13:44:09 »
Zdravím vespolek,
během Svátečních dnů jsem si řekl, že by nebylo na škodu podpořit některé projekty pár drobnými. Minulý týden jsem teda poslal něco málo dvou projektům přes PayPal donate - transakce proběhla přes kartu. Bohužel jsem ale z emailů a z internetového bankovnictví zjistil, že PayPal připsal obě platby stejnému příjemci. Naštěstí jsem měl ještě nacachovanou stránku se samotnou platbou, kde jsem si ověřil (a pro jistotu udělal screenshot), že druhá platba skutečně směřovala jinému příjemci. Čili na webu mi PayPal potvrdil, že platba danému příjemci proběhla v pořádku, ale z emailu vidím, že ta samá platba byla připsána někomu jinému. Bohužel PayPal podpora se tváří, že se nic nestalo a že platby proběhly tak, jak jsem je zadal. Osobně si myslím, že nastala nějaká chyba v jejich systému, kdy jsem ty platby zadal hned po sobě a on je nějak smíchal dohromady.

PayPal každopádně nechce přiznat chybu - mám nějaké páky na to, aby to napravil? Nejsou to nijak závratné částky, ale nelíbí se mi, jak se k tomu staví.
A trochu offtopic - jaké služby používáte pro donate OS projektům? S PayPalem po tomto už končím.
« Poslední změna: 28. 12. 2020, 14:27:51 od Petr Krčmář »


RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Reklamace chybné transakce v PayPal
« Odpověď #1 kdy: 28. 12. 2020, 14:59:56 »
Podobny problem melo FORPSI, kdyz vam expiruje >1 domena a vy si v nekolika tabech otevrete prodlouzeni a platbu - nejak tam maj bordel v cookies a vlatne provedete platbu na 1 domenu, vicekrat :-)

Samozrejme to je koncepcni chyba, protoze nejake frameworky jsou napytel, kdyz si stav vedou v cookies, a nemaji ho v URL.

Podobny problem ale je treba i u banky - tusim FIO rovnou zahlasi vadu a odhlasi vas - protoze nesedi sekvencni poradi cookies verzi.

Tohle nevyreklamujes - zadny moloch neprizna vadu, nebo zamestnava indy, kteri nejsou ochotni pripustit novou vadu - znaj jen sve existujici problemy.

Re:Reklamace chybné transakce v PayPal
« Odpověď #2 kdy: 28. 12. 2020, 15:08:29 »
Zeptej se obou protistran jestli to dorazlo..

Re:Reklamace chybné transakce v PayPal
« Odpověď #3 kdy: 28. 12. 2020, 16:29:41 »
Zeptej se obou protistran jestli to dorazlo..

Tohle bude hodne blbe vysvetlovani.
Nejlepsim resenim je znovu poslat tomu co to nedorazilo a tomu prvnimu zablahoprat at penize vyuzije na dobrou vec.

Re:Reklamace chybné transakce v PayPal
« Odpověď #4 kdy: 28. 12. 2020, 18:55:30 »
Pokud to na jejich stránce vypadá ok, tak mají možná jen chybu v emailech.
« Poslední změna: 28. 12. 2020, 18:58:41 od kotelgg »


L..

  • ****
  • 302
    • Zobrazit profil
    • E-mail
Re:Reklamace chybné transakce v PayPal
« Odpověď #5 kdy: 28. 12. 2020, 20:46:26 »
Podobny problem ale je treba i u banky - tusim FIO rovnou zahlasi vadu a odhlasi vas - protoze nesedi sekvencni poradi cookies verzi.

To není bug, ale feature. Pokud byste pracoval na stejném účtu ve dvou oknech paralelně, tak budete klikat do stavu, který už není platný a to může způsobit různé podivuhodné věci (které třeba nechcete). A co se týče peněz, tak "better safe than sorry".

RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Reklamace chybné transakce v PayPal
« Odpověď #6 kdy: 28. 12. 2020, 21:13:08 »
Podobny problem ale je treba i u banky - tusim FIO rovnou zahlasi vadu a odhlasi vas - protoze nesedi sekvencni poradi cookies verzi.

To není bug, ale feature. Pokud byste pracoval na stejném účtu ve dvou oknech paralelně, tak budete klikat do stavu, který už není platný a to může způsobit různé podivuhodné věci (které třeba nechcete). A co se týče peněz, tak "better safe than sorry".

Ale on tam zadny evidentni stav neni - typicky use case je, ze chcete zopakovat X transakci (treba platby odvodu, najem, vyplaty), tak se doklikam v historii to obdobi ktere opakuji, ale nesmim otevrit v novych tabech "opakovat transakci" u vsech naraz - musim to delat po jednom - opakovat+k podepsani, opakovat+k podepsani... holt to UX pak trpi, radeji bych si pripravil do tabu co chci opakovat a pak je po jednom upravoval/odesilal a zaviral, nez mit vedle papirek a skrtat co jsem udelal nebo neudelal a musel stridat typ ukolu, protoze to maj napsany blbe.

Nepredpokladam ze to udelali takto umyslne (aka featura), spis to nemaj vychytany nebo je to technologicke omezeni frameworku (a s tim jako integratori nic nenadelaj).

Re:Reklamace chybné transakce v PayPal
« Odpověď #7 kdy: 28. 12. 2020, 21:13:39 »
To není bug, ale feature. Pokud byste pracoval na stejném účtu ve dvou oknech paralelně, tak budete klikat do stavu, který už není platný a to může způsobit různé podivuhodné věci (které třeba nechcete). A co se týče peněz, tak "better safe than sorry".
Vážně? Jaký problém by to mohlo způsobit? Stejně se musí vše ověřovat na serveru. Stejného stavu můžete dosáhnout třeba tím, že budete mít otevřené okno v prohlížeči a mezi tím uděláte změnu z jiného prohlížeče nebo z internetového bankovnictví.

L..

  • ****
  • 302
    • Zobrazit profil
    • E-mail
Re:Reklamace chybné transakce v PayPal
« Odpověď #8 kdy: 28. 12. 2020, 22:11:16 »
Nepredpokladam ze to udelali takto umyslne (aka featura), spis to nemaj vychytany nebo je to technologicke omezeni frameworku (a s tim jako integratori nic nenadelaj).

S tímhle máte AFAIK pravdu. Pokud vím, má Fio web ve Wicketu. Ten si drží stránku v paměti serveru a když přijde AJAXový calback pro komponentu, tak na ní zavolá příslušný callback. Aby se nestalo, že komponenta už tam není / je v jiném stavu, tak pracuje s verzemi stránky, takže volání obsahuje i informaci, pro jakou verzi je určeno.

Problém s tím je, že server si musí držet ty verze zpětně a to žere hodně paměti, takže na zatíženějších serverech se to omezuje a pak je právě problém, když by vám přišel callback pro verzi, kterou už v paměti nemáte. Například když si otevřete stránku v jiném okně, něco na ní děláte a pak se vrátíte do původního s o dost starší verzí stránky. Proto se tomu v takovýchto setupech zamezuje a to je technologický důvod, proč to Fio neumí. Nicméně i kdyby to technologie uměla, tak to není moc žádoucí (viz dále).

Ale on tam zadny evidentni stav neni (...)

Ale je. Že vy byste zrovna dělal něco, co by bylo OK je hezké, ale těžko to obecně zaručit.

... musim to delat po jednom - opakovat+k podepsani, opakovat+k podepsani...

Poznámka mimo k workflow: AFAIK Fio umožňuje transakci vytvořit a podepsat později. Tedy si je můžete vytvořit a podepsat později v dalším kole.

Vážně? Jaký problém by to mohlo způsobit?

Že na něco kliknete a dostanete divnou interní chybu (protože se to ověřuje na serveru, jak správně píšete), protože je to v divném stavu, už neexistuje atp. Ono by se to dalo ošetřit, aby se to chovalo nějak rozumně, ale bylo by dost pracné vychytat (a vůbec identifikovat!) všechny scénáře. Práce ve víc oknech je sice občas užitečná, ale náklady jsou velké, takže se to nevyplatí podporovat a než to mít blbě, tak je lepší to odstřihnout.

Stejného stavu můžete dosáhnout třeba tím, že budete mít otevřené okno v prohlížeči a mezi tím uděláte změnu z jiného prohlížeče nebo z internetového bankovnictví.

Pokud se přihlásím z jiného prohlížeče, původní session se odloguje (může odlogovat), v tom problém není. Asi jste chtěl napsat "mobilního bankovnictví" - to je teoreticky možné, ale ne až tak pravděpodobné.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Reklamace chybné transakce v PayPal
« Odpověď #9 kdy: 29. 12. 2020, 01:19:22 »
Ono by se to dalo ošetřit, aby se to chovalo nějak rozumně, ale bylo by dost pracné vychytat (a vůbec identifikovat!) všechny scénáře. Práce ve víc oknech je sice občas užitečná, ale náklady jsou velké, takže se to nevyplatí podporovat a než to mít blbě, tak je lepší to odstřihnout.
Já teda žiju ve světě, kde je tohle default, nemusí se pro to dělat žádné speciální extra podpora, a ty případy, kdy to nefunguje (Tesco a některé banky) jsou výjimka a příšerné (OMG! si v Tescu otevřete do tabů 10 výrobků a seznamů, že si je prohlídnete a naházíte do košíku, a ono si to obsah košíku navzájem přepíše!)

jouda2

Re:Reklamace chybné transakce v PayPal
« Odpověď #10 kdy: 29. 12. 2020, 02:12:29 »
PayPal každopádně nechce přiznat chybu - mám nějaké páky na to, aby to napravil? Nejsou to nijak závratné částky, ale nelíbí se mi, jak se k tomu staví.
Zkuste stížnost u regulátora, což je ČNB. V nejhorším odpoví že jim to nepřísluší.

Re:Reklamace chybné transakce v PayPal
« Odpověď #11 kdy: 29. 12. 2020, 10:59:15 »
Že na něco kliknete a dostanete divnou interní chybu (protože se to ověřuje na serveru, jak správně píšete), protože je to v divném stavu, už neexistuje atp. Ono by se to dalo ošetřit, aby se to chovalo nějak rozumně, ale bylo by dost pracné vychytat (a vůbec identifikovat!) všechny scénáře. Práce ve víc oknech je sice občas užitečná, ale náklady jsou velké, takže se to nevyplatí podporovat a než to mít blbě, tak je lepší to odstřihnout.
Váš původní komentář jsem chápal tak, že píšete o pohledu uživatele – tedy že uživatel nechce používat internetové bankovnictví ve více záložkách, protože by to dělalo z jeho pohledu zmatené věci. Pokud je problém s použitou technologií, pak samozřejmě chápu, že je to raději zakázané (není to zase tak častý use case, aby se vyplatilo to řešit). Možná větší problém, než uživatelský diskomfort, vidím v tomhle případě v tom, že tohle řešení bude špatně škálovat. Obecně je podle mne zrovna u IB řešení vícenásobného přístupu poměrně snadné, ale samozřejmě ne v případě, kdy tomu brání použitá technologie.

Pokud se přihlásím z jiného prohlížeče, původní session se odloguje (může odlogovat), v tom problém není. Asi jste chtěl napsat "mobilního bankovnictví" - to je teoreticky možné, ale ne až tak pravděpodobné.
Ano, chtěl jsem napsat mobilní bankovnictví. Pokud je problém jenom v tom, že server drží stav klientského GUI, je zbytečné bránit uživateli používat dvě různé session – z pohledu serveru by to byly dvě různé instance s odlišným stavem (pokud by stav byl skutečně svázán se session a ne přímo s uživatelským účtem).

by_cx

  • ****
  • 290
    • Zobrazit profil
    • E-mail
Re:Reklamace chybné transakce v PayPal
« Odpověď #12 kdy: 29. 12. 2020, 11:49:51 »
Mohl by pomoct finanční arbitr:

https://finarbitr.cz/cs/

Ale pokud to jsou nějaké malé částky, tak bych se na to vybodnul.

L..

  • ****
  • 302
    • Zobrazit profil
    • E-mail
Re:Reklamace chybné transakce v PayPal
« Odpověď #13 kdy: 30. 12. 2020, 08:35:19 »
Já teda žiju ve světě, kde je tohle default, nemusí se pro to dělat žádné speciální extra podpora...

Ano, matematici zkoumají i různé bizardní světy, ale nevím v tom, že by v takovém někdo žil :) Celou věc diktuje logika. Viz dále.

Pokud je problém s použitou technologií...


On je problém nejen s použitou technologií. Ale hlavně s logikou. Viz dále.

Obecně je podle mne zrovna u IB řešení vícenásobného přístupu poměrně snadné, ...

Ani smykem. Respektive, udělat to tak, aby to "nějak" spatlaně fungovalo opravdu jednoduché je. Ale v bankovnictví je třeba preciznosti a jasnosti. A udělat to pořádně je obtížné až nemožné. Viz dále.

Pokud je problém jenom v tom, že server drží stav klientského GUI, je zbytečné bránit uživateli používat dvě různé session – z pohledu serveru by to byly dvě různé instance s odlišným stavem (pokud by stav byl skutečně svázán se session a ne přímo s uživatelským účtem).

To typický naivní, začátečnická představa. A fatálně chybná. Začnu nejprve "klasickým" případem, kdy přistupujete v jedné session. Trik je v tom, uvědomit si, že tady není jeden stav, ale dva(*) stavy. Jeden stav databáze serveru a druhý stav UI (= to co má uživatel zobrazeno, v případě webu HTML elementy). Tyto stavy je třeba synchronizovat a je to práce UI aplikace - když pošle mutaci na backend, musí si zajistit občerstvení stavu tak, aby její stav reflektoval změny na serveru.

V případě, kdy pracujete ve dvou session paralelně, tak nastává problém. V session 1 něco změním, ale aplikace v session 2 to neví, tedy neaktualizuje svůj stav ze serveru a stavy se rozejdou. Do určité míry by to šlo řešit nějakým systémem push aktualizací, třeba GraphQL na tohle má subscriptions, nicméně to není automatické, je potřeba ty závislosti naprogramovat a tak se to používá spíš jen ve specializovaných případech. Pak se dá používat nějaký polling, ale ten zase bere prostředky navíc a stejně není stoprocentní, když uživatel "stihne kliknout" než se data zaktualizují.

Tedy v okamžiku, kdy se rozjedou stavy na klientovi a na serveru, máme problém. Někdo tu zmiňoval nákupní košík, ukáži to tedy na něm. Mějme košík, kde mám u položky akce "odstranit kus", "přidat kus", "nastavit počet kusů" a "odstranit položku". Dále je možno zaplatit.

Vezměme si teď následující scénáře:

A) Uživatel má v košíku 5ks, v jedné session položku odstraní, ve druhé klikne na "přidat kus". Tady je několik možností, kde každá dává smysl:

1) vyhodit chybu, že položka už neexistuje (detekce neplatné operace)
2) přidat položku a mít tam jeden kus (operaci definujeme jako "přidej 1 ks tohoto výrobku do košíku ať se děje co se děje")
3) přidat položku a mít tam celkem 6 kusů (podle toho, co uživatel viděl, než klikl)

Problém je v tom, že každý uživatel bude mít jiný, silný, názor na to, která cesta je správná a když se bude aplikace chovat jinak, bude nadávat. Úplně klasický případ tu předvedl Jenda:

(OMG! si v Tescu otevřete do tabů 10 výrobků a seznamů, že si je prohlídnete a naházíte do košíku, a ono si to obsah košíku navzájem přepíše!)

Třeba zmiňované Tesco se chová podle logiky v bodě 3 (košík viděl uživatel prázdný a přidal jednu položku => má tam tu jednu položku).  Nicméně Jenda by chtěl, aby se to chovalo podle logiky v bodě 2. Jenže to by pak zase jiný uživatel přišel s tím, jak to, že se mu v košíku objevují položky, které tam neviděl... Žádné řešení není správné.

S ostatními operacemi budou vznikat další kolize, ale ty vám nechám k analýze za domácí úkol :) Proberu ještě jednu věc související s placením:

B) Řekněme, že mám možnost placení uloženou kartou. Tedy uživatel dojde na stránku shrnutí objednávky, potvrdí ji a ta se zaplatí. Ale co když mezi zobrazením stránky a jejím odkliknutím přidá do košíku ještě další položku? Pak odklikne nějakou objednávku (a cenu) a zaplatí jinou! A tady už jde do tuhého, tady jde o peníze, takže uživatelé si na vás hezky smlsnou. (Podobná věc se stala právě zakladateli tohoto vlákna - potvrdil něco jiného, než co měl na obrazovce.)

Tenhle případ by se samozřejmě dal řešit - například tak, že při odkliknutí potvrzení pošle klient na server i objednávku
a pokud nesouhlasí s tam uloženým stavem, vyhodí se chyba, kterou klient nějak ošetří, například aktualizuje stav a napíše informaci, že se změnil a je třeba potvrdit znovu. A pak tedy ještě musí řešit, že třeba uživatel něco odebral, tím se dostal pod minimum zvoleného druhu dopravy a je třeba zvolit nový druh dopravy, tedy jít ve flow o stránku / dvě zpět - samé složitosti.
 
Už je to hrozné dlouhé, takže abych to shrnul: Je možné udělat aplikace, které umožňují paralelní práci, aby "nějak" fungovaly. Pokud se v nich převážně čte a na konzistenci obsahu až tak nezáleží, tak to docela funguje bez většího množství práce (třeba zrovna Root). Jenže pak jsou aplikace, kde narážíte na docela nepříjemné problémy, které musíte ošetřovat. Jen se podívejte, na co jsme narazili u pitomého nákupního košíku.

Pokud to chcete ošetřit pořádně, tak musíte:

1) Identifikovat jednotlivé scénáře (Kolik jste jich identifikovali jen u toho jednoduchého košíku? A jste si jistí, že jste identifikovali opravdu všechny? Můžete to nějak verifikovat?)
2) Definovat, jak se mají řešit (ale vždycky bude někdo nadávat, že to máte blbě)
3) Naprogramovat
4) Otestovat
5) V nových verzích aplikace myslet, jestli tím nemůžete způsobit nějakou další kolizi, ošetřovat je plus na tu kopu už existujících scénářů dělat regresní testy

Tedy u složitější aplikace pěkná kopa práce navíc, často pro podporu minoritních use-cases a uživatelé vám budou stejně nadávat. Proto složitější aplikace jako třeba IB práci ve víc paralelních session typicky nepodporují.

*) Kdybych měl být precizní, tak těch kopií stavů je ještě víc, v různých cache, frontend mívá svůj uložený datový model, který pak reflektuje v UI, ale synchronizace těchto stavů problém není, ty základní a z našeho pohledu zásadní jsou dva.
« Poslední změna: 30. 12. 2020, 08:40:01 od L.. »

Re:Reklamace chybné transakce v PayPal
« Odpověď #14 kdy: 30. 12. 2020, 09:17:32 »
Děkuji všem za odpovědi. Nakonec PayPal přiznal chybu a napsal, že peníze z chybné transakce mi pošlou zpět. Nevím, jestli kontaktovali příjemce a požádali ho o vrácení druhé platby, nebo to pošlou ze svého, každopádně jsem ale s verdiktem spokojený.

Sice to chvíli trvalo (asi týden, komunikace s roboty a poté se třemi lidmi), ale nakonec to dopadlo dobře. Ale kdybych si neudělal screenshot z platby, asi bych měl smůlu, jelikož informaci o tom, komu jsem peníze chtěl ve skutečnosti poslat, nikde u sebe asi uloženou neměli.

Díky všem!