A plugin to add payments to your Flutter application.
pay | pay_android | pay_ios | pay_platform_interface |
---|---|---|---|
Android | iOS |
---|---|
Google Pay | Apple Pay |
Before you start, create an account with the payment providers you are planning to support and follow the setup instructions:
- Take a look at the integration requirements.
- Create a merchant identifier for your business.
- Create a payment processing certificate to encrypt payment information.
- Take a look at the integration requirements.
- Sign up to the business console and create an account.
This adds the pay
package to the list of dependencies in your pubspec.yaml file:
flutter pub add pay
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.
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.
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. |
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.