Консорциум W3C постепенно доводит до финальной стадии новый стандарт Payment Request API, который должен упростить пользователям процесс покупок товаров в интернет-магазинах. Больше не придётся вручную вводить платёжные данные при каждой покупке, потому что реквизиты банковских карточек хранятся в браузере и вводятся в форму автоматически (кроме кода CVV).

Это очень удобно: оплата карточкой совершается буквально в несколько нажатий кнопки. Ну и схемы мошенничества изменятся. Если раньше злоумышленники искали базы с кредитками на серверах магазинов, то теперь зловреды будут добывать карточки непосредственно из браузеров на локальных машинах пользователей.

4 октября опубликован черновик Candidate Recommendation, комментарии для которого принимают до 31 октября 2017 года.

Хотя стандарт Payment Request API ещё окончательно не утверждён, он уже включен по умолчанию в следующих браузерах:

  • Chrome 61 в десктопной версии
  • Chrome для Android с версии 53
  • Chrome для iOS с версии 62
  • Opera 48
  • Opera для Android с версии 48

Новые интерфейсы уже реализованы в браузере Edge, а в Firefox и Safari он находится на стадии разработки. Правда, чтобы использовать автооплату в Edge, нужно зарегистрировать аккаунт Microsoft Wallet, так что в реальности не у многих пользователей она работает. Другое дело — Chrome, который начал хранить реквизиты банковских карт самым первым среди всех браузеров. В версии для Android эта функция активирована в августе 2016 года, а в десктопной версии её включили по умолчанию в сентябре 2017-го, с выходом Chrome 61.

Когда пользователь делает заказ в интернет-магазине (нажимает кнопку «Купить»), магазин отправляет вызов API к браузеру пользователя, сообщая информацию о заказе. Браузер выводит всплывающее окно, в котором уже заполнены все поля с реквизитами платежа и адресом доставки (если они раньше уже вводились и хранятся в браузере). Если пользователь подтверждает информацию, то браузер, а не веб-сайт, связывается с платёжным оператором типа Visa и Mastercard, чтобы провести транзакцию. Когда получено подтверждение, браузер сообщает об успешном проведении платежа веб-сайту магазина, который прислал запрос — и тот может приступать к оформлению заказа, упаковке и отправке товара, зная при этом, что деньги уже перечислены на его банковский счёт.


Поддержку хранения банковских реквизитов в своих реализациях браузеров собираются внедриить Samsung и Facebook, поскольку обе компании крайне заинтересованы в упрощении платежей в интернете.

На GitHub открыт репозиторий с образцами кода, как внедрить на веб-сайте разные виды автоматических платежей через Payment Request API. Есть страница с демками. Там показан реальный процесс оплаты со стороны пользователя, примеры клиентского и серверного кода.



На первый взгляд схема с хранением платёжных реквизитов в браузере кажется опасной. Но она придумана как раз чтобы улучшить защиту конфиденциальных данных. Ведь теперь магазин не получает информации о номерах банковских карт клиентов. Соответственно, эти базы с карточками теперь не будут храниться в каждом магазине, что в прошлом неоднократно приводило к утечкам данных. Сейчас всё в руках пользователя — и он сам несёт за сохранность своих банковских карточек, которые хранятся в его личном браузере.

Исчезает необходимость в платёжных системах вроде PayPal, которые выполняли роль посредника. Теперь таким посредником будет технология Payment Request API и браузер.

Хотя во многих отношениях Payment Request API повышает общую безопасность электронной коммерции, но появляются и новые риски. Получается, что браузер знает слишком много: не только ваши сохранённые пароли, но ещё и финансовую информацию. Получив доступ к браузеру, теперь посторонний человек может совершить покупки в магазинах от вашего имени. Более того, у разработчиков браузеров есть соблазн использовать историю покупок в своих целях. Например, для точного таргетинга интернет-рекламы.

Вопрос в следующем: доверяют ли пользователи браузеру настолько, чтобы хранить в нём информацию о своих банковских карточках?

