bemobi_smartcheckout_flutter 0.1.1 copy "bemobi_smartcheckout_flutter: ^0.1.1" to clipboard
bemobi_smartcheckout_flutter: ^0.1.1 copied to clipboard

Flutter SDK for Bemobi Smart Checkout: digital wallets, callbacks, customization, and deep link integration.

Bemobi Logo

Bemobi Smart Checkout Flutter SDK #

SDK Flutter para integração com o Smart Checkout, oferecendo uma solução robusta e flexível para pagamentos digitais, incluindo suporte a carteiras digitais, callbacks, customização visual e integração via deep link.

⚠️ Aviso de retrocompatibilidade

A classe BemobiSDK foi substituída pela nova API unificada SmartCheckout introduzida na versão 0.1.0.

Por enquanto está mantida a retrocompatibilidade para integrações que utilizam a API anterior, mas recomenda-se migrar o quanto antes para a nova implementação.


Sumário #


Recursos #

  • Callbacks para sucesso, erro e fechamento.
  • Compatível com Apple Pay e Google Pay.
  • Personalização visual do bottom sheet.
  • Suporte a deep link para Android e iOS.

Instalação #

  1. Adicione a dependência no seu pubspec.yaml:
dependencies:
  bemobi_smartcheckout_flutter: ^0.1.1
  1. Execute:
flutter pub get

Carteiras digitais #

Configuração das carteiras digitais #

iOS (Apple Pay)

No arquivo ios/Runner/Runner.entitlements:

<key>com.apple.developer.in-app-payments</key>
<array>
  <string>merchant.seu.identificador</string>
</array>

Android (Google Pay)

No arquivo android/app/src/main/AndroidManifest.xml:

<meta-data
  android:name="com.google.android.gms.wallet.api.enabled"
  android:value="true" />

Configuração #

Parâmetros de configuração #

A configuração da sessão de checkout é feita via SmartCheckout.config:

final config = SmartCheckout.config(
  environment: SmartCheckout.environment.production, // or .sandbox, .development
  sessionCode: 'a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d', // optional
  partnerKey: 'abc-1234', // optional ([a-z]{3}-[0-9]{4})
  deepLink: Uri.parse('https://smart-checkout.bemobi.com/callback/abc-1234'), // optional
  initialHeightFraction: 0.8, // optional (0.0 to 1.0)
  style: SmartCheckout.style.rounded, // or .flat (optional)
);

Os ambientes disponíveis são:

  • SmartCheckout.environment.sandbox
  • SmartCheckout.environment.development
  • SmartCheckout.environment.production

Os estilos disponíveis são:

  • SmartCheckout.style.rounded
  • SmartCheckout.style.flat

Callbacks #

Você pode definir handlers para os principais eventos do fluxo de checkout:

  • onSuccess(Map<String, dynamic> result): chamado quando o pagamento é concluído com sucesso.
  • onError(Map<String, dynamic> error): chamado em caso de erro.
  • onClose(): chamado quando o bottom sheet é fechado.

Exemplo:

final callbacks = SmartCheckout.callbacks(
  onSuccess: (result) => print('Checkout completed successfully: $result'),
  onError: (error) => print('Checkout error: $error'),
  onClose: () => print('Checkout closed'),
);

Uso básico #

Para abrir o checkout em um modal bottom sheet:

SmartCheckout.showBottomSheet(
  context: context,
  config: config,
  callbacks: callbacks,
);

Customização visual #

O visual do bottom sheet pode ser customizado via o parâmetro style:

  • SmartCheckout.style.rounded: bordas arredondadas (padrão).
  • SmartCheckout.style.flat: bordas retas.

Você também pode ajustar a altura inicial do bottom sheet com initialHeightFraction (valor entre 0.0 e 1.0).


Ações customizadas #

Você pode registrar um handler para ações customizadas disparadas pelo fluxo do checkout:

SmartCheckout.setCustomActionHandler((payload) {
  print('Custom action received: $payload');
});

Conversão de string para enums #

Se você precisa converter uma string em algum dos enums utilizados, use os métodos utilitários estáticos:

final environment = SmartCheckout.parseEnvironmentFrom('production'); // SmartCheckout.environment.production
final style = SmartCheckout.parseStyleFrom('rounded'); // SmartCheckout.style.rounded

Se o valor informado for inválido, será lançado um ArgumentError.


Android #

No arquivo android/app/src/main/AndroidManifest.xml, adicione o seguinte intent-filter na sua Activity principal (substitua abc-1234 pelo seu identificador do parceiro):

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http" />
    <data android:scheme="https" />
    <data android:host="smart-checkout.bemobi.com" />
    <data android:path="/callback/abc-1234" />
</intent-filter>

Importante: Para o deep link funcionar corretamente com o domínio smart-checkout.bemobi.com, informe ao suporte:

  • Package Name
  • SHA-256 Certificate Fingerprint

iOS #

No Xcode, adicione ao arquivo ios/Runner/Runner.entitlements:

<key>com.apple.developer.associated-domains</key>
<array>
    <string>applinks:smart-checkout.bemobi.com</string>
    <string>webcredentials:smart-checkout.bemobi.com</string>
</array>

Importante: Para o deep link funcionar corretamente com o domínio smart-checkout.bemobi.com, informe ao suporte:

  • App ID (Team ID + Bundle Identifier)

Utilizando a biblioteca app_links:

class _MyHomePageState extends State<MyHomePage> {
  StreamSubscription<Uri>? _deepLinkListener;

  @override
  void initState() {
    super.initState();
    _deepLinkListener = AppLinks().uriLinkStream.listen((uri) {
      // Example opening the checkout from the deep link
      final config = SmartCheckout.config(
        environment: SmartCheckout.environment.production,
        deepLink: uri,
      );
      SmartCheckout.showBottomSheet(
        context: context,
        config: config,
        callbacks: callbacks,
      );
    });
  }

  @override
  void dispose() {
    _deepLinkListener?.cancel();
    super.dispose();
  }
}

A estrutura do deep link segue o padrão:

https://smart-checkout.bemobi.com/callback/{partnerKey}

Onde {partnerKey} é o identificador do parceiro no formato [a-z]{3}-[0-9]{4}:

https://smart-checkout.bemobi.com/callback/abc-1234

Exemplo completo #

import 'package:bemobi_smartcheckout_flutter/bemobi_smartcheckout_flutter.dart';

void openCheckout(BuildContext context) {
  final config = SmartCheckout.config(
    environment: SmartCheckout.environment.production,
    sessionCode: 'a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d',
    partnerKey: 'abc-1234',
    deepLink: Uri.parse('https://smart-checkout.bemobi.com/callback/abc-1234'),
    initialHeightFraction: 0.9,
    style: SmartCheckout.style.rounded,
  );

  final callbacks = SmartCheckout.callbacks(
    onSuccess: (result) => print('Checkout completed successfully: $result'),
    onError: (error) => print('Checkout error: $error'),
    onClose: () => print('Checkout closed'),
  );

  SmartCheckout.showBottomSheet(
    context: context,
    config: config,
    callbacks: callbacks,
  );
}

Informações adicionais #

0
likes
140
points
807
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter SDK for Bemobi Smart Checkout: digital wallets, callbacks, customization, and deep link integration.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

device_info_plus, flutter, flutter_credential_manager, flutter_custom_tabs, pay, unique_identifier, webview_flutter

More

Packages that depend on bemobi_smartcheckout_flutter