На 30 августа 2026 года PayPal уже опубликовал отдельные материалы по настройке JavaScript SDK v6 и переходу с v5 на v6 — это зафиксировано в официальном руководстве по миграции PayPal. Но появление кнопки не означает завершённую миграцию. На этой неделе мы рекомендуем принять обновление только после проверки кнопки, окна входа, одобрения, отмены, серверного захвата и результата в заказе. Если стабильного macOS для повторяемой проверки нет, временно используйте удалённый Mac и сохраните рабочую ветку для отката.
Эта статья предназначена для трёх ролей:
- руководителя, который принимает решение о выпуске новой оплаты;
- оператора или тестировщика, который проверяет Safari и собирает доказательства;
- внутреннего либо внешнего разработчика, отвечающего за PayPal Checkout, серверные запросы и обработку ошибок.
Важное ограничение: официальные материалы PayPal подтверждают наличие настроек, миграционных инструкций и требований к тестированию. Они не подтверждают, что v5 повсеместно отключена или что для всех проектов существует единый обязательный срок перехода.
Миграция PayPal JavaScript SDK v6: что именно считается готовым
Приёмка должна охватывать не один экран, а всю цепочку оплаты. В неё входят клиентский компонент, серверная логика заказа и состояние покупателя после возврата из платёжного окна.
Сначала составьте карту входов:
- карточка товара;
- корзина;
- основная страница оформления;
- отдельная кнопка на странице подписки;
- быстрый заказ;
- промо-страница или локализованный американский лендинг.
Для каждого входа запишите:
- текущий адрес страницы;
- версию SDK, которая реально загружается;
- способ инициализации;
- рабочий результат старой интеграции;
- владельца исправления;
- условие отката;
- идентификатор тестового заказа.
Не доверяйте только исходному коду шаблона. Откройте Safari Web Inspector и проверьте фактический сетевой запрос. В проекте может остаться старая страница, кешированный скрипт или второй компонент, который продолжает работать по прежней схеме. Инструкция PayPal по подключению JavaScript SDK помогает сопоставить параметры загрузки с тем, что действительно происходит в браузере.
Отдельно сопоставьте три состояния:
- кнопка видна;
- покупатель может пройти авторизацию и одобрение;
- сервер подтвердил захват и создал заказ.
Только третье состояние связано с фактической готовностью к исполнению заказа. Успешная анимация или возврат на страницу магазина не заменяют серверную проверку.
Кнопка отображается, но оплата ещё не принята
В песочнице начните с минимального сценария. Не подключайте сразу все способы оплаты и рекламные виджеты. Цель первого прохода — понять, загружается ли компонент PayPal Checkout и не ломает ли миграция страницу.
Проверьте четыре входа:
- первый визит на страницу;
- ручное обновление;
- возврат из корзины;
- повторный вход в оформление после неудачной попытки.
При каждом проходе сохраняйте:
- снимок экрана;
- URL страницы;
- время проверки;
- ошибки консоли;
- запрос загрузки SDK;
- ответ инициализации;
- видимые способы оплаты.
Состав отображаемых способов оплаты не следует считать универсальным. Он может зависеть от страны, валюты, устройства, настроек покупателя и доступности конкретного метода. Фиксируйте фактический результат тестового аккаунта, а не обещайте, что тот же набор увидит каждый покупатель.
Что проверять при пустом месте вместо кнопки
Если PayPal v6 в Safari не показывает кнопку, двигайтесь от наблюдаемого факта к причине:
- убедитесь, что запрос к SDK не получил ошибку;
- проверьте, не загружен ли скрипт дважды;
- сравните момент инициализации с моментом появления контейнера;
- проверьте клиентские параметры и окружение песочницы;
- изучите Content Security Policy;
- повторите тест после очистки данных только для тестового домена;
- сравните результат с другим браузером.
Инструменты разработчика Safari нужно включить заранее. Apple описывает путь к функциям разработчика и Web Inspector в официальной документации Safari Developer Tools. В отчёте указывайте, какой именно запрос отсутствует или завершается ошибкой. Формулировка «кнопка не работает» для передачи подрядчику слишком неточна.
Опыт приёмки: повторная загрузка после возврата из корзины часто выявляет проблему, которую не видно при первом визите. Поэтому один успешный вход не закрывает проверку инициализации.
Окно входа: чистый Safari против изменённых настроек
Окно авторизации нужно проверять отдельно от кнопки. В Safari изменяйте только одну переменную за проход:
- состояние входа покупателя;
- данные сайта;
- настройки межсайтового отслеживания;
- блокировку всплывающих окон;
- расширения;
- наличие предыдущей незавершённой сессии.
Сначала используйте чистый профиль с минимальным числом расширений. Затем повторите сценарий в обычном рабочем профиле. Это позволит отделить дефект интеграции от локальной настройки браузера.
Нужны следующие результаты:
- окно открывается;
- покупатель закрывает его сам;
- Safari блокирует окно;
- вход прерывается;
- покупатель возвращается без одобрения;
- после ошибки доступна повторная попытка.
Проверьте настройки всплывающих окон по руководству Apple для Safari, но не превращайте разрешение всех окон в рекомендацию для покупателей. Если платёж проходит только после отключения встроенной защиты или изменения параметров конфиденциальности, это не пройденный сценарий, а сигнал для технического разбора. Описание соответствующих механизмов есть в документации Apple о конфиденциальности Safari.
Стабильный удалённый Mac помогает повторять этот тест в одинаковом браузерном профиле. Но он не меняет политику PayPal и не гарантирует допуск операции. Среда нужна для диагностики, а не для обхода проверки личности, ограничений аккаунта или правил платёжной системы.
Одобрение и отмена: проверяем состояние магазина
После входа выполните два разных сценария: одобрение и добровольная отмена. Не объединяйте их в один тест, иначе команда может принять возврат без оплаты за успешное завершение.
При одобрении зафиксируйте:
- идентификатор заказа PayPal;
- результат клиентского обработчика;
- запрос магазина на сервер;
- ответ сервера;
- изменение статуса корзины;
- итоговую запись в панели магазина.
При отмене проверьте:
- сохраняется ли корзина;
- не очищается ли товар преждевременно;
- появляется ли понятное сообщение;
- можно ли повторить платёж;
- не создаётся ли пустой заказ;
- не отправляется ли товар в обработку.
Точно так же проверьте возврат после закрытия окна и после ошибки загрузки компонента. Пользователь должен понимать, что делать дальше. Скрытая ошибка в консоли не является интерфейсом восстановления.
В материалах PayPal по расширенной настройке SDK следует сверить используемый способ обработки клиентских событий и серверных действий. Код в статье намеренно не приводится целиком: для приёмки важнее подтвердить фактические запросы и состояния, чем скопировать пример без учёта архитектуры магазина.
Серверный capture важнее страницы успеха
Главная граница ответственности проходит между браузером и сервером. Браузер может показать, что покупатель одобрил платёж, но это ещё не означает завершённый capture или созданный заказ.
Технический участник приёмки должен сопоставить:
- создание PayPal-заказа;
- одобрение покупателем;
- запрос на захват;
- ответ API;
- внутренний статус заказа;
- запись об оплате;
- уведомление или вебхук, если он используется.
Оператор проверяет то же событие с другой стороны: виден ли заказ в независимой системе магазина и совпадает ли он с активностью в тестовой среде PayPal. Для диагностики ошибок используйте официальный обзор ошибок PayPal API, а не догадки по одному сообщению на экране.
Обязательные отрицательные сценарии:
- покупатель отменил оплату;
- платёжный метод отклонён;
- сервер вернул ошибку;
- клиент повторил действие;
- сеть прервалась после одобрения;
- страница была обновлена до получения результата.
Все отрицательные проверки выполняйте только с официальными тестовыми средствами и данными песочницы. Не используйте реальные карты для имитации отказов. Если PayPal показывает успешную активность, но магазин не создаёт заказ, проверяйте серверную идемпотентность, обработку ответа и границу между capture и созданием заказа.
Как принять американский Safari-сценарий
Финальный прогон должен проходить в изолированном реальном Safari. Сравнение с другим браузером полезно для локализации причины, но не может заменить Safari-приёмку. Таблица поддержки браузеров PayPal должна быть проверена перед публикацией и при каждом изменении требований.
Зафиксируйте тестовые переменные:
- американская посадочная страница;
- целевая валюта;
- язык интерфейса;
- товар с обычной ценой;
- товар с доставкой;
- чистая сессия;
- тестовый покупатель песочницы;
- версия Safari;
- сетевой маршрут;
- время начала и окончания.
Не делайте вывод о реальном рынке по одной песочнице. Среда должна отвечать вопросу: повторяется ли пользовательский путь и подтверждается ли результат на сервере. Она не должна использоваться для обхода географических правил, проверки аккаунта или требований PayPal.
Если собственной машины нет, можно рассмотреть удалённый Mac с американским узлом для повторяемого теста. Перед арендой проверьте, кто получает доступ, как очищаются данные сайта и каким способом команда сохраняет обезличенные доказательства. Для другого сетевого маршрута можно сравнить американский западный узел Mac, но разница маршрутов сама по себе не доказывает дефект PayPal.
Приёмочная матрица перед выпуском
| Сценарий | Что считается доказательством | Решение при сбое |
|---|---|---|
| Первая загрузка кнопки | Запрос SDK, консоль, видимый компонент | Остановить выпуск и проверить инициализацию |
| Повторный вход | Кнопка не дублируется, контейнер корректно обновляется | Проверить повторную загрузку и состояние страницы |
| Вход покупателя | Окно открывается, закрытие даёт понятный возврат | Проверить Safari и обработчики отмены |
| Одобрение | Есть идентификатор, клиентский результат и серверный ответ | Не считать страницу успеха достаточной |
| Отмена | Корзина сохранена, повторная попытка доступна | Исправить состояние возврата |
| Capture | Сервер подтвердил захват и связал его с заказом | Не выпускать, пока проблема не разобрана |
| Ошибка | Есть сообщение и безопасный повтор | Добавить fallback или понятную инструкцию |
| Американский Safari | Полный путь повторён с обезличенными доказательствами | Выпускать только ограниченно либо отложить |
Чек-лист доказательств для внешней и внутренней сдачи
Перед тем как подписывать результат подрядчика, мы отмечаем пункты только после фактической проверки:
- [ ] Для каждой страницы записана реально загружаемая версия SDK.
- [ ] Старая рабочая версия сохранена как точка отката.
- [ ] Проверены первый вход, обновление, возврат из корзины и повторное оформление.
- [ ] Сохранены сетевой запрос SDK и ошибки Safari Web Inspector.
- [ ] Проверены открытие, закрытие и блокировка окна входа.
- [ ] Настройки Safari менялись по одной, а не одновременно.
- [ ] Отдельно выполнены одобрение и отмена платежа.
- [ ] Состояние корзины проверено после отмены и ошибки.
- [ ] Идентификатор PayPal сопоставлен с внутренним заказом.
- [ ] Серверный capture подтверждён ответом API.
- [ ] Проверены отказ, серверная ошибка и повторное действие.
- [ ] Американская страница проверена в изолированном Safari.
- [ ] Скриншоты обезличены.
- [ ] В отчёте указаны дата, версия браузера, среда и итог заказа.
- [ ] Решение о выпуске подписано ответственным за бизнес и техническую часть.
Последний пункт важен для внешней разработки. Если подрядчик показывает только скриншот зелёной страницы, запросите журнал запроса, идентификатор заказа и серверный статус. Без этой связки результат нельзя считать готовым к исполнению заказа.
Напоминание: PayPal указывает в руководстве для продуктивной среды, что настройки для production нужно проверять отдельно. Успешный тест в песочнице не разрешает автоматически переносить непроверенные ключи, URL и серверные условия в боевой магазин.
| Условие | Что делать |
|---|---|
| Все ключевые сценарии прошли, capture подтверждён, доказательства полные | Выпускать по утверждённому плану |
| Safari проходит, но один отрицательный сценарий не обработан | Отложить или выпустить только после добавления понятного возврата |
| Кнопка работает, но серверный заказ не создаётся | Не выпускать, вернуть задачу технической команде |
| Работает только после отключения защиты Safari | Считать проблему нерешённой |
| Есть только тест в другом браузере | Повторить полноценную проверку Safari |
| Нет стабильного macOS и американского сетевого маршрута | Взять временный удалённый Mac, затем повторить матрицу |
Что выбрать для команды: локальный Mac, удалённый Mac или обычный браузер
Локальная машина удобна, если команда постоянно тестирует Safari, имеет контролируемые профили и может безопасно разделять рабочие данные. Но один общий компьютер создаёт очереди, смешивает cookies и затрудняет повтор сценария другим сотрудником.
Обычный другой браузер полезен как контрольная группа. Он быстро показывает, что серверная часть в целом отвечает. Однако успех в нём не доказывает готовность Safari.
Удалённый Mac рационален для короткого цикла приёмки, внешней команды или распределённого отдела. Он даёт отдельную macOS-сессию, повторяемый браузерный профиль и возможность проверить американский сетевой маршрут. При этом остаются ограничения: удалённое подключение не заменяет реальное устройство покупателя, не гарантирует платёж и требует дисциплины в очистке данных. Вопросы длительности аренды и доступа лучше уточнить до запуска через условия заказа удалённого Mac.
Итог для решения о выпуске
Миграция PayPal JavaScript SDK v6 в 2026 году должна приниматься как проверка цепочки, а не как визуальная проверка кнопки. Пока не подтверждены окно входа, отмена, возврат, серверный capture и запись заказа, обновление остаётся незавершённым. Единый срок принудительного отказа от v5 нельзя объявлять без официального сообщения PayPal, поэтому сохраняйте рабочую ветку и фиксируйте актуальность документации перед выпуском.
Если текущий вариант — один общий локальный Mac или проверка только в другом браузере, у него есть три реальных недостатка: смешиваются данные сессий, трудно повторить американский маршрут, а доказательства зависят от одного рабочего места. Временная аренда удалённого Mac у MESHLAUNCH удобнее для короткой приёмки, когда нужен отдельный Safari, контролируемый доступ и повторяемый сценарий без покупки дополнительного оборудования. После завершения матрицы команда сможет спокойно решить, нужен ли постоянный Mac, ограниченный выпуск или ещё один цикл исправлений.