diff --git a/README.md b/README.md new file mode 100644 index 00000000..61071b48 --- /dev/null +++ b/README.md @@ -0,0 +1,106 @@ +[![pub package](https://img.shields.io/pub/v/pay.svg)](https://pub.dartlang.org/packages/pay) + +A plugin to add payments to your Flutter application. + +## 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](https://developer.apple.com/documentation/passkit/apple_pay/setting_up_apple_pay_requirements). +2. Create a [merchant identifier](https://developer.apple.com/help/account/configure-app-capabilities/configure-apple-pay#create-a-merchant-identifier) for your business. +3. Create a [payment processing certificate](https://developer.apple.com/help/account/configure-app-capabilities/configure-apple-pay#create-a-payment-processing-certificate) to encrypt payment information. + +#### Google Pay: +1. Take a look at the [integration requirements](https://developers.google.com/pay/api/android/overview). +2. Sign up to the [business console](https://pay.google.com/business/console) and create an account. + +## Installation +This adds the `pay` package to the [list of dependencies in your pubspec.yaml file](https://flutter.io/platform-plugins/): + +```sh +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](https://developer.apple.com/documentation/passkit/pkpaymentrequest) and [Google Pay](https://developers.google.com/pay/api/android/reference/request-objects), and explore the [sample configurations in this package](https://github.com/google-pay/flutter-plugin/tree/main/pay/example/lib/payment_configurations.dart). + +### Example +This snippet assumes the existence of a payment configuration for Apple Pay ([`defaultApplePayConfig`](https://github.com/google-pay/flutter-plugin/tree/main/pay/example/lib/payment_configurations.dart#L29)) and another one for Google Pay ([`defaultGooglePayConfig`](https://github.com/google-pay/flutter-plugin/tree/main/pay/example/lib/payment_configurations.dart#L69)): + +```dart +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](./pay/README.md). + +## Other packages in this plugin + +The packages in this repository follow the [federated plugin](https://docs.flutter.dev/packages-and-plugins/developing-packages#federated-plugins) architecture. Each package has a specific responsibility and can be used independently to fulfil less conventional integration needs: + +| Package | Description | When to use | +|:---:|:---:|:---:| +| [pay](./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](./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](./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](./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](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#federated-plugins) 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](https://developers.google.com/pay/api/android/overview) | [Overview](https://developer.apple.com/apple-pay/implementation/) +| Console | [Google Pay Business Console](https://pay.google.com/business/console/) | [Developer portal](https://developer.apple.com/account/) | +| Reference | [API reference](https://developers.google.com/pay/api/android/reference/client) | [Apple Pay API](https://developer.apple.com/documentation/passkit/apple_pay/) +| Style guidelines | [Brand guidelines](https://developers.google.com/pay/api/android/guides/brand-guidelines) | [Buttons and Marks](https://developer.apple.com/design/human-interface-guidelines/apple-pay/overview/buttons-and-marks/) + +
+Note: This is not an officially supported Google product. + diff --git a/pay/example/lib/main.dart b/pay/example/lib/main.dart index cc5710d3..2090af6e 100644 --- a/pay/example/lib/main.dart +++ b/pay/example/lib/main.dart @@ -143,8 +143,7 @@ class _PaySampleAppState extends State { : const SizedBox.shrink()), // Example pay button configured using a string ApplePayButton( - paymentConfiguration: PaymentConfiguration.fromJsonString( - payment_configurations.defaultApplePay), + paymentConfiguration: payment_configurations.defaultApplePayConfig, paymentItems: _paymentItems, style: ApplePayButtonStyle.black, type: ApplePayButtonType.buy,