Flutter Mad Pay

Easy integration with Google Pay and Apple Pay for your flutter app.

Apple Pay API Documentation.

Google Pay API Documentation.

SDK Features

  • Pay with Apple Pay and Google Pay
  • Checking payment availability on your device
  • Checking the user's active cards

Installing

Add this to your package's pubspec.yaml file:

dependencies:
  mad_pay: 2.2.0
For Android
  • In the file [project_name]/android/app/build.gradle, set minSdkVersion to at least version 21.
  • In the file [project_name]/android/app/build.gradle, add the line proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' to buildTypes.release
  • Create the proguard-rules.pro file in the [project_name]/android/app folder and add the line -keep class * extends com.google.protobuf.GeneratedMessageLite { *; }

Usage

To start using payment you need to get Merchant Identifier:

Use without buttons (for your design)

final MadPay pay = MadPay();

// To find out if payment is available on this device
await pay.checkPayments();

// If you need to check if user has at least one active card
await pay.checkActiveCard(
  paymentNetworks: <PaymentNetwork>[
    PaymentNetwork.visa,
    PaymentNetwork.mastercard,
  ],
);

// To pay with Apple Pay or Google Pay
await pay.processingPayment(
  PaymentRequest(
    google: GoogleParameters(
      gatewayName: 'Your Gateway',
      gatewayMerchantId: 'Your id',
      merchantId: 'example_id',
    ),
    apple: AppleParameters(
      merchantIdentifier: 'Your id',
    ),
    currencyCode: 'USD',
    countryCode: 'US',
    paymentItems: <PaymentItem>[
      PaymentItem(name: 'T-Shirt', price: 2.98),
      PaymentItem(name: 'Trousers', price: 15.24),
    ],
    paymentNetworks: <PaymentNetwork>[
      PaymentNetwork.visa,
      PaymentNetwork.mastercard,
    ],
  )
);

Using with buttons (by guideline)

Apple Pay button Widget (Native):

ApplePayButton(
  style: ApplePayButtonStyle.automatic,
  type: ApplePayButtonType.buy,
  request: PaymentRequest.apple(
    apple: AppleParameters(
      merchantIdentifier: 'Your id',
    ),
    currencyCode: 'USD',
    countryCode: 'US',
    paymentItems: <PaymentItem>[
      PaymentItem(name: 'T-Shirt', price: 2.98),
      PaymentItem(name: 'Trousers', price: 15.24),
    ],
  ),
  onPaymentResult: (PaymentResponse? req) {
    // ...
  },
  onError: (Object? e) {
    // ...
  },
);

Google Pay button Widget (Flutter):

GooglePayButton(
  type: GooglePayButtonType.plain,
  request: PaymentRequest.google(
    google: GoogleParameters(
      gatewayName: 'Your Gateway',
      gatewayMerchantId: 'Your id',
      merchantId: 'example_id',
    ),
    currencyCode: 'USD',
    countryCode: 'US',
    paymentItems: <PaymentItem>[
      PaymentItem(name: 'T-Shirt', price: 2.98),
      PaymentItem(name: 'Trousers', price: 15.24),
    ],
  ),
  onPaymentResult: (PaymentResponse? req) {
    // ...
  },
  onError: (Object? e) {
    // ...
  },
);

Adaptive Pay button Widget (uses ApplePayButton and GooglePayButton):

AdaptivePayButton(
  applePayButton: ApplePayButton(...),
  googlePayButton: GooglePayButton(...),
),

Example

The Example is in the corresponding folder

Payment Network matrix

Payment NetworkiOSAndroid
Visa++
MasterCard++
American Express++
Interac++
Discover++
JCB++
Maestro+
Electron+
Cartes Bancarries+
Union Pay+
EftPos+
Elo+
ID Credit+
Mada+
Private Label+
Quic Pay+
Suica+
V Pay+
Mir Pay

Libraries

mad_pay