Flutter支付集成插件yookassa_client的使用

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

Flutter支付集成插件yookassa_client的使用

简介

yookassa_client 是一个用于与 Yookassa Payments API 交互的 Dart REST 客户端。通过这个插件,你可以在 Flutter 应用中轻松集成支付功能。

快速开始

添加依赖

首先,在 pubspec.yaml 文件中添加 yookassa_client 依赖:

dependencies:
  yookassa_client: ^1.0.5
使用示例

下面是一个完整的示例代码,展示了如何使用 yookassa_client 插件来创建支付请求并处理支付结果。

import 'package:dio/dio.dart';
import 'package:yookassa_client/yookassa_client.dart';

void main() async {
  // 初始化 Dio 实例
  final dio = Dio();

  // 初始化 YookassaClient 实例
  final yookassaClient = YookassaClient(
    dio,
    credentials: const YookassaAuthCredentials(
      shopId: 'your_shop_id',  // 替换为你的商店 ID
      secretKey: 'your_secret_key',  // 替换为你的密钥
    ),
  );

  // 创建支付请求
  const createdPaymentRequest = CreatePaymentRequest(
    amount: Amount(
      value: '100.00',  // 支付金额
      currency: 'RUB',  // 货币类型
    ),
    paymentMethodData: YookassaPaymentMethod.sbp(),  // 支付方式(例如:银行支付)
    confirmation: YookassaConfirmation.qr(),  // 确认方式(例如:二维码)
    capture: true,  // 是否立即捕获支付
    description: 'Заказ #1',  // 订单描述
  );

  try {
    // 发起支付请求
    final payment = await yookassaClient.createPayment(
      paymentRequest: createdPaymentRequest,
    );

    // 处理支付结果
    payment.map(
      pending: (payment) {
        print('支付状态: 待处理');
        print(payment);
      },
      waitingForCapture: (payment) {
        print('支付状态: 等待捕获');
        print(payment);
      },
      succeeded: (payment) {
        print('支付状态: 成功');
        print(payment);
      },
      canceled: (payment) {
        print('支付状态: 取消');
        print(payment);
      },
    );
  } on YookassaException catch (e) {
    // 捕获并处理支付异常
    print('支付失败: $e');
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用yookassa_client插件的示例代码。这个插件用于集成Yookassa支付服务。请注意,以下代码仅作为示例,实际项目中可能需要根据具体需求进行调整。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加yookassa_client插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  yookassa_client: ^最新版本号  # 替换为实际最新版本号

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

2. 配置Android和iOS

Android

android/app/src/main/AndroidManifest.xml中添加必要的权限(如果需要):

<uses-permission android:name="android.permission.INTERNET"/>

iOS

ios/Runner/Info.plist中,如果需要,可以添加必要的权限和配置。通常,对于支付插件,不需要额外的权限配置,但请确保你的iOS项目配置正确。

3. 初始化并配置Yookassa

在你的Flutter项目的main.dart或相应的Dart文件中,进行以下配置和调用:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Yookassa Payment Integration',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PaymentScreen(),
    );
  }
}

class PaymentScreen extends StatefulWidget {
  @override
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  final YookassaClient _yookassaClient = YookassaClient();

  void _makePayment() async {
    try {
      // 配置支付参数
      final paymentParams = PaymentParams(
        amount: 1000,  // 支付金额,单位:最小货币单位(如卢布为100代表1元)
        currency: Currency.RUB,
        confirmation: ConfirmationParams(
          type: ConfirmationType.REDIRECT,
          returnUrl: 'https://your-return-url.com',  // 回调URL
        ),
        description: 'Payment description',
        metadata: <String, String>{
          'order_id': '12345',  // 订单ID
        },
      );

      // 发起支付请求
      final paymentResult = await _yookassaClient.createPayment(
        paymentParams,
        shopId: 'your_shop_id',  // 替换为你的Yookassa Shop ID
        secretKey: 'your_secret_key',  // 替换为你的Yookassa Secret Key
      );

      // 处理支付结果
      if (paymentResult.status == PaymentStatus.AUTHORIZED) {
        // 支付成功,重定向到支付确认页面
        // 你可以在这里处理支付成功后的逻辑,比如显示支付成功页面或导航到其他页面
        print('Payment authorized: ${paymentResult.confirmation.redirectUrl}');
      } else {
        // 支付失败或待处理状态
        print('Payment failed or pending');
      }
    } catch (e) {
      // 处理异常
      print('Error during payment: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Yookassa Payment Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _makePayment,
          child: Text('Make Payment'),
        ),
      ),
    );
  }
}

4. 注意事项

  • 请确保你已经在Yookassa后台配置了正确的回调URL和Shop ID等信息。
  • your_shop_idyour_secret_key需要替换为你实际的Yookassa账户信息。
  • ConfirmationParams中的returnUrl应该是一个有效的URL,Yookassa在支付完成后会重定向到这个URL。
  • 在实际生产环境中,请确保你的支付信息(如Shop ID和Secret Key)不会硬编码在客户端代码中,可以考虑使用安全的后端服务来管理这些信息。

这个示例代码展示了如何在Flutter应用中集成并使用yookassa_client插件进行支付。根据实际需求,你可能需要调整支付参数和错误处理逻辑。

回到顶部