Комментарии (42)


  1. herrjemand
    08.10.2017 15:49
    +2

    Нет. W3C внедряет стандарт JS API для процессинга информации для заказа и оплаты продуктов. Хранение информации о кредитных картах уже было в браузерах давно.


    Советую посмотреть https://www.youtube.com/watch?v=U0LkQijSeko


  1. darthmaul
    08.10.2017 16:23
    +1

    Разработчики стиллеров уже потирают руки в предвкушении профита.


  1. Andronas
    08.10.2017 16:59
    +1

    Не понял в чем проблема с безопасностью. Мы ведь доверяем данные своих карт системам Apple Pay или Android pay.


    1. keydon2
      08.10.2017 21:31
      +10

      Нет, не доверяем.


      1. martin_wanderer
        09.10.2017 12:18

        В смысле не пользуетесь или там принципиально нет данных карты?


      1. Protos
        09.10.2017 14:49

        Что значит не доверяем, у меня apple требует ввод карты, без этого не скачивается и не обновляется софт из магазина apple


        1. alexover
          09.10.2017 15:05
          +1

          Не повезло Вам. На моем Android нормально все ставится без карт


        1. darthmaul
          09.10.2017 21:22
          +1

          Виртуальная карта с парой баксов на счету да и всё. Я переживаю не столько за взлом магазина эпл (проще уже слить карты с какого-нибудь инет магазина попроще), а за то, что случайно заплачу за какую-то in-app хрень.


        1. navion
          09.10.2017 21:58
          +1

          Раньше был вариант «другое» в вариантах оплаты и позволял нормально пользоваться без карты.


  1. read2only
    08.10.2017 17:11
    +4

    Это очень удобно: оплата карточкой совершается буквально в несколько нажатий кнопки.

    Как правило, всё что наиболее удобно — наименее безопасно.

    Ну и схемы мошенничества изменятся. Если раньше злоумышленники искали базы с кредитками на серверах магазинов, то теперь зловреды будут добывать карточки непосредственно из браузеров на локальных машинах пользователей.

    Вот это верно, будет удобно.


    1. cyberly
      08.10.2017 17:39
      +5

      >>… базы с кредитками на серверах магазинов…
      За это разработчику магазина обычно полагается бить по рукам. Магазину эти данные нужны только в момент совершения покупки и то, только для того, чтобы переслать их в платежный шлюз. Хранить их — это подставлять себя и клиентов.


      1. Akuma
        08.10.2017 23:23
        +2

        Магазин вообще не должен запрашивать данные карты, а клиент не должен их давать магазину. Для этого есть эквайринг и платежные агрегаторы.

        Если я в неизвестном интернет-магазине вижу, что именно магазин просит данные карты, я попробую найти другой магазин.


        1. TheDarkKRONOS
          09.10.2017 11:20

          Но если взять тот же Steam или GOG, то у них нет посредников, магазины сами запрашивают данные. Разве не так?


          1. Akuma
            09.10.2017 11:24

            Да, но и тот и другой — сильно известный сервис. А стали бы вы отдавать данные карты какому-нибудь vasya-lavka.ru? Я думаю лучше не стоит.


      1. kissarat
        09.10.2017 15:36

        Даже если магазину нужно хранить всю информацию о пользователе, то можно создать отдельно writeonly сервер, который будет эти данные только принимать. Во время введения данных, они будут отсылатся на этот сервер, но возможности ее читать с production сервера не будет


        1. athacker
          10.10.2017 12:55
          +1

          Для этого не нужен сервер, по такой схеме надёжнее в /dev/null сразу писать :-) А если где-то что-то сохраняется, то по-любому эту информацию можно прочитать. Так что не вариант.


  1. equand
    08.10.2017 17:36
    -2

    Пытаются залочить платежи на карты (древнее говно), пока криптовалюты только развиваются.

    Втрице вообще конкретненько продается последнее время. Сначала ДРМо, теперь карточки сделали стандартом, скоро сделают стандарт логгинга данных пользователя браузера.


    1. Fagot63
      08.10.2017 20:03

      Банки в большинстве очень закостенелая организация, трудно поддающиеся прогрессу. А если нашли дыру в безопасности, ни в коем случае не писать банку. В крайнем случае из другой страны. Было уже множество печальных случаев.


    1. superyarik
      09.10.2017 00:48

      У ДРМ в браузере есть и другая сторона, сейчас для просмотра сериальчика в какой-нибудь Италии нужно поставить на ПК их приложение, иначе не посмотреть. С дрм в браузере этих проблем уже не должно быть. Те, кто ДРМят контент будут делать это не зависимо от w3c, но степень геморойности для пользователя, вот вопрос.


    1. 9uvwyuwo6pqt
      10.10.2017 00:46

      >Сначала ДРМо, теперь карточки сделали стандартом, скоро сделают.
      DRM сначала для текста, а потом вообще для всей страницы.


  1. Goodkat
    08.10.2017 17:40
    +1

    Другое дело — Chrome, который начал хранить реквизиты банковских карт самым первым среди всех браузеров. В версии для Android эта функция активирована в августе 2016 года, а в десктопной версии её включили по умолчанию в сентябре 2017-го, с выходом Chrome 61.
    В Сафари данные моей кредитки хранятся уже пару лет.


    1. bizonwar
      08.10.2017 18:14
      +1

      Да и в десктопном хроме уж точно не с сентября 2017.


      1. Prototik
        08.10.2017 21:41
        +1

        Тут дело не в хранении, а о API для платежей.

        Да, браузеры могли хранить данные и раньше, но их функционал был в том, что они заполняли формы на сайтах этими данными.
        Теперь же есть api, с помощью которого сайты могут попросить сделать платёж туда-то, и сайты не получают информацию о карте.


        1. alan008
          09.10.2017 00:54
          +1

          Ниже пишут, что все-таки получают
          geektimes.ru/post/294177/#comment_10373003.


  1. ahdenchik
    08.10.2017 19:22
    +1

    Лучше бы внедрили стандартный API для ЭЦП.


  1. LexB
    08.10.2017 20:06
    +1

    На первый взгляд схема с хранением платёжных реквизитов в браузере кажется опасной. Но она придумана как раз чтобы улучшить защиту конфиденциальных данных. Ведь теперь магазин не получает информации о номерах банковских карт клиентов.
    Вот этого не понял, как проходит оплата если магазин не получает данные карты?
    Причем на видео на 21й секунде приводят json с данными карты. Если эти данные уходят не в магазин то куда?


    1. Akuma
      08.10.2017 23:25

      Скорее всего так же как и оплата через платежного агрегатора. Магазин только получает запросы на «такую-то сумму» и т.п.


    1. MasMaX
      09.10.2017 09:43

      Сразу в банк или в платежную систему.


  1. Valsha
    08.10.2017 20:37
    +1

    Немного не понятно одно.
    За примеры спасибо, посмотрел первый пример — googlechrome.github.io/samples/paymentrequest/credit-cards
    да, все красиво, мои кредитки показывает и дает платить, но не понятно что потом.
    Вот сделал я такую оплату у себя на сайте, а КУДА потом деньги приходят от юзеров что делали покупки?
    На мою кредитку/счет в банке?
    Спасибо.


    1. Theodor
      08.10.2017 23:29
      +1

      Тут наверное поможет предпоследнее демо emerald-eon.appspot.com


  1. keydon2
    08.10.2017 22:08
    +1

    Звучит как очередная дыра, усложняющая итак перегруженные интерфейсы веба.


  1. Akuma
    08.10.2017 23:34
    +1

    Как верно подметили выше — а куда уходят платежи то? Полюбому ведь есть какой-то агрегатор всего этого добра за некоторый (кстати, какой?) процент от суммы платежа.

    Налоги? Онлайн-кассы?

    Без третьей стороны невозможно будет «подписать» данные о платеже. Грубо говоря, та же Я.Касса использует секретный ключ для хеширования параметров запроса. Тут как магазин узнает подлинность платежа без «выписки» по счету?


    1. Akuma
      08.10.2017 23:38
      +1

      Плюс без третьей стороны как верить магазину?
      Например, когда я вижу известного платежного агрегатора, да тот же банк — я знаю, что мои деньги, как минимум, не пропадут бесследно. А тут… по крайней мере пока непонятно.


  1. mike_y_k
    09.10.2017 00:09
    +1

    Ну про PayPal они немного зря упомянули — его функция третьей стороны не потеряет актуальности. Даже с приходом криптовалют им останется роль арбитра.


    1. alan008
      09.10.2017 00:53
      -2

      Да уж забили все на этот PayPal лет 5 назад. Сейчас большинство оплат напрямую с карты.


      1. nidalee
        09.10.2017 08:26
        +1

        Каждый месяц плачу за VPS через PayPal. Ну и деньги с Upwork тоже на него выводил раньше.


      1. mike_y_k
        09.10.2017 18:03

        И сам PayPal существует вопреки забившим на него клиентам :D
        Если Вам лично он не нужен — остальные совсем не при чем…
        Кстати при прямом платеже и последующих проблемах — расхлебывать придётся в одиночку.
        Это только для соседнего магазина ещё прокатит… ;).


  1. appsforlife
    09.10.2017 00:46
    +3

    Меня тоже очень заинтересовала тема с оплатой посредством браузера, полез искать детали. Вот статья от гугла: developers.google.com/web/fundamentals/payments, там все куда более прозаично:

    After the user authorizes the transaction, all the necessary payment details are sent directly back to the site. For example, for a credit card payment, the site will get back a card number, a cardholder name, an expiration date, and a CVC.


    То есть этот новый апи просто заменяет форму оплаты на сайте. Вместо того, чтобы заполнять кучу полей в каждый раз разной форме оплаты на очередном сайте, покупатель просто нажимает «купить», сайт формирует стандартизированный чек на оплату и отдает его браузеру. Браузер показывает пользователю стандартизированную форму оплаты, где уже вбита часть нужной информации, которую браузер знает. Если все ок и пользователь соглашается оплатить, то браузер выдает сайту стандартизированный ответ, содержащий то, что пользователь видел в этой форме.

    Вобщем пейпал пока может спать спокойно, карты по прежнему будут процесситься на сайтах магазинов. Смысл нововведения в том, чтобы дать возможность быстро купить что-нибудь с любого девайса, так как заполнять форму оплаты на умном паяльнике довольно сложно, а кликнуть «ну да, я не против» — легко.

    А жаль, идея в статье была озвучена интересная…


  1. Sly_tom_cat
    09.10.2017 01:04
    +2

    Самого главного и не рассказали…

    Payment Request API это интерфейс браузера. А вот браузер сам (на мобильном устройстве) лезет за данными карт и токенами в приложение (по другому API).

    Да Payment Request API может работать с данными сохраненными в самом браузере, но это только частный случай. На андроиде с установленным приложением AndroidPay карточки или их токены берутся браузером из него. А там вам и шифрование и все дела.

    Именно в такой цепочке (Payment Request API — Chrome for Android — AndroidPay App) сейчас работают платежи AndroidPay на сайте HeadHanter (например) и ешё некоторых других (платежи идут через Assist на стороне которого и реализована поддержка платежей AndroinPay и SamsungPay).


  1. andrey_aksamentov
    09.10.2017 05:17

    Почему бы не использовать токены с данными карты для оплаты?
    Вставил — оплатил — вынул — закрыл в сейф. Зачем хранить в браузере такую информацию?


  1. Dmitry_7
    09.10.2017 14:25

    Яндекс браузер давно предлагает запомнить данные карты. Но я ему не доверяю


  1. mike_y_k
    09.10.2017 18:09

    Как появится окончательная реализация надо будет посмотреть и попробовать.
    Заодно разобраться с механизмами и безопасностью.