flutter_applepay_sdk 0.0.3 copy "flutter_applepay_sdk: ^0.0.3" to clipboard
flutter_applepay_sdk: ^0.0.3 copied to clipboard

PlatformiOS

This is Wallet SDK for Apple Pay. It is a Flutter plugin that provides functionality to integrate Apple Pay into Flutter applications. Powered by Bonum.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:flutter_applepay_sdk/flutter_applepay_sdk.dart';
import 'package:dio/dio.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _walletInfo = 'Unknown';
  String _secureCheckResult = 'Not checked';

  @override
  void initState() {
    super.initState();

    //Initialize the Swift→Flutter listener
    FlutterApplepaySdk.initializeListener(
      onNonceGenerated: _onNonceGenerated,
    );

    _retrieveWalletInformation();
  }

  /// Called when Swift sends {cert, nonce, nonceSignature}
  Future<Map<String, String>> _onNonceGenerated(Map<String, dynamic> args) async {
    print('📥 Received from iOS: $args');

    final dio = Dio();

    // Your access token (Bearar token)
    const token = 'Bearer <token>';
    final url = '';

    // Your card data formatted like this
    const cardData =
        '02DD64925A31B7DC2A11483FE5E2AF5589F39D18B5AC682C08C47B846A5D260F27C5FF1F0A2DEA35E253B48880D9A9FC1A1BDD1960964830AAFD8488FFA0B1D6EDF9C49D3E0BACA14F3EC74E2B8A1D0B1DF2748C846DF9827E5C81E081E5F8EC';

    final body = {
      'data': cardData,
      'cert': args['cert'],
      'nonce': args['nonce'],
      'nonceSignature': args['nonceSignature'],
      'holderName': 'Micheal Micheal', // holder name
      'phoneNumber': '12345678', // phone number
    };

    try {
      final response = await dio.post(
        url,
        data: body,
        options: Options(
          headers: {
            'Authorization': token,
            'Content-Type': 'application/json',
          },
        ),
      );

      final activationData = response.data['activationData'] as String;
      final encryptedPassData = response.data['encryptedPassData'] as String;
      final ephemeralPublicKey = response.data['ephemeralPublicKey'] as String;

      return {
        'activationData': activationData,
        'encryptedPassData': encryptedPassData,
        'ephemeralPublicKey': ephemeralPublicKey,
      };
    } catch (e) {
      print(' Tokenization error: $e');
      rethrow;
    }
  }

  Future<void> _retrieveWalletInformation() async {
    String walletInfo;
    try {
      walletInfo = await FlutterApplepaySdk.retrieveWalletInformation();
    } catch (e) {
      walletInfo = 'Failed to retrieve wallet information';
    }

    if (!mounted) return;

    setState(() {
      _walletInfo = walletInfo;
    });
  }

  Future<void> _addPaymentPass() async {
    final cardDetails = {
      'cardholderName': 'TUVSHINSAIKHAN',
      'primaryAccountSuffix': '8015',
      'primaryAccountIdentifier': '',
      'paymentNetwork': 'masterCard',
    };

    final success = await FlutterApplepaySdk.presentAddPaymentPassViewController(cardDetails);

    setState(() {
      _walletInfo = success ? '✅ Payment Pass added successfully!' : '❌ Failed to add Payment Pass.';
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Apple Pay SDK Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text('Wion:', style: Theme.of(context).textTheme.titleLarge),
              Text('Wallet Information:', style: Theme.of(context).textTheme.titleLarge),
              const SizedBox(height: 8),
              Text(_walletInfo),
              const SizedBox(height: 20),
              ElevatedButton(
                onPressed: _addPaymentPass,
                child: const Text('Add Payment Pass'),
              ),
              const SizedBox(height: 20),
              ElevatedButton(
                onPressed: () async {
                  try {
                    final exists = await FlutterApplepaySdk.secureElementPassExists("8015");
                    setState(() {
                      _secureCheckResult = exists ? 'Pass already exists in Wallet.' : 'Pass not found in Wallet.';
                    });
                  } catch (e) {
                    setState(() {
                      _secureCheckResult = 'Error: ${e.toString()}';
                    });
                  }
                },
                child: const Text('Check Secure'),
              ),
              const SizedBox(height: 10),
              Text('Secure Check Result: $_secureCheckResult'),
            ],
          ),
        ),
      ),
    );
  }
}
0
likes
150
points
23
downloads

Publisher

unverified uploader

Weekly Downloads

This is Wallet SDK for Apple Pay. It is a Flutter plugin that provides functionality to integrate Apple Pay into Flutter applications. Powered by Bonum.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_applepay_sdk

Packages that implement flutter_applepay_sdk