Flutter在线支付插件fast_zarinpal的使用

Flutter在线支付插件fast_zarinpal的使用

快速实现Zarin Pal支付的Flutter插件。

Logo

安装

1. 添加Fast Zarinpal到你的项目

flutter pub add fast_zarinpal

2. 在AndroidManifest.xml中添加回调

在AndroidManifest文件中添加以下代码:

<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="payment"
    android:host='yourdomain.com' />
</intent-filter>

提示: 可以输入你自己的地址代替yourdomain.com。如果这个地址未被其他应用注册,则不会有问题。例如,示例应用的AndroidManifest.xml文件可以查看这里

示例

以下是一个完整的示例代码,展示了如何使用FastZarinPal插件进行支付。

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    final ThemeData themeData = Theme.of(context);
    return MaterialApp(
      title: 'Fast Zarinpal Test',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: FastZarinPal(
          callback: 'yourdomain.com',
          merchantID: 'e8188181-8181-8181-8181-818181818181',
          paymentTitle: '购买月度订阅',
          priceToPay: 125000,
          totalPurchaseAmount: 150000,
          discount: 25000,
          onPaymentFailedWidgets: (amount) => FailedPaymentWidget(themeData: themeData),
          onSuccessWidgets: (amount, refID) {
            return const SuccessPaymentWidget();
          }),
    );
  }
}

class SuccessPaymentWidget extends StatelessWidget {
  const SuccessPaymentWidget({
    Key? key,
  }) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      children: [
        const Icon(
          Icons.check,
          color: Colors.green,
        ),
        const Text('您的支付成功!'),
        const SizedBox(
          height: 12,
        ),
        const Divider(),
        TextButton(
            onPressed: () {}, child: const Text('返回商店页面')),
      ],
    );
  }
}

class FailedPaymentWidget extends StatelessWidget {
  const FailedPaymentWidget({
    Key? key,
    required this.themeData,
  }) : super(key: key);

  final ThemeData themeData;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Icon(
          Icons.error,
          color: themeData.errorColor,
        ),
        Text(
          '您的支付失败了 :(',
          style: themeData.textTheme.subtitle1!.copyWith(
            color: themeData.errorColor,
          ),
        ),
        const Divider(),
        TextButton(onPressed: () {}, child: const Text('返回并重试')),
      ],
    );
  }
}

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

1 回复

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


fast_zarinpal 是一个用于在 Flutter 应用中集成 ZarinPal 在线支付的插件。ZarinPal 是伊朗的一个流行的在线支付网关,允许用户通过银行卡、电子钱包等方式进行支付。下面是使用 fast_zarinpal 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  fast_zarinpal: ^1.0.0  # 请使用最新版本

然后,运行 flutter pub get 来获取依赖。

2. 初始化插件

在你的 Dart 文件中导入 fast_zarinpal,并进行初始化:

import 'package:fast_zarinpal/fast_zarinpal.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'ZarinPal Payment Example',
      home: PaymentPage(),
    );
  }
}

3. 发起支付请求

在你的支付页面中,使用 FastZarinPal 类来发起支付请求。你需要提供 MerchantIDAmountDescription 以及 CallbackURL

class PaymentPage extends StatelessWidget {
  final FastZarinPal _zarinpal = FastZarinPal();

  Future<void> _startPayment() async {
    final paymentRequest = PaymentRequest(
      merchantID: 'YOUR_MERCHANT_ID',  // 替换为你的 Merchant ID
      amount: 1000,  // 金额(单位:Rial)
      description: 'Payment for Product',  // 支付描述
      callbackURL: 'https://yourwebsite.com/callback',  // 回调URL
    );

    try {
      final paymentResponse = await _zarinpal.startPayment(paymentRequest);
      if (paymentResponse.status == 100) {
        // 支付成功,处理订单
        print('Payment Success: ${paymentResponse.authority}');
      } else {
        // 支付失败,显示错误信息
        print('Payment Failed: ${paymentResponse.status}');
      }
    } catch (e) {
      print('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('ZarinPal Payment'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _startPayment,
          child: Text('Pay with ZarinPal'),
        ),
      ),
    );
  }
}
回到顶部