搜尋套件、儲存庫與 APP 分類

flutter_braintree 封面
套件詳情v4.0.0

flutter_braintree

包裝原生 Braintree SDK 的 Flutter 外掛程式。支援信用卡、PayPal、Google Pay 等多種付款方式。

AndroidiOS
近 30 天下載
1040
喜歡數
211
Pub 分數
150

安裝套件

flutter pub add flutter_braintree

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個 Flutter 插件,整合原生 Braintree SDK,支援透過信用卡、PayPal、Google Pay 及其他方式實現安全的內應用支付。該插件在 Flutter 應用與 Braintree 強大的支付基礎設施之間提供無縫橋接,確保符合產業標準。此插件支援 Android 與 iOS 平台,讓開發者能在不同裝置上實作一致的支付體驗。透過 pub.dev 做極簡設定,即可簡化在 Flutter 應用中處理支付金鑰與交易的過程。

適用情境

  • 應用內購買
  • 電子商務結帳
  • 訂閱計費
  • 數位服務付款
  • 行動錢包整合

主要特色

  • 支援多種支付方式
  • 安全憑證化
  • 跨平台相容性
  • 與 Braintree 的輕鬆整合
  • 即時交易處理

適合對象

  • 電子商務應用
  • 基於訂閱的服務
  • 行動支付網關
  • 需要符合 PCI 標準的應用程式
  • 使用 Braintree 的開發者

使用建議

  • 需要設定 Braintree 帳戶
  • 需要正確的環境配置
  • 依賴原生 SDK
  • 可能需要額外的後端邏輯
  • 限於支援的支付方式

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

Braintree for Flutter

A Flutter plugin that wraps the native Braintree SDKs. Unlike other plugins, this plugin not only lets you start Braintree's native Drop-in UI, but also allows you to create your own custom Flutter UI with Braintree functionality.

Installation

Add flutter_braintree to your pubspec.yaml file:

dependencies:
  ...
  flutter_braintree: <version>
Android

You must migrate to AndroidX.
In /app/build.gradle, set your minSdkVersion to at least 21.

Card.io

Card.io enables credit card scanning so as to remove the need to type in credit card details manually. This feature became optional in flutter_braintree version 0.6.0 to potentially reduce app sizes. To enable it for the Braintree Drop-in UI, add the following line to your app level build.gradle file:

dependencies {
    ...
    implementation 'io.card:android-sdk:5.+'
}
PayPal / Venmo / 3D Secure

In order for this plugin to support PayPal, Venmo or 3D Secure payments, you must allow for the browser switch by adding an intent filter to your AndroidManifest.xml (inside the <application> body):

<activity android:name="com.braintreepayments.api.DropInActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="${applicationId}.braintree" />
    </intent-filter>
</activity>
<activity android:name="com.braintreepayments.api.ThreeDSecureActivity" android:theme="@style/Theme.AppCompat.Light" android:exported="true">
</activity>

Important: Your app's URL scheme must begin with your app's package ID and end with .braintree. For example, if the Package ID is com.your-company.your-app, then your URL scheme should be com.your-company.your-app.braintree. ${applicationId} is automatically applied with your app's package when using Gradle. Note: The scheme you define must use all lowercase letters. If your package contains underscores, the underscores should be removed when specifying the scheme in your Android Manifest.

Google Pay

Add the wallet enabled meta-data tag to your AndroidManifest.xml (inside the <application> body):

<meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true"/>
iOS

You may need to add or uncomment the following line at the top of your ios/Podfile:

platform :ios, '12.0'

Warning: Device data collection is not yet supported for iOS.

PayPal / Venmo / 3D Secure

In your App Delegate or your Runner project, you need to specify the URL scheme for redirecting payments as following:

BTAppContextSwitcher.setReturnURLScheme("com.your-company.your-app.payments")

Moreover, you need to specify the same URL scheme in your Info.plist:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.your-company.your-app.payments</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>com.your-company.your-app.payments</string>
        </array>
    </dict>
</array>

See the official Braintree documentation for a more detailed explanation.

Usage

You must first create a Braintree account. In your control panel you can create a tokenization key. You likely also want to set up a backend server. Make sure to read the Braintree developer documentation so you understand all key concepts.

In your code, import the plugin:

import 'package:flutter_braintree/flutter_braintree.dart';

You can then create your own user interface using Flutter or use Braintree's drop-in UI.

Flutter UI
Credit cards

Create a credit card request object:

final request = BraintreeCreditCardRequest(
  cardNumber: '4111111111111111',
  expirationMonth: '12',
  expirationYear: '2021',
  cvv: '367'
);

Then ask Braintree to tokenize it:

BraintreePaymentMethodNonce result = await Braintree.tokenizeCreditCard(
   '<Insert your tokenization key or client token here>',
   request,
);
print(result.nonce);
PayPal

Create a PayPal request object:

final request = BraintreePayPalRequest(amount: '13.37');

Or, for the Vault flow:

final request = BraintreePayPalRequest(
  billingAgreementDescription: 'I hereby agree that flutter_braintree is great.',
);

Then launch the PayPal request:

BraintreePaymentMethodNonce result = await Braintree.requestPaypalNonce(
   '<Insert your tokenization key or client token here>',
   request,
);
if (result != null) {
  print('Nonce: ${result.nonce}');
} else {
  print('PayPal flow was canceled.');
}
Braintree's native drop-in

Create a drop-in request object:

final request = BraintreeDropInRequest(
  clientToken: '<Insert your client token here>',
  collectDeviceData: true,
  googlePaymentRequest: BraintreeGooglePaymentRequest(
    totalPrice: '4.20',
    currencyCode: 'USD',
    billingAddressRequired: false,
  ),
  paypalRequest: BraintreePayPalRequest(
    amount: '4.20',
    displayName: 'Example company',
  ),
);

Then launch the drop-in:

BraintreeDropInResult result = await BraintreeDropIn.start(request);

Access the payment nonce:

if (result != null) {
  print('Nonce: ${result.paymentMethodNonce.nonce}');
} else {
  print('Selection was canceled.');
}

To increase the chances of success with 3DS2 challenge is possible to add additional information about the user as mentioned in the guide to Migrate to 3D Secure 2.

var request = BraintreeDropInRequest(
  clientToken: '<Insert your client token here>',
  collectDeviceData: true,
  requestThreeDSecureVerification: true,
  email: "test@email.com",
  amount: "0,01",
  billingAddress: BraintreeBillingAddress(
    givenName: "Jill",
    surname: "Doe",
    phoneNumber: "5551234567",
    streetAddress: "555 Smith St",
    extendedAddress: "#2",
    locality: "Chicago",
    region: "IL",
    postalCode: "12345",
    countryCodeAlpha2: "US",
  ),
  cardEnabled: true,
);

See BraintreeDropInRequest and BraintreeDropInResult for more documentation.

所屬分類

依賴

依賴清單 1 項

原始碼儲存庫

使用此套件的專案