google-pay / flutter-plugin

Apache License 2.0
145 stars 129 forks source link

A plugin to add payments to your Flutter application.

pay pay_android pay_ios pay_platform_interface
pub package pub package pub package pub package

Platform Support

Android iOS
Google Pay Apple Pay

Getting started

Before you start, create an account with the payment providers you are planning to support and follow the setup instructions:

Apple Pay:

  1. Take a look at the integration requirements.
  2. Create a merchant identifier for your business.
  3. Create a payment processing certificate to encrypt payment information.

Google Pay:

  1. Take a look at the integration requirements.
  2. Sign up to the business console and create an account.

Installation

This adds the pay package to the list of dependencies in your pubspec.yaml file:

flutter pub add pay

Usage

Define the configuration for your payment provider(s). Take a look at the parameters available in the documentation for Apple Pay and Google Pay, and explore the sample configurations in this package.

Example

This snippet assumes the existence of a payment configuration for Apple Pay (defaultApplePayConfig) and another one for Google Pay (defaultGooglePayConfig):

import 'package:pay/pay.dart';
import 'payment_configurations.dart' as payment_configurations;

const _paymentItems = [
  PaymentItem(
    label: 'Total',
    amount: '99.99',
    status: PaymentItemStatus.final_price,
  )
];

ApplePayButton(
  paymentConfiguration: payment_configurations.defaultApplePayConfig,
  paymentItems: _paymentItems,
  style: ApplePayButtonStyle.black,
  type: ApplePayButtonType.buy,
  margin: const EdgeInsets.only(top: 15.0),
  onPaymentResult: onApplePayResult,
  loadingIndicator: const Center(
    child: CircularProgressIndicator(),
  ),
),

GooglePayButton(
  paymentConfiguration: payment_configurations.defaultGooglePayConfig,
  paymentItems: _paymentItems,
  type: GooglePayButtonType.buy,
  margin: const EdgeInsets.only(top: 15.0),
  onPaymentResult: onGooglePayResult,
  loadingIndicator: const Center(
    child: CircularProgressIndicator(),
  ),
),

void onApplePayResult(paymentResult) {
  // Send the resulting Apple Pay token to your server / PSP
}

void onGooglePayResult(paymentResult) {
  // Send the resulting Google Pay token to your server / PSP
}

To learn more about the pay plugin and alternative integration paths, check out the readme in the pay folder.

Other packages in this plugin

The packages in this repository follow the federated plugin architecture. Each package has a specific responsibility and can be used independently to fulfil less conventional integration needs:

Package Description When to use
pay An app-facing package with support for all the platforms supported by this plugin. This package offers an agnostic integration for the platforms supported in this plugin and features the easiest path to add payments to your Flutter application.
pay_android The endorsed implementation of this plugin for Android. This package contains the necessary business logic to support the Android platform. You can integrate this package separately or use it to build your own app-facing package.
pay_ios The endorsed implementation of this plugin for iOS. This package contains the necessary business logic to support the iOS platform. You can integrate this package separately or use it to build your own app-facing package.
pay_platform_interface A common API contract for platform-specific implementations. Folow the contract in this package to add new platforms to the plugin or create your own Android or iOS implementations. Take a look at the guide about plugin development to learn more.

Additional resources

Check out the following resources to manage your payment accounts and learn more about the APIs for the supported providers:

Google Pay Apple Pay
Platforms  Android  iOS
 Documentation  Overview Overview
 Console  Google Pay Business Console Developer portal
Reference API reference  Apple Pay API
Style guidelines  Brand guidelines Buttons and Marks


Note: This is not an officially supported Google product.