Flutter支付集成插件esewa_client的使用

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

Flutter支付集成插件esewa_client的使用

esewa_client 是一个用于将 ESEWA 商家服务集成到您的应用程序中的 Flutter 插件。

开始使用

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

dependencies:
    esewa_client: ^0.1.1

在您的 AndroidManifest.xml 文件中添加以下属性(这将设置应用级别的主题为 Theme.AppCompat 的后代):

<application
...
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
...>
...
</application>

注意:目前此插件仅支持 Android 版本(iOS 版本即将推出)。

如何使用

以下是使用 esewa_client 插件的基本示例:

// 更改生产环境中的凭证

EsewaClient _esewaClient = EsewaClient.configure(
  clientId: "JB0BBQ4aD0UqIThFJwAKBgAXEUkEGQUBBAwdOgABHD4DChwUAB0R",
  secretKey: "BhwIWQQADhIYSxILExMcAgFXFhcOBwAKBgAXEQ==",
  environment: EsewaEnvironment.TEST,
);

/*
* 输入您的回调 URL 以接收来自 Esewa 的响应回调到您的客户端服务器
* */
EsewaPayment payment = EsewaPayment(
    productId: "test_id",
    amount: "10",
    name: "Test Product",
    callbackUrl:
    "http://example.com/");

// 开始您的支付流程
_esewaClient.startPayment(
    esewaPayment: payment,
    onSuccess: (data) {
      print("success");
    },
    onFailure: (data) {
      print("failure");
    },
    onCancelled: (data) {
      print("cancelled");
    });

完整示例代码

以下是完整的示例代码,您可以将其复制到您的项目中并运行。

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

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

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: TextButton(
            child: Text('通过 Esewa 支付'),
            onPressed: _payViaEsewa,
          ),
        ),
      ),
    );
  }

  _payViaEsewa() async {
    // 更改生产环境中的凭证
    EsewaClient _esewaClient = EsewaClient.configure(
      clientId: "JB0BBQ4aD0UqIThFJwAKBgAXEUkEGQUBBAwdOgABHD4DChwUAB0R",
      secretKey: "BhwIWQQADhIYSxILExMcAgFXFhcOBwAKBgAXEQ==",
      environment: EsewaEnvironment.TEST,
    );

    /*
    * 输入您的回调 URL 以接收来自 Esewa 的响应回调到您的客户端服务器
    * */
    EsewaPayment payment = EsewaPayment(
        productId: "test_id",
        amount: "10",
        name: "测试产品",
        callbackUrl:
        "http://example.com/");

    _esewaClient.startPayment(
        esewaPayment: payment,
        onSuccess: (data) {
          print("成功");
        },
        onFailure: (data) {
          print("失败");
        },
        onCancelled: (data) {
          print("取消");
        });
  }
}

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

1 回复

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


在Flutter应用中集成Esewa支付插件esewa_client通常涉及几个关键步骤,包括插件安装、配置以及支付功能的实现。以下是一个基本的代码示例,展示了如何使用esewa_client插件进行支付集成。

步骤 1: 添加依赖

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

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

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

步骤 2: 配置Android和iOS

确保你的Android和iOS项目已经正确配置了网络权限和URL Scheme,因为Esewa支付流程需要访问外部URL。

Android配置

android/app/src/main/AndroidManifest.xml中添加网络权限:

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

iOS配置

ios/Runner/Info.plist中确保添加了适当的URL Scheme(如果需要的话,具体根据Esewa的要求来配置)。

步骤 3: 实现支付功能

以下是一个简单的Flutter代码示例,展示如何使用esewa_client插件进行支付:

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

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

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

  void _initiatePayment() async {
    // Esewa支付所需的参数
    String merchantId = '你的商户ID';
    String amount = '100'; // 支付金额,单位:尼泊尔卢比
    String productInfo = '测试商品';
    String successUrl = 'https://yourwebsite.com/success';
    String failUrl = 'https://yourwebsite.com/fail';
    String callbackUrl = 'https://yourwebsite.com/callback'; // 可选

    // 创建支付请求
    final EsewaPaymentRequest request = EsewaPaymentRequest(
      merchantId: merchantId,
      amount: amount,
      productInfo: productInfo,
      successUrl: successUrl,
      failUrl: failUrl,
      callbackUrl: callbackUrl,
    );

    try {
      // 发起支付
      final EsewaPaymentResponse response = await EsewaClient.startPayment(request);
      print('支付响应: ${response.toMap()}');
      
      // 根据响应结果处理支付成功或失败逻辑
      if (response.status == 'SUCCESS') {
        // 支付成功处理逻辑
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('支付成功!')),
        );
      } else {
        // 支付失败处理逻辑
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('支付失败!')),
        );
      }
    } catch (e) {
      // 错误处理
      print('支付过程中发生错误: $e');
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('支付过程中发生错误!')),
      );
    }
  }
}

注意事项

  1. 商户ID和回调URL:确保你使用的是从Esewa获取的正确的商户ID和回调URL。
  2. 金额单位:金额单位是尼泊尔卢比(NPR)。
  3. 错误处理:在实际应用中,你需要更详细的错误处理逻辑,以便更好地处理各种可能的异常情况。
  4. 安全性:确保你的应用遵循最佳安全实践,特别是在处理支付信息时。

以上代码提供了一个基本的集成示例,你可以根据自己的需求进行扩展和修改。

回到顶部