Flutter支付集成插件imepay_merchant_sdk的使用

Flutter支付集成插件imepay_merchant_sdk的使用

IME Pay Flutter Merchant Payment SDK 使商家能够通过他们的 Flutter 应用程序接收来自 IME Pay 客户的付款。应用程序执行付款并验证交易状态。

功能

IME Pay Flutter 商家支付 SDK 使商家能够通过其 Flutter 应用程序接收来自 IME Pay 客户的付款。应用程序执行付款并验证交易状态。

使用方法

示例代码

在您的 Flutter 项目中集成 imepay_merchant_sdk 插件后,您可以使用以下代码来启动支付流程:

var result =await StartSdk.callSdk(context,
    merchantCode: MERCHANT_CODE,
    merchantName: MERCHANT_NAME,
    merchantUrl: MERCHANT_URL,
    amount: AMOUNT,
    refId: REF_ID,
    module: MODULE,
    user: USER,
    password: PASSWORD,
    deliveryUrl: DELIVERY_URL,
    buildType: BuildType.STAGE);

完整示例代码

在您的 Flutter 项目中,创建一个 main.dart 文件,并添加以下代码:

import 'dart:convert';
import 'dart:math';
import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:imepay_merchant_sdk/constants/app_constants.dart';
import 'package:imepay_merchant_sdk/start_sdk.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 GetMaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'ImePay 商家 SDK',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'ImePay 商家 SDK'),
    );
  }
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  // 测试和生产详情由 IME Pay 团队提供

  var MERCHANT_CODE = "TEST_MERCHANTCOD";
  var MERCHANT_NAME = " TEST MERCHANTNAME";
  var MERCHANT_URL = "https://example.com/recordingurl"; // 录制 URL 由商家自行准备
  var AMOUNT = "100";
  var REF_ID = "1234567835"; // 交易的唯一标识符
  var MODULE = "TEST_MODULENAME";
  var USER = "testuser";
  var PASSWORD = "********";
  var DELIVERY_URL = "https://www.example.com/deliveryurl"; // 录制 URL 由商家自行准备
  var BUILD_TYPE = BuildType.STAGE;

  var merchantLogo = "assets/images/merchant_logo.png";

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: SingleChildScrollView(
        child: Padding(
          padding: const EdgeInsets.all(10.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.start,
            children: [
              InkWell(
                onTap: () async {
                  Random random = new Random();
                  random.nextInt(15);

                  var result = await StartSdk.callSdk(context,
                      merchantCode: MERCHANT_CODE,
                      merchantName: MERCHANT_NAME,
                      merchantUrl: MERCHANT_URL,
                      amount: AMOUNT,
                      refId: REF_ID,
                      module: MODULE,
                      user: USER,
                      password: PASSWORD,
                      deliveryUrl: DELIVERY_URL,
                      buildType: BUILD_TYPE);

                  showDialog(
                    context: context,
                    builder: (BuildContext context) {
                      return AlertDialog(content: Text(json.encode(result)));
                    },
                  );
                },
                child: Container(
                  padding: EdgeInsets.all(10),
                  color: Colors.red.shade800,
                  child: Text(
                    '进入支付',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 20,
                      fontFamily: AppFont.Volte,
                      fontWeight: FontWeight.w700,
                      package: "imepay_merchant_sdk",
                    ),
                  ),
                ),
              ),
              SizedBox(
                height: 20,
              )
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter应用中集成并使用imepay_merchant_sdk插件的示例代码。这个插件用于集成尼泊尔IME Pay支付网关。请确保你已经添加了imepay_merchant_sdk到你的pubspec.yaml文件中。

首先,确保你的pubspec.yaml中包含以下依赖项:

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

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

接下来,你需要进行一些配置,包括初始化IME Pay SDK、处理支付请求和支付回调。以下是一个完整的示例代码:

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

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

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

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  IMEPayClient _imePayClient;

  @override
  void initState() {
    super.initState();
    // 初始化IME Pay客户端
    _imePayClient = IMEPayClient(
      merchantId: '你的商户ID', // 替换为你的IME Pay商户ID
      publicKey: '你的公钥', // 替换为你的公钥
      privateKey: '你的私钥', // 替换为你的私钥
      env: IMEPayEnvironment.sandbox, // 测试环境使用sandbox,生产环境使用production
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('IME Pay Integration Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 创建支付请求
            IMEPayRequest request = IMEPayRequest(
              amount: 100.0, // 支付金额
              currency: 'NPR', // 货币类型
              productName: 'Test Product', // 商品名称
              productDescription: 'This is a test product.', // 商品描述
              callbackUrl: 'https://your-callback-url.com', // 支付回调URL
              customerEmail: 'customer@example.com', // 顾客邮箱
              customerPhone: '9876543210', // 顾客电话
              merchantData: 'merchant_data_example', // 商户自定义数据
            );

            // 发起支付请求
            try {
              IMEPayResponse response = await _imePayClient.initiatePayment(request);
              if (response.status == IMEPayStatus.success) {
                // 支付请求成功,跳转到IME Pay应用进行支付
                if (await canLaunch(response.url)) {
                  await launch(response.url);
                } else {
                  throw 'Could not launch ${response.url}';
                }
              } else {
                // 处理支付请求失败的情况
                print('Payment initiation failed: ${response.message}');
              }
            } catch (e) {
              print('Error: $e');
            }
          },
          child: Text('Initiate Payment'),
        ),
      ),
    );
  }
}

在这个示例中,我们完成了以下几个步骤:

  1. 初始化IME Pay客户端:在initState方法中,我们创建了一个IMEPayClient实例,并传入了商户ID、公钥、私钥和环境信息。

  2. 创建支付请求:在按钮点击事件中,我们构建了一个IMEPayRequest对象,包含了支付所需的各种信息,如金额、货币类型、商品名称等。

  3. 发起支付请求:调用_imePayClient.initiatePayment(request)方法发起支付请求,并根据返回的IMEPayResponse对象处理支付结果。如果支付请求成功,我们将跳转到IME Pay应用进行支付。

请注意,你需要替换示例代码中的占位符(如你的商户ID你的公钥你的私钥https://your-callback-url.com)为实际的值。此外,确保你的回调URL能够正确处理IME Pay的回调通知。

这个示例仅展示了基本的集成流程,实际应用中你可能还需要处理支付回调、错误处理等更多细节。

回到顶部