Flutter支付功能插件moneyhash_payment的使用

Flutter支付功能插件moneyhash_payment的使用

MoneyHash Flutter SDK 允许开发者将其支付处理功能集成到他们的应用中。该SDK提供了一种简单且方便的方式来接受客户付款、管理订阅和发送付款。

开始使用

您可以从我们的 集成指南示例项目 开始学习如何使用该插件。

如果您正在升级到新的SDK版本,请查看我们的 迁移指南变更日志

发行版

要查看每个发行版的更改摘要,请查阅 变更日志。有关如何从旧版本SDK进行升级的说明,请参阅 迁移指南

安装

步骤1:添加依赖

在您的 pubspec.yaml 文件中添加以下依赖项:

flutter pub add moneyhash_payment

这将向您的包的 pubspec.yaml 添加如下一行,并包含最新版本:

dependencies:
  moneyhash_payment: ^{{latest_version}}
步骤2:导入库

在您的Dart代码中,导入该库:

import 'package:moneyhash_payment/moneyhash_payment.dart';

示例代码

以下是完整的示例代码,展示了如何使用 moneyhash_payment 插件来处理支付。

import 'package:flutter/material.dart';
import 'package:moneyhash_payment/data/apple_pay_configuration.dart';
import 'package:moneyhash_payment/data/CustomFieldValue.dart';
import 'package:moneyhash_payment/data/IntentOperation.dart';
import 'package:moneyhash_payment/data/card/card_field_type.dart';
import 'package:moneyhash_payment/data/methods/get_methods_params.dart';
import 'package:moneyhash_payment/log/log_level.dart';
import 'package:moneyhash_payment/vault/card_collector.dart';
import 'package:moneyhash_payment/vault/widget/secure_text_field.dart';
import 'package:moneyhash_payment/vault/card_form_builder.dart';
import 'package:moneyhash_payment/moneyhash_payment.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  CardForm? _cardForm;
  String paymentIntentId = "";
  String cardIntentId = "";
  String customerId = "";
  String publicKey = "public";

  MoneyHashSDK moneyHashSDK = MoneyHashSDKBuilder()
      .setNativeApplePayConfig(ApplePayConfiguration(
        collectibleBillingData: [],
        merchantDisplayName: "Kero Store",
      ))
      .build();

  [@override](/user/override)
  void initState() {
    _cardForm = CardFormBuilder().setCardHolderNameField((state) {
      print("CardHolderName: ${state?.isValid}");
      print("CardHolderName: ${state?.errorMessage}");
    }).setCardNumberField((state) {
      print("CardNumber: ${state?.isValid}");
      print("CardNumber: ${state?.errorMessage}");
    }).setCVVField((state) {
      print("CVV: ${state?.isValid}");
      print("CVV: ${state?.errorMessage}");
    }).setExpiryMonthField((state) {
      print("ExpireMonth: ${state?.isValid}");
      print("ExpireMonth: ${state?.errorMessage}");
    }).setExpiryYearField((state) {
      print("ExpireYear: ${state?.isValid}");
      print("ExpireYear: ${state?.errorMessage}");
    }).setCardBrandChangeListener((cardBrand) {
      print("CardBrand: ${cardBrand?.brand}");
      print("CardBrand: ${cardBrand?.brandIconUrl}");
      print("CardBrand: ${cardBrand?.first6Digits}");
    }).build();

    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text("Testing card"),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            SecureTextField(
              label: "cardNumber",
              placeholder: "cardNumber",
              cardForm: _cardForm!,
              type: CardFieldType.cardNumber,
            ),
            const SizedBox(height: 16),
            SecureTextField(
              label: "cvv",
              placeholder: "cvv",
              cardForm: _cardForm!,
              type: CardFieldType.cvv,
            ),
            const SizedBox(height: 16),
            SecureTextField(
              label: "expireMonth",
              placeholder: "expireMonth",
              cardForm: _cardForm!,
              type: CardFieldType.expiryMonth,
            ),
            const SizedBox(height: 16),
            SecureTextField(
              label: "cardHolderName",
              placeholder: "cardHolderName",
              cardForm: _cardForm!,
              type: CardFieldType.cardHolderName,
            ),
            SecureTextField(
              label: "expireYear",
              placeholder: "expireYear",
              cardForm: _cardForm!,
              type: CardFieldType.expiryYear,
            ),
            const SizedBox(height: 16),
            ElevatedButton(
                onPressed: () async {
                  moneyHashSDK.setPublicKey(publicKey);
                  // moneyHashSDK.setLogLevel(LogLevel.verbose);

                  var customFields = {
                    'isActive': BooleanValue(true),
                    'score': FloatValue(3.14),
                    'rate': DoubleValue(42.0),
                    'name': StringValue('John Doe'),
                    "age": IntValue(25),
                  };

                  var methods = await moneyHashSDK.getMethods(GetMethodsParams.withCurrency(currency: "EGP", operation: IntentOperation.purchase, customFields: customFields));
                  print(methods.toJson());

                  // 可以继续在这里添加其他操作
                },
                child: const Text("Submit")),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成和使用moneyhash_payment插件来实现支付功能的示例代码。假设你已经有一个Flutter项目,并且已经添加了moneyhash_payment依赖到你的pubspec.yaml文件中。

首先,确保在pubspec.yaml中添加依赖:

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

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

接下来,我们将展示如何在你的Flutter应用中实现支付功能。

1. 导入插件

在你的Flutter应用的Dart文件中(例如main.dart),导入moneyhash_payment插件:

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

2. 配置支付参数

你需要在你的应用中配置MoneyHash支付的参数,例如API密钥、支付金额、商品描述等。

void _initiatePayment() async {
  // 配置你的MoneyHash支付参数
  final paymentOptions = MoneyHashPaymentOptions(
    apiKey: "your_moneyhash_api_key",  // 替换为你的MoneyHash API密钥
    amount: "10.00",  // 支付金额
    currency: "USD",  // 货币类型
    description: "Test Product",  // 商品描述
    successUrl: "https://yourwebsite.com/success",  // 支付成功后的回调URL
    cancelUrl: "https://yourwebsite.com/cancel",  // 支付取消后的回调URL
    // 其他可选参数,根据MoneyHash的API文档进行配置
  );

  try {
    // 发起支付请求
    final result = await MoneyHashPayment.startPayment(paymentOptions);
    if (result.success) {
      // 支付成功后的处理
      print("Payment successful: ${result.response}");
    } else {
      // 支付失败后的处理
      print("Payment failed: ${result.error}");
    }
  } catch (e) {
    // 捕获并处理异常
    print("An error occurred: $e");
  }
}

3. 创建支付按钮

在你的UI中创建一个按钮来触发支付功能:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('MoneyHash Payment Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _initiatePayment,
            child: Text('Pay Now'),
          ),
        ),
      ),
    );
  }
}

4. 运行应用

现在,你可以运行你的Flutter应用,点击“Pay Now”按钮,应该会跳转到MoneyHash的支付页面。

注意事项

  1. API密钥:确保你使用的是有效的MoneyHash API密钥。
  2. 支付回调:成功和取消的回调URL需要有效并能处理MoneyHash的回调请求。
  3. 错误处理:在实际应用中,你应该有更详细的错误处理逻辑,以便向用户显示有用的错误信息。

这个示例代码展示了如何在Flutter中使用moneyhash_payment插件来发起支付请求。根据你的具体需求,你可能需要调整支付参数和UI设计。

回到顶部