Flutter PayPal支付插件flutter_paypal_checkout的使用
Flutter PayPal支付插件flutter_paypal_checkout的使用
🚀 最佳且简单的方式在Flutter应用中集成PayPal支付 🚀
flutter_paypal_checkout 插件的主要特性:
- 简单易用,连接Flutter与PayPal
 - 即插即用 🚀
 - 事件处理 🚀
 - 易于跟随的指南
 
🎖 安装
在 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
更多关于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插件:
- 在
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'),
        ),
      ),
    );
  }
}
- 
确保你的Android和iOS项目配置正确:
- 对于Android,你可能需要在
AndroidManifest.xml中添加必要的权限,并配置MainActivity以处理返回结果(虽然flutter_paypal_checkout插件可能已经处理了这些)。 - 对于iOS,你可能需要在
Info.plist中添加一些配置,但通常flutter_paypal_checkout插件的文档会有详细的指导。 
 - 对于Android,你可能需要在
 - 
运行你的应用:
使用
flutter run命令运行你的应用。点击“Pay with PayPal”按钮,应该会跳转到PayPal支付页面。 
请确保你已经替换了YOUR_PAYPAL_CLIENT_ID为你的实际PayPal客户端ID,并根据你的需求调整沙盒/生产环境的配置。
这个示例展示了基本的PayPal支付集成。你可以根据需求进一步自定义和扩展支付流程,例如处理不同的支付金额、货币、描述等。
        
      
            
            
            
