finik_sdk 3.1.3 copy "finik_sdk: ^3.1.3" to clipboard
finik_sdk: ^3.1.3 copied to clipboard

This Flutter package allows your application to integrate Finik payment feature.

example/lib/main.dart

import 'package:finik_sdk/finik_sdk.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Finik QR Demo',
      theme: ThemeData(useMaterial3: false),
      home: const MainScreen(),
    );
  }
}

class MainScreen extends StatelessWidget {
  const MainScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Main Screen')),
      body: Center(
        child: ElevatedButton(
          onPressed: () => Navigator.push(
            context,
            MaterialPageRoute(builder: (_) => const FinikScreen()),
          ),
          child: const Text('Go to FinikScreen'),
        ),
      ),
    );
  }
}

class FinikScreen extends StatelessWidget {
  const FinikScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return AnnotatedRegion<SystemUiOverlayStyle>(
      value: SystemUiOverlayStyle.dark,
      child: Scaffold(
        body: FinikProvider(
          apiKey: 'YOUR_API_KEY',
          isBeta: true,
          locale: FinikSdkLocale.KY,
          textScenario: TextScenario.REPLENISHMENT,
          paymentMethods: const [
            PaymentMethod.APP,
            PaymentMethod.QR,
            PaymentMethod.VISA
          ],
          enableShimmer: true,
          enableShare: true,
          enableSupportButtons: true,
          tapableSupportButtons: true,
          onBackPressed: () {},
          onPayment: (data) {},
          widget: CreateItemHandlerWidget(
            accountId: 'YOUR_ACCOUNT_ID',
            nameEn: 'YOUR_ITEM_NAME_EN',
            requestId: '110ec58a-a0f6-4ac4-8353-c86cd813b8d1',
            callbackUrl: 'YOUR_CALLBACK_URL',
            amount: const FixedAmount(10.0),
            maxAvailableQuantity: 100,
            maxAvailableAmount: 1000,
            startDate: DateTime(2025, 7, 1, 0, 0),
            endDate: DateTime(2025, 12, 31, 23, 59),
            visibilityType: VisibilityType.PRIVATE,
            requiredFields: const [
              RequiredField(
                fieldId: 'YOU_FIELD_ID',
                label: 'YOUR_FIELD_LABEL',
                value: 'YOUR_FIELD_VALUE',
                isHidden: true,
              ),
            ],
            onCreated: (data) {
              print('ExampleApp: Created item data: $data');

              // Example output (data is of type Map<String, dynamic>):
              // {id: 1743008977_49a59dc9-f8fa-403c-83dd-95eeb5b2526a, userId: test_user_id, account: {id: test_account_id, name: ИП "TEST", type: CORPORATE}, qrCode: ...}
            },
          ),
        ),
      ),
    );
  }
}