Ошибки Stripe при выкатке и оплате

Две группы проблем: одни мешают выкатить интеграцию, другие возникают уже при оплате.

Чек-лист выкатки

  1. Подключён Firebase

    Без связанного проекта Firebase платежи не заработают — см. подключение Firebase.

  2. Тариф Blaze

    Облачные функции доступны только на нём. О переходе с тарифа Spark — в документации Firebase.

  3. Задан регион GCP

    Без выбранного расположения ресурсов Google Cloud выкатка не пройдёт.

    Настройка расположения ресурсов GCP

  4. Права проекта Firebase

    Нужны права на управление доступом и на настройку сервисов — см. инструкцию по подключению.

    Права проекта Firebase

  5. Код страны продавца

    Трёхбуквенный: «GBR» для Великобритании, а не «UK». Сверяйтесь со списком кодов стран.

    Поле кода страны в настройках Stripe

    Пример корректного кода страны

  6. Ключи Test и Live

    Оба набора должны быть заполнены — независимо от стадии разработки.

    Поля ключей Stripe

  7. Совпадение регионов

    Регион проекта Firebase и регион в настройках FlutterFlow должны совпадать.

    Регион проекта Firebase

    Регион в настройках FlutterFlow

Проблемы при оплате

  1. Нужна авторизация

    Stripe требует авторизованного пользователя. Вызывайте оплату только после входа или регистрации.

  2. Разный вид окна оплаты

    В вебе и на мобильных окно оплаты выглядит по-разному — так устроен сам Stripe, и во FlutterFlow это не настраивается.

  3. Цена в центах

    Сумма передаётся в минимальных единицах валюты — центах, а не долларах. Перевод удобно вынести в собственную функцию:

    int dollarToCent(double amount) {
      // Переводим сумму в строку
      String st = amount.toString();
    
      // Убираем точки и запятые
      st = st.replaceAll('.', '');
      st = st.replaceAll(',', '');
    
      // Возвращаем целое число
      return int.parse(st);
    }

    На входе 14.99, на выходе 1499.

  4. Ошибка CORS

    Ошибка CORS при запуске оплаты означает проблему с правами облачной функции. Проверьте, выдано ли право allUsers для функции Stripe в консоли Firebase.

    Права облачной функции в консоли Firebase

    Выдача права allUsers

  5. Подписки на мобильных

    Apple и Google не разрешают оформлять подписки Stripe внутри мобильных приложений. Для мобильных используйте RevenueCat, для веба — прямые вызовы API.

перевод официальной документации FlutterFlow

обновлено

⌕ ESC