Flutter PayPal支付插件flutter_paypal_checkout的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter PayPal支付插件flutter_paypal_checkout的使用

🚀 最佳且简单的方式在Flutter应用中集成PayPal支付 🚀

flutter_paypal_checkout 插件的主要特性:

  1. 简单易用,连接Flutter与PayPal
  2. 即插即用 🚀
  3. 事件处理 🚀
  4. 易于跟随的指南

🎖 安装

pubspec.yaml 文件中添加依赖:

dependencies:
  flutter_paypal_checkout: ^<latest_version>

Android

app/build.gradle 文件中配置:

defaultConfig {
    minSdkVersion 17
    compileSdkVersion 33    
}

iOS

无需额外设置


使用

⚡ 设置

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 flutter_paypal_checkout 插件进行PayPal支付。

import 'package:flutter/material.dart';
import 'package:flutter_paypal_checkout/flutter_paypal_checkout.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const CheckoutPage(),
    );
  }
}

class CheckoutPage extends StatefulWidget {
  const CheckoutPage({super.key});

  @override
  State<CheckoutPage> createState() => _CheckoutPageState();
}

class _CheckoutPageState extends State<CheckoutPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text(
          "PayPal Checkout",
          style: TextStyle(fontSize: 20),
        ),
      ),
      body: Center(
        child: TextButton(
          onPressed: () async {
            // 调用PayPal支付页面
            Navigator.of(context).push(MaterialPageRoute(
              builder: (BuildContext context) => PaypalCheckout(
                sandboxMode: true, // 是否使用沙盒模式,默认为false
                clientId: "YOUR_CLIENT_ID", // PayPal客户端ID
                secretKey: "YOUR_SECRET_KEY", // PayPal密钥
                returnURL: "RETURN_URL", // 支付成功后的返回URL
                cancelURL: "CANCEL_URL", // 支付取消后的返回URL
                transactions: const [
                  {
                    "amount": {
                      "total": '70', // 总金额
                      "currency": "USD", // 货币类型
                      "details": {
                        "subtotal": '70', // 小计
                        "shipping": '0', // 运费
                        "shipping_discount": 0 // 运费折扣
                      }
                    },
                    "description": "The payment transaction description.", // 支付描述
                    "item_list": {
                      "items": [
                        {
                          "name": "Apple", // 商品名称
                          "quantity": 4, // 数量
                          "price": '5', // 单价
                          "currency": "USD" // 货币类型
                        },
                        {
                          "name": "Pineapple", // 商品名称
                          "quantity": 5, // 数量
                          "price": '10', // 单价
                          "currency": "USD" // 货币类型
                        }
                      ],
                      // 可选的收货地址信息
                      // "shipping_address": {
                      //   "recipient_name": "Raman Singh", // 收件人姓名
                      //   "line1": "Delhi", // 地址行1
                      //   "line2": "", // 地址行2
                      //   "city": "Delhi", // 城市
                      //   "country_code": "IN", // 国家代码
                      //   "postal_code": "11001", // 邮政编码
                      //   "phone": "+00000000", // 电话号码
                      //   "state": "Texas" // 州/省
                      // },
                    }
                  }
                ],
                note: "Contact us for any questions on your order.", // 支付备注
                onSuccess: (Map params) async {
                  // 支付成功时的回调
                  print("onSuccess: $params");
                },
                onError: (error) {
                  // 支付出错时的回调
                  print("onError: $error");
                  Navigator.pop(context);
                },
                onCancel: () {
                  // 用户取消支付时的回调
                  print('cancelled:');
                },
              ),
            ));
          },
          style: TextButton.styleFrom(
            backgroundColor: Colors.teal, // 按钮背景颜色
            foregroundColor: Colors.white, // 按钮文字颜色
            shape: const BeveledRectangleBorder(
              borderRadius: BorderRadius.all(
                Radius.circular(1), // 按钮圆角
              ),
            ),
          ),
          child: const Text('Checkout'), // 按钮文字
        ),
      ),
    );
  }
}

⚡ 事件处理

  • onSuccess: 支付成功时触发的回调函数。
  • onError: 支付出错时触发的回调函数。
  • onCancel: 用户取消支付时触发的回调函数。
onSuccess: (Map params) async {
  print("onSuccess: $params");
},

onError: (error) {
  print("onError: $error");
}

onCancel: () {
  print('cancelled:');
}

更多关于Flutter PayPal支付插件flutter_paypal_checkout的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter PayPal支付插件flutter_paypal_checkout的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用flutter_paypal_checkout插件来实现PayPal支付的代码示例。

首先,你需要在你的Flutter项目中添加flutter_paypal_checkout依赖。打开你的pubspec.yaml文件,并添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_paypal_checkout: ^0.3.0  # 请检查最新版本号

然后运行flutter pub get来安装依赖。

接下来,你需要进行一些配置来设置PayPal的环境。这包括在PayPal开发者网站创建一个应用并获取客户端ID。假设你已经完成了这些步骤,并有了你的客户端ID。

以下是一个简单的Flutter应用示例,展示了如何使用flutter_paypal_checkout插件:

  1. lib/main.dart文件中设置PayPal支付
import 'package:flutter/material.dart';
import 'package:flutter_paypal_checkout/flutter_paypal_checkout.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter PayPal Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final PayPalCheckout paypal = PayPalCheckout(
    clientId: 'YOUR_PAYPAL_CLIENT_ID',  // 在这里替换为你的PayPal客户端ID
    sandbox: true,  // 根据你的需求设置为true(沙盒环境)或false(生产环境)
    environment: PayPalEnvironment.SANDBOX,  // 如果sandbox为true,则设置为SANDBOX,否则设置为PRODUCTION
  );

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter PayPal Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            paypal.startPayment(
              amount: '10.00',
              currencyCode: 'USD',
              description: 'Payment for some goods',
              onApprove: (approvalDetails) {
                // 用户支付成功后的处理逻辑
                print('Payment approved! Details: $approvalDetails');
              },
              onCancel: () {
                // 用户取消支付后的处理逻辑
                print('Payment cancelled');
              },
              onError: (error) {
                // 支付过程中发生错误后的处理逻辑
                print('Payment error: $error');
              },
            );
          },
          child: Text('Pay with PayPal'),
        ),
      ),
    );
  }
}
  1. 确保你的Android和iOS项目配置正确

    • 对于Android,你可能需要在AndroidManifest.xml中添加必要的权限,并配置MainActivity以处理返回结果(虽然flutter_paypal_checkout插件可能已经处理了这些)。
    • 对于iOS,你可能需要在Info.plist中添加一些配置,但通常flutter_paypal_checkout插件的文档会有详细的指导。
  2. 运行你的应用

    使用flutter run命令运行你的应用。点击“Pay with PayPal”按钮,应该会跳转到PayPal支付页面。

请确保你已经替换了YOUR_PAYPAL_CLIENT_ID为你的实际PayPal客户端ID,并根据你的需求调整沙盒/生产环境的配置。

这个示例展示了基本的PayPal支付集成。你可以根据需求进一步自定义和扩展支付流程,例如处理不同的支付金额、货币、描述等。

回到顶部