Flutter支付集成插件esewa_flutter的使用

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

Flutter支付集成插件esewa_flutter的使用

eSewa Flutter是一个非官方的Flutter插件,用于集成eSewa支付网关。通过这个插件,您可以轻松地将eSewa支付网关集成到您的Flutter应用中,并开始接受客户的付款。

主要特点

  • 简单易用
  • 不需要复杂的设置
  • 纯Dart代码实现
  • 支持开发和生产环境

环境要求

  • Android: minSdkVersion 19 并支持androidx
  • iOS: Xcode版本 >= 11

设置步骤

添加依赖

在您的pubspec.yaml文件中添加esewa_flutter作为依赖项:

dependencies:
  esewa_flutter: ^1.0.0

导入包

在您的Dart代码中导入该包:

import 'package:esewa_flutter/esewa_flutter.dart';

创建配置实例

创建一个包含支付信息的ESewaConfig实例:

final config = ESewaConfig.live(
  amt: 100, // 支付金额
  scd: 'merchant_id', // 商户代码
  pid: 'product_id', // 商品ID
  su: 'https://success.com.np', // 成功回调URL
  fu: 'https://failure.com.np', // 失败回调URL
);

初始化支付

调用Esewa.init()方法来初始化支付:

final result = await Esewa.i.init(
  context: context,
  eSewaConfig: config,
);

检查支付结果

根据返回的结果判断支付是否成功:

if (result.hasData) {
  // 支付成功
  final response = result.data!;
  print('Payment successful. Ref ID: ${response.refId}');
} else {
  // 支付失败或取消
  final error = result.error!;
  print('Payment failed or cancelled. Error: $error');
}

示例Demo

下面是一个完整的示例项目,展示了如何在Flutter应用中集成eSewa支付:

import 'package:esewa_flutter/esewa_flutter.dart';
import 'package:flutter/material.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: 'Esewa Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: const EsewaApp(title: 'Esewa Payment'),
    );
  }
}

class EsewaApp extends StatefulWidget {
  const EsewaApp({Key? key, required this.title}) : super(key: key);

  final String title;

  [@override](/user/override)
  State<EsewaApp> createState() => _EsewaAppState();
}

class _EsewaAppState extends State<EsewaApp> {
  String refId = '';
  String hasError = '';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            EsewaPayButton(
              paymentConfig: ESewaConfig.dev(
                su: 'https://www.marvel.com/hello', // 成功回调URL
                amt: 10, // 支付金额
                fu: 'https://www.marvel.com/hello', // 失败回调URL
                pid: '1212', // 商品ID
              ),
              width: 100,
              onFailure: (result) async {
                setState(() {
                  refId = '';
                  hasError = result;
                });
                print(result);
              },
              onSuccess: (result) async {
                setState(() {
                  hasError = '';
                  refId = result.refId!;
                });
                print(result.toJson());
              },
            ),
            if (refId.isNotEmpty)
              Text('Console: Payment Success, Ref Id: $refId'),
            if (hasError.isNotEmpty)
              Text('Console: Payment Failed, Message: $hasError'),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用esewa_flutter插件的示例代码。esewa_flutter是一个用于集成Esewa支付网关的Flutter插件。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加esewa_flutter依赖:

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

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

2. 配置Android和iOS

Android

在你的android/app/src/main/AndroidManifest.xml文件中添加以下权限(如果尚未添加):

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

iOS

确保你的iOS项目配置正确,通常不需要额外的配置,除非有特定的网络或权限要求。

3. 初始化Esewa支付

在你的Flutter代码中,导入esewa_flutter包并进行初始化。以下是一个简单的示例,展示如何启动Esewa支付:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Esewa Payment Integration'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // Esewa支付参数
              final EsewaParameters params = EsewaParameters(
                merchantId: '你的商户ID',  // 替换为你的Esewa商户ID
                amount: '100.00',          // 支付金额
                productInfo: 'Test Product', // 产品信息
                successUrl: 'https://yourwebsite.com/success', // 支付成功回调URL
                failUrl: 'https://yourwebsite.com/fail',       // 支付失败回调URL
                callbackUrl: 'https://yourwebsite.com/callback', // 回调通知URL
                language: 'NE', // 语言代码,例如'NE'代表尼泊尔语,'EN'代表英语
              );

              try {
                // 启动Esewa支付
                final EsewaResponse response = await EsewaFlutter.startPayment(params);
                print('Payment response: ${response.toJson()}');
              } catch (e) {
                print('Error: $e');
              }
            },
            child: Text('Pay with Esewa'),
          ),
        ),
      ),
    );
  }
}

class EsewaParameters {
  final String merchantId;
  final String amount;
  final String productInfo;
  final String successUrl;
  final String failUrl;
  final String callbackUrl;
  final String language;

  EsewaParameters({
    required this.merchantId,
    required this.amount,
    required this.productInfo,
    required this.successUrl,
    required this.failUrl,
    required this.callbackUrl,
    required this.language,
  });
}

class EsewaResponse {
  final String status;
  final String message;

  EsewaResponse({
    required this.status,
    required this.message,
  });

  Map<String, dynamic> toJson() {
    return {
      'status': status,
      'message': message,
    };
  }
}

注意

  1. EsewaParameters类是一个简单的数据类,用于封装传递给Esewa的参数。在实际应用中,你可能需要更复杂的参数处理和数据验证。
  2. EsewaResponse类用于处理从Esewa返回的支付响应。根据Esewa的API文档,你可能需要处理更多的响应字段。
  3. 确保你已经正确配置了Esewa商户ID和回调URL。

4. 处理回调

在你的网站上处理Esewa的回调通知,以验证支付状态并更新你的订单状态。这通常涉及到验证Esewa发送的签名和订单详情。

由于回调处理涉及到服务器端逻辑,这里不再详细展开。你可以参考Esewa的官方文档来了解如何处理回调通知。

总结

以上代码展示了如何在Flutter应用中集成并使用esewa_flutter插件来启动Esewa支付。确保你已经正确配置了所有必要的参数和回调URL,并在你的服务器上处理支付回调通知。

回到顶部