ВВЕДЕНИЕ
PayPal предоставляет “песочницу” — среду, в которой разработчики могут отлаживать работу PayPal в новых приложениях (например, в вашей новой системе hotspot/UM), не совершая настоящих транзакций по кредитным картам. В общем, User Manager — это сложный подсистема с крайне скудной документацией. Я потратил слишком много времени, пытаясь использовать PayPal sandbox для тестирования моей new hotspot/UM системы из-за скрытых нюансов в UM, из-за которых всё постоянно падало.
Решил поделиться своими заметками с более практическим и ориентированным на задачи подходом, в отличие от официальной UM-документации, чтобы помочь другим.
НАСТРОЙКА PAYPAL SANDBOX
Очевидно, что инструкции по расположению ссылок на сайте PayPal быстро устаревают после очередных изменений сайта. Сейчас он сильно отличается от того, что был два года назад, когда я это делал в последний раз.
Зайдите на developer.paypal.com и войдите, используя ваш существующий бизнес ID. Перейдите в раздел Applications. Игнорируйте два видимых варианта (REST и Classic). Вместо этого перейдите в левую колонку и нажмите «Sandbox accounts».
Вам понадобится как минимум два sandbox-аккаунта: бизнес-аккаунт с тем же именем, что и ваш реальный бизнес-аккаунт (или любое имя, на которое вы планируете отправлять платежи), и аккаунт тестового пользователя hotspot, который будет платить на другой аккаунт.
Придется пройти почти все экраны создания аккаунта, как если бы это был реальный аккаунт PayPal, особенно для бизнес-аккаунта. Мне пришлось сначала создать бизнес-аккаунт как личный, а потом “обновить” его до бизнес-аккаунта, потому что прямое создание бизнес-аккаунта — тупик.
Для верификации банковского счёта можно ввести любой набор цифр, а вот с кредитной картой так не получится. (Потом я обнаружил, что sandbox выдает пару фиктивных кредиток, но их нужно искать в разделе аккаунта.)
Нужно тщательно настроить все фейковые аккаунты до начала тестирования, иначе можете отправить платежи на почту, которая ещё не настроена на прием платежей. PayPal будет считать такие платежи успешными, но «односторонними» — значит, получатель их ещё не получил, так как его аккаунт не готов принимать платежи. User Manager не считает односторонние платежи успешными и не создаст аккаунты hotspot-пользователей.
Стоит протестировать процесс платежей в sandbox вне UM, чтобы убедиться, что получатель действительно видит платежи, прежде чем запускать тестирование hotspot-системы.
После создания аккаунта, до обновления, зайдите в настройки и переключите формат писем на простой текст — если оставить HTML (по умолчанию), все входящие письма из sandbox будут неразборчивым баз64-кодом, который невозможно понять.
Поскольку часть процесса апгрейда аккаунта до бизнес-счёта — это подтверждение по ссылке или коду из письма, и эти письма придут нечитаемыми, вы испортите аккаунт так, что без помощи PayPal его не исправить.
Sandbox также позволяет заранее закинуть на аккаунт тестового пользователя «фейковые деньги» — обязательно используйте эту возможность, чтобы не вводить фейковые данные карт на каждом тесте.
НАСТРОЙКИ USER MANAGER ДЛЯ PAYPAL («ROUTER» — это DNS-имя или IP вашего роутера с User Manager)
Этот раздел применим как для sandbox, так и для боевого окружения PayPal. Упоминание полей форм относится к ROS 5 или 6.
Хотя несколько исходных данных User Manager нужно создать в /tool/user-manager (в других гайдах объясняется как), большинство параметров задаётся через веб-интерфейс по адресу .
Начните в Settings / Payment Gateways. Включите PayPal. Введите email аккаунта, на который хотите получать платежи.
Поле «return URL» — это НЕ PayPal notify_url, который PayPal использует для уведомлений в UM, а страница, на которую пользователь будет перенаправлен после оплаты.
Сам notify_url задаётся в записи клиента под названием «Public host». PayPal принимает и DNS-имя, и IP, и проверяет транзакцию, посылая POST-запрос на http(s)://{that-value}/user?...
Убедитесь, что http(s)://{that-value}/user доступен из интернета, чтобы PayPal мог его достучаться.
(Любопытный момент: поле «Name for Users» в настройках профиля описано как «описательное имя, которое видит пользователь при входе на свою страницу», но вместо него пользователь увидит обычное поле Name в форме регистрации. Зато «Name for Users» отображается в счёте, который PayPal отправляет пользователю hotspot.)
ПРОЦЕСС ТРАНЗАКЦИЙ В USER MANAGER
Когда новый hotspot-пользователь оплачивает через экран PayPal, PayPal посылает POST-запрос на http(s)://{customer-public-host-value}/user?..., информируя UM о результате оплаты — успешна она или нет.
Если PayPal показывает успех, UM дополнительно проверяет подлинность сообщения, посылая https-запрос напрямую на с целью проверки статуса платежа.
Эта повторная проверка нигде не документирована и обычно скрыта от пользователя. Если PayPal подтверждает платёж, UM создаёт аккаунт hotspot-пользователя; если нет — записывает в лог ошибку.
Эта дополнительная проверка осложняет использование sandbox, если не знать, как её обойти.
КАК ЗАПУСТИТЬ SANDBOX
Когда все фейковые аккаунты в sandbox PayPal готовы, можно перенаправить все операции по новым платежам UM в sandbox, просто изменив одну строку в um/signup_pay_form.html.
Измените строку на
Теперь все страницы регистрации новых аккаунтов будут идти через sandbox вместо живого сайта PayPal.
Также нужно внести одно дополнительное изменение: из-за повторной проверки UM, все платежи будут проваливаться, пока вы не создадите статическую DNS-запись на роутере UM для с текущим IP адресом «sandbox.paypal.com».
Это заставит повторную проверку UM обращать к sandbox, где платежи будут успешно подтверждаться.
Важное следствие этого способа: тестовая версия UM должна работать на отдельном роутере, не связанном с реальными пользователями.
Очевидно, что перенаправлять весь трафик с настоящего сайта на sandbox нельзя — это нарушит работу живых пользователей. Только сам UM должен видеть “заражённый” DNS.
Я для тестов запускаю UM на отдельном RB750, который ни для чего другого не используется.
Надеюсь, это поможет всем, кто пытается отлаживать новую hotspot-систему с биллингом PayPal.
PayPal предоставляет “песочницу” — среду, в которой разработчики могут отлаживать работу PayPal в новых приложениях (например, в вашей новой системе hotspot/UM), не совершая настоящих транзакций по кредитным картам. В общем, User Manager — это сложный подсистема с крайне скудной документацией. Я потратил слишком много времени, пытаясь использовать PayPal sandbox для тестирования моей new hotspot/UM системы из-за скрытых нюансов в UM, из-за которых всё постоянно падало.
Решил поделиться своими заметками с более практическим и ориентированным на задачи подходом, в отличие от официальной UM-документации, чтобы помочь другим.
НАСТРОЙКА PAYPAL SANDBOX
Очевидно, что инструкции по расположению ссылок на сайте PayPal быстро устаревают после очередных изменений сайта. Сейчас он сильно отличается от того, что был два года назад, когда я это делал в последний раз.
Зайдите на developer.paypal.com и войдите, используя ваш существующий бизнес ID. Перейдите в раздел Applications. Игнорируйте два видимых варианта (REST и Classic). Вместо этого перейдите в левую колонку и нажмите «Sandbox accounts».
Вам понадобится как минимум два sandbox-аккаунта: бизнес-аккаунт с тем же именем, что и ваш реальный бизнес-аккаунт (или любое имя, на которое вы планируете отправлять платежи), и аккаунт тестового пользователя hotspot, который будет платить на другой аккаунт.
Придется пройти почти все экраны создания аккаунта, как если бы это был реальный аккаунт PayPal, особенно для бизнес-аккаунта. Мне пришлось сначала создать бизнес-аккаунт как личный, а потом “обновить” его до бизнес-аккаунта, потому что прямое создание бизнес-аккаунта — тупик.
Для верификации банковского счёта можно ввести любой набор цифр, а вот с кредитной картой так не получится. (Потом я обнаружил, что sandbox выдает пару фиктивных кредиток, но их нужно искать в разделе аккаунта.)
Нужно тщательно настроить все фейковые аккаунты до начала тестирования, иначе можете отправить платежи на почту, которая ещё не настроена на прием платежей. PayPal будет считать такие платежи успешными, но «односторонними» — значит, получатель их ещё не получил, так как его аккаунт не готов принимать платежи. User Manager не считает односторонние платежи успешными и не создаст аккаунты hotspot-пользователей.
Стоит протестировать процесс платежей в sandbox вне UM, чтобы убедиться, что получатель действительно видит платежи, прежде чем запускать тестирование hotspot-системы.
После создания аккаунта, до обновления, зайдите в настройки и переключите формат писем на простой текст — если оставить HTML (по умолчанию), все входящие письма из sandbox будут неразборчивым баз64-кодом, который невозможно понять.
Поскольку часть процесса апгрейда аккаунта до бизнес-счёта — это подтверждение по ссылке или коду из письма, и эти письма придут нечитаемыми, вы испортите аккаунт так, что без помощи PayPal его не исправить.
Sandbox также позволяет заранее закинуть на аккаунт тестового пользователя «фейковые деньги» — обязательно используйте эту возможность, чтобы не вводить фейковые данные карт на каждом тесте.
НАСТРОЙКИ USER MANAGER ДЛЯ PAYPAL («ROUTER» — это DNS-имя или IP вашего роутера с User Manager)
Этот раздел применим как для sandbox, так и для боевого окружения PayPal. Упоминание полей форм относится к ROS 5 или 6.
Хотя несколько исходных данных User Manager нужно создать в /tool/user-manager (в других гайдах объясняется как), большинство параметров задаётся через веб-интерфейс по адресу .
Начните в Settings / Payment Gateways. Включите PayPal. Введите email аккаунта, на который хотите получать платежи.
Поле «return URL» — это НЕ PayPal notify_url, который PayPal использует для уведомлений в UM, а страница, на которую пользователь будет перенаправлен после оплаты.
Сам notify_url задаётся в записи клиента под названием «Public host». PayPal принимает и DNS-имя, и IP, и проверяет транзакцию, посылая POST-запрос на http(s)://{that-value}/user?...
Убедитесь, что http(s)://{that-value}/user доступен из интернета, чтобы PayPal мог его достучаться.
(Любопытный момент: поле «Name for Users» в настройках профиля описано как «описательное имя, которое видит пользователь при входе на свою страницу», но вместо него пользователь увидит обычное поле Name в форме регистрации. Зато «Name for Users» отображается в счёте, который PayPal отправляет пользователю hotspot.)
ПРОЦЕСС ТРАНЗАКЦИЙ В USER MANAGER
Когда новый hotspot-пользователь оплачивает через экран PayPal, PayPal посылает POST-запрос на http(s)://{customer-public-host-value}/user?..., информируя UM о результате оплаты — успешна она или нет.
Если PayPal показывает успех, UM дополнительно проверяет подлинность сообщения, посылая https-запрос напрямую на с целью проверки статуса платежа.
Эта повторная проверка нигде не документирована и обычно скрыта от пользователя. Если PayPal подтверждает платёж, UM создаёт аккаунт hotspot-пользователя; если нет — записывает в лог ошибку.
Эта дополнительная проверка осложняет использование sandbox, если не знать, как её обойти.
КАК ЗАПУСТИТЬ SANDBOX
Когда все фейковые аккаунты в sandbox PayPal готовы, можно перенаправить все операции по новым платежам UM в sandbox, просто изменив одну строку в um/signup_pay_form.html.
Измените строку на
Теперь все страницы регистрации новых аккаунтов будут идти через sandbox вместо живого сайта PayPal.
Также нужно внести одно дополнительное изменение: из-за повторной проверки UM, все платежи будут проваливаться, пока вы не создадите статическую DNS-запись на роутере UM для с текущим IP адресом «sandbox.paypal.com».
Это заставит повторную проверку UM обращать к sandbox, где платежи будут успешно подтверждаться.
Важное следствие этого способа: тестовая версия UM должна работать на отдельном роутере, не связанном с реальными пользователями.
Очевидно, что перенаправлять весь трафик с настоящего сайта на sandbox нельзя — это нарушит работу живых пользователей. Только сам UM должен видеть “заражённый” DNS.
Я для тестов запускаю UM на отдельном RB750, который ни для чего другого не используется.
Надеюсь, это поможет всем, кто пытается отлаживать новую hotspot-систему с биллингом PayPal.
