На момент чтения этой инструкции все подготовительные вопросы со стороны приложения должны быть решены. Это значит, что вы ознакомились с документацией Apple и прочитали документацию Goggle.
Обзавелись merchant ID, login и password, как для тестовой среды, так и для прода. Если вся эта подготовительная часть сделана, то идём дальше.
В классе всего три метода, этого нам хватит, чтобы настроить оплату в приложении.
- google_pay - метод для оплаты заказа в платежной системе Google Pay
- apple_pay - метод для оплаты заказа в платежной системе Apple Pay
Тело запроса для двух методов:
token - токен пользователя
orderNumber - идентификатор заказа в системе магазина
paymentToken - токен полученный при регистрации заказа
- get_order_status - метод для проверки статуса оплаты
Принимает следующие параметры:
orderNumber - идентификатор заказа в системе магазина
orderId - номер заказа в платежной системе
- Нужно выяснить со стороны бизнеса: при достижении какого статуса заказ должен иметь возможность оплаты
- Используем ID заказа для регистрации в банковской системе (со стороны приложения)
- После регистрации заказа с приложения передаем полученный ответ в методы оплаты google_pay или apple_pay. На стороне сайта идёт обработка полученного paymentToken (важно, чтобы он был кодирован по Base64) с запросом на оплату и изменение заказа по orderNumber, в случае успешно проведенной транзакции. Ответом будет либо статус success или расшифровка полученной ошибки.
- После проведенной оплаты получаем статус заказа, выполняя методя get_order_status
- Для работы Google Pay не нужен сертификат. Для Apple Pay обязателен.
- Версия ЛК Сбербанка по словам специалиста ТП никак не влияет на генерацию подписей и сертификатов.
- У Google/Apple/Samsung Pay оплата заказа проходит через метод payment.do
- Основное отличие тестовой среды от боевой в том, что не происходит списание денежных средств, в остальном апи работает идентично.
- Для тестирования нужно прекреплять тестовые карты.
Карты для Apple Pay можно взять здесь:
- https://developer.apple.com/apple-pay/sandbox-testing/
- https://securepayments.sberbank.ru/wiki/doku.php/test_cards
Для Google Pay прикрепляется боевая карта, но если будет указана тестовая среда при обращении в Google Pay, то Google под капотом автоматически подставит тестовые данные для совершения платежа.
- Merchant ID это логин мерчанта. Может отличаться для боевой и тестовой среды.
- Самая распространенная ошибка при статусе ответа "Расшифровка переданных данных неуспешна" - это использование сертификатов из тестового личного кабинета в боевом и на оборот. Важно: по тестовым данным генерация сертификата происходит в тестовом ЛК сбера, для боя - в боевом.
- Со стороны платежного шлюза Сбера отсутствует тестовая карта для проведения оплат GOOGLE_PAY. Рекомендуется проводить оплаты на боевой среде.
- При тестировании Google Pay в тестовой среде использовать токенизированную карту - подробности тут. Параметр pan должен быть "pan": "4895370012003478", а не "pan": "4111111111111111". При не соблюдении данного условия в ответе будут прилетать данные для acs авторизации, чего не может быть в боевых условиях, так в боевом режиме Google будет направлять "токен" карты с устройства. Токен на устройстве это электронный номер карты отличающийся от реального номера карты. Пример у Apple можно посмотреть в приложении Wallet.