SDK Bemobi Smart Checkout Flutter
SDK Flutter para integração com o Bemobi Smart Checkout, oferecendo uma solução simples e robusta para pagamentos.
Features
- Integração simples com Smart Checkout
- Suporte a callbacks de sucesso e erro
- Ambiente de teste e produção
- Bridge JavaScript-Flutter
- Exemplo de implementação incluso
Getting started
- Adicione a dependência no seu
pubspec.yaml
:
dependencies:
bemobi_smartcheckout_flutter: ^0.0.XX
- Configure as carteiras digitais (opcional):
Para Apple Pay (ios/Runner/Runner.entitlements):
<key>com.apple.developer.in-app-payments</key>
<array>
<string>merchant.seu.identificador</string>
</array>
Para Google Pay (android/app/src/main/AndroidManifest.xml):
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
- Importe o pacote:
import 'package:bemobi_smartcheckout_flutter/bemobi_smartcheckout_flutter.dart';
- Inicialização e encerramento
Para iniciar a SDK com as configurações necessárias, chame a função BemobiSDK.initialize no void main()
da sua aplicação:
void main() {
BemobiSDK.initialize();
runApp(const MyApp());
}
E para liberar os recursos utilizados pela SDK, chame a função BemobiSDK.dispose no void dispose()
do estado da tela principal da aplicação:
@override
void dispose() {
BemobiSDK.dispose();
super.dispose();
}
Deep Link Integration
Android
No arquivo android/app/src/main/AndroidManifest.xml
adicione o intent-filter abaixo substituindo o {{PACKAGE}}
pelo identificador do seu pacote.
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<activity android:name=".MainActivity">
<!-- Adicione o intent-filter abaixo para habilitar o deep link -->
<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="bsc-callback.bemobi.com" />
<data android:pathPattern="/{{PACKAGE}}/..*" />
</intent-filter>
<!-- Fim do intent-filter -->
</activity>
</application>
</manifest>
OBS: Para o deep link funcionar corretamente com o domínio bsc-callback.bemobi.com
, informe ao suporte da SDK as seguintes informações do seu aplicativo:
- SHA-256 Certificate Fingerprint
- Package Name
iOS
No Xcode adicione o arquivo ios/Runner/Runner.entitlements
no target Runner com o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- Adicione as associações de domínio abaixo para habilitar o deep link -->
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:bsc-callback.bemobi.com</string>
<string>webcredentials:bsc-callback.bemobi.com</string>
</array>
<!-- Fim das associações de domínio -->
</dict>
</plist>
OBS: Para o deep link funcionar corretamente com o domínio bsc-callback.bemobi.com
, informe ao suporte da SDK as seguintes informações do seu aplicativo:
- App ID
- Bundle Identifier
Implementation example
Exemplo usando a biblioteca app_links:
class _MyHomePageState extends State<MyHomePage> {
StreamSubscription<Uri>? _deepLinkListener;
@override
void initState() {
super.initState();
_deepLinkListener = AppLinks().uriLinkStream.listen((uri) {
final data = DeepLinkData.fromUri(uri);
// Implemente aqui sua lógica de integração do deep link...
});
}
@override
void dispose() {
_deepLinkListener?.cancel();
super.dispose();
}
}
Usage
Exemplo básico de uso:
BemobiSDK.setCustomActionHandler((payload) {
print('📱 Received custom action: $payload');
});
await BemobiSDK.startCheckout(
context: context,
environment: 'development',
sessionCode: 'seu-codigo-de-sessao',
navigateToPath: '/caminho_interno_checkout',
onSuccess: (result) {
print('Pagamento realizado com sucesso: $result');
},
onError: (error) {
print('Erro no pagamento: $error');
},
onClose: () {
print('Checkout fechado');
},
);