payengine 2.0.1 copy "payengine: ^2.0.1" to clipboard
payengine: ^2.0.1 copied to clipboard

The PayEngine Flutter SDK allows you to build delightful payment experiences in your native Android and iOS apps using Flutter

PayEngine SDK for Flutter #

The PayEngine Flutter SDK allows you to build delightful payment experiences in your native Android and iOS apps using Flutter. We provide powerful and customizable UI screens and elements that can be used out-of-the-box to collect your users' payment details

Getting Started #

PayEngine config

final PayEngineConfig config = const PayEngineConfig(
      publicKey: "pk_test_xxx",
      scriptURL: "https://console.payengine.dev");
final String merchantId = "<your-merchant-id>";

Wrap the config in a Provider

PayEngineProvider(
  config: Config.config, 
  child: const MyApp()
)

Credit Card Form

var additionalFields = List<PayEngineField>.from([
      PayEngineField('address_zip', 'text', 'Zip Code', true,
          keyboardType: PayEngineKeyboardType.number,
          pattern:
              r"^(?:\d{5}(?:-\d{4})?|[ABCEGHJKLMNPRSTVXY]\d[A-Z] ?\d[A-Z]\d)$"),
    ]);

final creditCardForm = CreditCardForm(additionalFields: additionalFields);

Container(padding: const EdgeInsets.all(10), child: creditCardForm),

OutlinedButton(
    onPressed: () async {
      final response = await creditCardForm.tokenize(merchantId);
      setState(() {
        result = response;
      });
    },
    child: const Text('Tokenize')),

Bank Account Form

final bankAccountForm = BankAccountForm();

Container(padding: const EdgeInsets.all(10), child: bankAccountForm),
OutlinedButton(
    onPressed: () async {
      final response = await bankAccountForm.tokenize(merchantId);
      setState(() {
        result = response;
      });
    },
    child: const Text('Tokenize')),

Google Pay and Apple Pay #

Check whether is supported or not:

final isSupported = PayEngineNative.userCanPay(PayProvider.applePay, Config.merchantId)

Always call this method before rendering the pay button, see the example below.

Google Pay


final paymentRequest = PEPaymentRequest(
  merchantId: Config.merchantId, 
  paymentAmount: 10.00, 
  paymentItems: [
    PEPaymentItem(
      label: "Test Item", 
      amount: 10.00,
    )
  ],
  platformOptions: PEGooglePayOptions(billingAddressRequired: true, shippingAddressRequired: true)
);

// render button
FutureBuilder<bool>(
  future: PayEngineNative.userCanPay(
      PayProvider.googlePay, Config.merchantId),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.done) {
      if (snapshot.hasError) {
        return Center(
          child: Text(
            '${snapshot.error}',
          ),
        );
      } else if (snapshot.data == true) {
        return PEGooglePayButton(
          paymentRequest: paymentRequest,
          onPaymentFailed: (error) {
            debugPrint("onPaymentFailed $error");
            result = error.toString();
          },
          onPaymentSheetDismissed: () {
            debugPrint("onPaymentSheetDismissed");
          },
          onTokenDidReturn: (token, metadata, billingAddress, shippingAddress) {
            debugPrint("onTokenDidReturn $token $metadata ${billingAddress?.toJson()} ${shippingAddress?.toJson()}");
            result = token;
          },
        );
      } else {
        return const Text("Google Pay is not supported");
      }
    } else {
      return const SizedBox.shrink();
    }
  })

Apple Pay


final paymentRequest = PEPaymentRequest(
  merchantId: Config.merchantId,
  paymentAmount: 10.00,
  paymentItems: [
    PEPaymentItem(
      label: "Test Item",
      amount: 10.00,
    )
  ],
  platformOptions: PEApplePayOptions(
      requiredBillingContactFields: [PEContactField.postalAddress],
      requiredShippingContactFields: [PEContactField.name])
  );

// render button
FutureBuilder<bool>(
  future: PayEngineNative.userCanPay(
      PayProvider.applePay, Config.merchantId),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.done) {
      if (snapshot.hasError) {
        return Center(
          child: Text(
            '${snapshot.error}',
          ),
        );
      } else if (snapshot.data == true) {
        return PEApplePayButton(
          paymentRequest: paymentRequest,
          onPaymentFailed: (error) {
            debugPrint("onPaymentFailed $error");
            result = error.toString();
          },
          onPaymentSheetDismissed: () {
            debugPrint("onPaymentSheetDismissed");
          },
          onTokenDidReturn: (token, metadata, billingContact, shippingContact) {
            debugPrint("onTokenDidReturn $token $metadata ${billingContact?.toJson()} ${shippingContact?.toJson()}");
            result = token;
          },
        );
      } else {
        return const Text("Apple Pay is not supported");
      }
    } else {
      return const SizedBox.shrink();
    }
  })
2
likes
0
pub points
38%
popularity

Publisher

unverified uploader

The PayEngine Flutter SDK allows you to build delightful payment experiences in your native Android and iOS apps using Flutter

Homepage

License

unknown (license)

Dependencies

flutter, flutter_web_plugins, http, path_provider, plugin_platform_interface, provider, webview_flutter, webview_flutter_android, webview_flutter_wkwebview

More

Packages that depend on payengine