Flutter支付状态检查插件apklis_payment_checker的使用

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

Flutter支付状态检查插件apklis_payment_checker的使用

插件介绍

Apklis Payment Checker 是一个用于检查 Apklis 支付状态的 Flutter 插件。它提供了两种主要功能:

  1. 检查应用是否已购买(isPurchased
  • 参数:packageId(可选,如果未提供,则默认为当前应用包名)
  • 返回值:ApklisPaymentStatus 对象,包含 paidusername 属性
  • 获取 Apklis 应用信息(getApklistInfo
    • 返回值:ApklisInfo 对象,包含 isInstalledversionNameversionCode 属性

安装插件

首先,确保你已经安装了 Flutter 并且打开了终端。然后运行以下命令来安装插件:

flutter pub get

示例代码

下面是一个完整的示例代码,展示了如何使用 apklis_payment_checker 插件来检查支付状态和获取 Apklis 应用信息。

import 'dart:async';
import 'dart:developer';

import 'package:apklis_payment_checker/apklis_info.dart';
import 'package:apklis_payment_checker/apklis_info_checker.dart';
import 'package:apklis_payment_checker/apklis_payment_checker.dart';
import 'package:apklis_payment_checker/apklis_payment_status.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

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

class ExampleApp extends StatefulWidget {
  [@override](/user/override)
  ExampleAppState createState() => ExampleAppState();
}

class ExampleAppState extends State<ExampleApp> {
  final keyForm = GlobalKey<FormState>();
  final controller = TextEditingController();
  ApklisPaymentStatus status;
  ApklisInfo apklisInfo;

  [@override](/user/override)
  void initState() {
    super.initState();
    setPackageName();
  }

  Future<void> setPackageName() async {
    try {
      var packageName = await ApklisPaymentChecker.getPackageName();
      setState(() => controller.text = packageName);
    } on PlatformException catch (e) {
      log(e.toString());
    }
  }

  Future<void> requestPaymentStatus(String packageId) async {
    try {
      final status = await ApklisPaymentChecker.isPurchased(packageId);
      setState(() => this.status = status);
    } on PlatformException catch (e) {
      log(e.toString());
    }
  }

  Future<void> getApklisInfo() async {
    final apklisInfo = await ApklisInfoCheck.getApklisInfo();
    setState(() => this.apklisInfo = apklisInfo);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          title: const Text('Apklis Payment Checker'),
        ),
        body: Form(
          key: keyForm,
          autovalidateMode: AutovalidateMode.always,
          child: Column(
            children: [
              Container(
                margin: EdgeInsets.symmetric(vertical: 11, horizontal: 10),
                child: Row(
                  children: [
                    Expanded(
                      child: TextFormField(
                        controller: controller,
                        decoration: InputDecoration(
                          border: OutlineInputBorder(
                            borderRadius: const BorderRadius.all(
                              const Radius.circular(10.0),
                            ),
                          ),
                          labelText: 'Package Id',
                          hintText: 'com.example.nova.prosalud',
                        ),
                        keyboardType: TextInputType.text,
                        validator: (value) {
                          if (value == null || value.isEmpty) {
                            return 'Is required';
                          }
                          return null;
                        },
                      ),
                    ),
                  ],
                ),
              ),
              if (status != null & apklisInfo != null)
                Column(
                  children: [
                    Container(
                      margin: EdgeInsets.all(5),
                      child: Text('Apklis is installed:'),
                    ),
                    Container(
                      margin: EdgeInsets.all(5),
                      child: Text(
                        apklisInfo.isInstalled.toString(),
                        style: TextStyle(
                          fontWeight: FontWeight.bold,
                          fontSize: 20,
                        ),
                      ),
                    ),
                    if (apklisInfo.isInstalled)
                      Column(
                        children: [
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text('Apklis version code:'),
                          ),
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text(
                              apklisInfo.versionCode.toString(),
                              style: TextStyle(
                                fontWeight: FontWeight.bold,
                                fontSize: 20,
                              ),
                            ),
                          ),
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text('Apklis version name:'),
                          ),
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text(
                              apklisInfo.versionName,
                              style: TextStyle(
                                fontWeight: FontWeight.bold,
                                fontSize: 20,
                              ),
                            ),
                          ),
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text('Username registered in Apklis:'),
                          ),
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text(
                              status.username ?? 'Unknow',
                              style: TextStyle(
                                fontWeight: FontWeight.bold,
                                fontSize: 20,
                              ),
                            ),
                          ),
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text('App payment status:'),
                          ),
                          Container(
                            margin: EdgeInsets.all(5),
                            child: Text(
                              status.paid.toString(),
                              style: TextStyle(
                                fontWeight: FontWeight.bold,
                                fontSize: 20,
                              ),
                            ),
                          ),
                        ],
                      ),
                  ],
                ),
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.search),
          onPressed: () {
            if (keyForm.currentState.validate()) {
              final packageId = controller.text.trim();
              requestPaymentStatus(packageId);
              getApklleInfo();
            }
          },
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用 apklis_payment_checker Flutter 插件进行支付状态检查的代码示例。这个插件通常用于验证应用内购买(IAP)的状态,确保用户已经成功购买某项功能或内容。

首先,确保你已经在 pubspec.yaml 文件中添加了 apklis_payment_checker 依赖:

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

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

接下来,在你的 Flutter 应用中实现支付状态检查功能。以下是一个简单的示例代码:

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

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

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

class PaymentCheckerScreen extends StatefulWidget {
  @override
  _PaymentCheckerScreenState createState() => _PaymentCheckerScreenState();
}

class _PaymentCheckerScreenState extends State<PaymentCheckerScreen> {
  final PaymentChecker _paymentChecker = PaymentChecker();
  String _paymentStatus = "Checking payment status...";

  @override
  void initState() {
    super.initState();
    _checkPaymentStatus();
  }

  Future<void> _checkPaymentStatus() async {
    try {
      // 假设你有一个购买项目的SKU
      String sku = "your_purchase_sku";
      bool isPurchased = await _paymentChecker.isPurchased(sku);

      setState(() {
        if (isPurchased) {
          _paymentStatus = "Payment successful! Enjoy your premium features.";
        } else {
          _paymentStatus = "Payment not successful. Please purchase.";
        }
      });
    } catch (e) {
      setState(() {
        _paymentStatus = "Error checking payment status: ${e.message}";
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Payment Status Checker'),
      ),
      body: Center(
        child: Text(
          _paymentStatus,
          style: TextStyle(fontSize: 20),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 添加依赖:在 pubspec.yaml 中添加了 apklis_payment_checker 依赖。
  2. 创建主应用:定义了 MyAppPaymentCheckerScreen 小部件。
  3. 初始化支付检查:在 PaymentCheckerScreeninitState 方法中调用 _checkPaymentStatus 方法来检查支付状态。
  4. 检查支付状态:在 _checkPaymentStatus 方法中,使用 PaymentCheckerisPurchased 方法检查指定 SKU 的购买状态,并更新界面显示相应的状态信息。

请注意,这里的 sku 应该是你应用内购买项目的实际 SKU。另外,根据插件的具体实现和文档,可能还需要进行其他配置,比如初始化插件、处理不同的购买类型等。务必参考插件的官方文档和示例代码来获取最准确和最新的使用方法。

回到顶部