2009-04-15 paypal
by Vasil KolevТова е бъг, намерен от фирмата на един приятел (който предпочита да остане анонимен по ред причини) в интерфейса за разплащания на PayPal, по-точно частта ExpressCheckout.
Случило се така, че в един момент при разплащане взели от един потребител вместо 10 – 1000 долара. Не било ясно защо е станало така, гледали кода, чудили се, след което какво се оказало…
Интерфейсът работи на следния принцип – сайтът-търговец прави един POST към PayPal, после redirect-ва потребителя към тях, за да се оторизира и т.н. и когато потребителя бъде redirect-нат обратно, сайтът-търговец пуска още една заявка, за да завърши плащането. Като идея изглежда добре, като изключим следните два проблема:
1) Потребителя никъде не вижда докато се оторизира КОЛКО пари дава, и
2) И в двете заявки от сайтът-търговец се подава сума. Взима се в предвид втората.
Така реално потребителят никога няма да разбере колко пари му искат, докато не му ги вземат и след това влезе в account-а си. Поне според мен това е рядко глупаво (хората после си намерили грешката, втория път подавали парите вместо в долари в центове). Не мисля да си правя account там :)
(p.s. до хората, които знаят за коя фирма става въпрос – може ли да си мълчите по въпроса, така и така не беше лесно да убедя човека да разкажа случката :) )
April 15th, 2009 at 12:19
express checkout върви с paypal pro, което се дава много трудно и не всеки може да се докопа до него. С него върви и Direct Payment, с който можеш да взимаш credit card детайлите на твоята страница и да ги постваш към PP, които връщат резултат дали транзакцията е минала. Сам разбираш, че в този случай търговецът може да пише, че ще таксува клиента с $5, а да му вземе $500. Но когато клиентът забележи, ще се оплаче и ще спрат PP Pro акаунта на търговеца и ще го загази.
Същото е с Express Checkout. Целият контрол се дава на търговеца и от него се очаква системата му да работи коректни и да визуализира коректни цени и да не подвеждат клиентите. Не харесвам PP, но не виждам с какво са виновни за това, че търговецът е тъп и не е чел и не е тествал и по този начин е нарушил terms-овете.
И бтв предпочитам да ползвам PayPal за разплащания, отколкото да си давам CC-то на всеки търговец.
April 15th, 2009 at 12:27
@asdf, при express контрола е при тях. Колкото до глупостта – защо никъде не показват на потребителя колко пари се взимат? И защо ДВА пъти се подава колко пари ще се вземат, и се взима втория? Няма грам логика… Моя опит с който и да е payment processor показва, че винаги се показва на клиента колко пари му се взимат, ВИНАГИ.
Иначе да, грешката е тъпа и идва не от липса на тестове (щото съм гледал част от тестовете им), а от грешни единици на едно място и тъпо reuse на код (ужасно смешно се оказа).
April 15th, 2009 at 13:43
Не пише сума, защото идеята на Express Checkout е клиентът да отиде на сайта на PayPal и да авторизира търговеца. По дефиниция там не пише суми. Също да ти обърна внимание, че може да създадеш recurring плащания, без клиента да разбере – само ще пише един дребен текст:
I authorize the merchant to use the available funding sources in my PayPal account based on PayPal’s default preferences for the recurring payments above
Твоят опит е такъв, вероятно защото не си имал опит с merchant accounts. Ако се ползва стандартния PayPal, там си пише сумите и всичко.
А колкото до двете суми – в началото и в края – и аз не знам каква е логиката, но ги подавам винаги еднакви и не съм имал такива проблеми. Не виждам защо да е бъг, при положение, че е добре документирано :)
April 15th, 2009 at 13:52
@asdf, хм, за merchant account-а вероятно си прав :) Ама по това, което аз съм виждал (ние ползваме малко paypal за разни неща) няма друг нормален работещ вариант за разплащания през тях. Сигурно за това ми се вижда странно просто потребителя да казва “позволявам на тоя да взима колкото реши пари от мене”.
Иначе – къде е документирано? Аз поне не видях такова нещо :)
April 15th, 2009 at 14:22
ХЕЙ ХЕЙ,
Това няма как да се случи с Moneybookers :) Move your brains (!)
April 15th, 2009 at 14:34
@Пижон, много малко хора употребяват monebookers :) Иначе… финансова институция ли е, винаги може да се очакват сериозни простотии, поне моя опит това показва.
May 5th, 2009 at 23:52
Интересен, но и нормален случай. Не можеш да виниш търговеца за некомпетентността си, а когато става въпрос за повтарящи се плащания, тогава напрактика регулярно търговеца може да взема различна сума пари от клиента без повторна авторизация ..
За съжаление, мисля, че в БГ все още не е имплементирана тази функционалност от страна на Булбанк, ДСК или другите банки сертифицирани по VBV / 3D Secure.