Статья с пылу-жару так сказать!

Думаю, у многих был случай, когда Вы покупали QiWi-кошелёк, но через некоторое время случалась подобная история: при входе на кошелек нас просят сменить пароль с СМС подтверждением.​



Случайно я обнаружил одну интересную фичу: будучи авторизованным в другом кошельке, я перешёл на страницу оплаты товара через Qiwi и в предложенных вариантах оплаты, киви "подтянул" мой старый кошелёк.

Таким образом я выяснил, что данные сохраняются не в cookie, а в локальном хранилище браузера (LocalStorage). Данные в LocalStorage в отличии от cookie по умолчанию не имеют срока годности, поэтому теоретически, эти данные могут быть валидными очень долго, поэтому переводы можно будет делать даже спустя год или два.

Суть

Итак, если у нас сохранились данные авторизации от киви кошелька в LocalStorage браузера для страницы oplata.qiwi.com, тогда можно без проблем оплатить покупку;
Так же можно сделать перевод средств самому себе, через выставление счетов на оплату (тык) бесплатно и без комиссий, что я и сделал.


Инструкция
Как сохранить данные авторизации на странице оплаты киви из LocalStorage и потом использовать на любом браузере/устройстве, даже тогда, когда киви сбросит пароль от кошелька.
  1. Создаём с любого Qiwi кошелька счёт на оплату, например на 1 рубль.
    Прием переводов
  2. Переходим по ссылке на оплату, и авторизуемся через Qiwi кошелёк.
  3. Жмём F12, заходим в раздел "Application", далее "Local Storage", жмём на домен qiwi и копируем значения auth.refreshToken и auth.accessToken.
    Для firefox: F12 -> Хранилище ->Локальное хранилище -> домен qiwi


    Local Storage (oplata.qiwi.com)
  4. Всё, теперь в будущем если киви сбросит пароль от кошелька, а доступа к sim-карте не будет, можно будет с любого другого киви кошелька создать счёт на оплату, после чего перейти по ссылке на оплату с любого браузера/устройства, нажать F12, перейти в консоль и вставить туда следующий код:
  5. Код:
    localStorage.clear();
    localStorage.setItem('phone', '[B]номер киви без +[/B]');
    localStorage.setItem('auth.accessToken', '[B]значение accessToken[/B]');
    localStorage.setItem('auth.refreshToken', '[B]значение refreshToken[/B]');
    localStorage.setItem('auth.method', 'PASSWORD');
    localStorage.setItem('auth.clientId', 'checkout-oauth');
    localStorage.setItem('auth.tokenType', 'qw-checkout');
  6. После этого можно закрывать консоль и обновлять страницу.
    Должен высветится баланс на вашем киви кошельке и кнопка "оплатить" будет активна.
    Изменять нужно только первые 3 параметра! phone, auth.accessToken и auth.refreshToken. Можно добавить записи вручную через браузер, но это займёт больше времени.

    Кнопка перевести доступна (несмотря на сброс пароля и API ключа)

К сожалению если данные из LocalStorage были очищены, то вывести деньги уже не получится, но всё-таки если у вас случилась подобная проблема, перейдите на оплату счёта киви, возможно, у вас так же как и у меня подтянутся старые данные киви кошелька и получится вывести деньги.

Итоги​

Лучший и правильный вариант - заранее подготовиться и сохранить данные успешной авторизации из LocalStorage домена oplata.qiwi.com и быть уверенным почти на 100%, что в будущем деньги можно будет спасти даже если киви сбросит пароль.
Таким образом Вы можете быть защищены от нежелательных "Смена пароля", главное сделать пару простых действий, которые описаны в этой статье.