square_web_payments 0.0.7 copy "square_web_payments: ^0.0.7" to clipboard
square_web_payments: ^0.0.7 copied to clipboard

An open source Flutter package for integrating the Square Web Payments SDK. See https://rpelavin.github.io/square-web-payments for demonstration.

example/lib/main.dart

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:square_web_payments/square_web_payments.dart';
import 'package:widgetbook/widgetbook.dart';

final Payments payments =
    Square.payments('sandbox-sq0idb-negdp6Z5Q7RYeFbAv38m0A', 'L6XCYJM4ZPHRP');

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

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

  @override
  Widget build(BuildContext context) => Widgetbook.material(directories: [
        WidgetbookUseCase(
            name: 'Apple Pay',
            builder: (context) => _buildPaymentMethod(
                payments.applePay(payments.paymentRequest(
                    const PaymentRequestOptions(
                        countryCode: 'US',
                        currencyCode: 'USD',
                        total: LineItem(amount: '1.00', label: 'Total')))),
                (applePay) => ApplePayView(
                    applePay: applePay,
                    onPressed: () => _tokenize(context, applePay)))),
        WidgetbookUseCase(
            name: 'Card',
            builder: (context) => _buildPaymentMethod(
                payments.card(),
                (card) => Column(children: [
                      CardView(card: card),
                      TextButton(
                          onPressed: () => _tokenize(context, card),
                          child: const Text('Tokenize'))
                    ]))),
        WidgetbookUseCase(
            name: 'Gift Card',
            builder: (context) => _buildPaymentMethod(
                payments.giftCard(),
                (card) => Column(children: [
                      CardView(card: card),
                      TextButton(
                          onPressed: () => _tokenize(context, card),
                          child: const Text('Tokenize'))
                    ])))
      ]);

  Widget _buildPaymentMethod<TPaymentMethod extends PaymentMethod>(
          Future<TPaymentMethod> future,
          Widget Function(TPaymentMethod paymentMethod) builder) =>
      Container(
          constraints: const BoxConstraints.expand(),
          decoration: const BoxDecoration(color: Colors.white),
          padding: const EdgeInsets.all(8),
          child: FutureBuilder(
              future: future,
              builder: (context, snapshot) =>
                  snapshot.connectionState == ConnectionState.done
                      ? snapshot.data != null
                          ? builder(snapshot.data!)
                          : SelectableText(const JsonEncoder.withIndent('  ')
                              .convert(snapshot.error))
                      : const Center(child: CircularProgressIndicator())));

  void _tokenize(BuildContext context, PaymentMethod paymentMethod) =>
      showDialog(
          context: context,
          builder: (BuildContext context) => FutureBuilder(
              future: paymentMethod.tokenize(),
              builder: (context, snapshot) => AlertDialog(
                  title: snapshot.connectionState == ConnectionState.done
                      ? Text(snapshot.hasData ? 'TokenResult' : 'Error')
                      : const Center(child: CircularProgressIndicator()),
                  content: snapshot.connectionState == ConnectionState.done
                      ? SelectableText(const JsonEncoder.withIndent('  ')
                          .convert(snapshot.data ?? snapshot.error))
                      : null)));
}
2
likes
0
points
1
downloads

Publisher

verified publisherpelavin.dev

Weekly Downloads

An open source Flutter package for integrating the Square Web Payments SDK. See https://rpelavin.github.io/square-web-payments for demonstration.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, web

More

Packages that depend on square_web_payments