Flutter支付集成插件ipaymu的使用

Flutter支付集成插件ipaymu的使用

该插件用于将Flutter与支付网关(IPAYMU)连接。

使用/示例

获取支付列表
var ipaymu = Ipaymu(vaNumber: "YOUR_VA_NUMBER", apiKey: "YOUR_API_KEY");
paymentMethodModel list = await ipaymu.getPaymentList();
直接支付
var body = {
    'name': 'Buyer',
    'phone': '081999501092',
    'email': 'buyer@mail.com',
    'amount': '10000',
    'notifyUrl': 'https://mywebsite.com',
    'expired': '24',
    'comments': 'Payment to XYZ',
    'referenceId': '1',
    'paymentMethod': 'cc',
    'paymentChannel': 'cc',
    'feeDirection': 'BUYER'
};

var ipaymu = Ipaymu(vaNumber: "YOUR_VA_NUMBER", apiKey: "YOUR_API_KEY");
directPaymentModel payment = await ipaymu.directPayment(body);

完整示例Demo

以下是一个完整的示例Demo,展示了如何在Flutter应用中使用ipaymu插件。

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

import 'package:flutter/services.dart';
import 'package:ipaymu/ipaymu.dart';

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = '未知';

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

  // 平台消息是异步的,因此我们在异步方法中初始化。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,所以我们使用try/catch来捕获PlatformException。
    // 我们还处理了消息可能返回null的情况。
    try {
      platformVersion = await Ipaymu.platformVersion ?? '未知平台版本';
    } on PlatformException {
      platformVersion = '获取平台版本失败。';
    }

    // 如果小部件从树中被移除时异步平台消息还在飞行中,我们希望丢弃回复而不是调用
    // setState来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text('运行于: $_platformVersion\n'),
        ),
      ),
    );
  }
}

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

1 回复

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


iPaymu 是一个印尼的支付网关,允许用户通过各种支付方式进行支付,如银行转账、信用卡、电子钱包等。在 Flutter 应用中集成 iPaymu 支付功能,通常需要使用 iPaymu 提供的 API 和 SDK。虽然目前 Flutter 官方没有专门为 iPaymu 提供的插件,但你可以通过以下步骤手动集成 iPaymu 支付功能。

1. 获取 iPaymu API 密钥

首先,你需要在 iPaymu 官网上注册一个账户并获取 API 密钥。这个密钥将用于在 Flutter 应用中与 iPaymu 的 API 进行交互。

2. 添加依赖

pubspec.yaml 文件中添加 http 依赖,用于发送 HTTP 请求到 iPaymu API。

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3

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

3. 创建支付服务

创建一个 Dart 文件来封装与 iPaymu API 的交互逻辑。

import 'dart:convert';
import 'package:http/http.dart' as http;

class IPaymuService {
  final String apiKey;
  final String baseUrl = 'https://my.ipaymu.com/api/v2';

  IPaymuService({required this.apiKey});

  Future<Map<String, dynamic>> createPayment({
    required String product,
    required int quantity,
    required int price,
    required String returnUrl,
    required String cancelUrl,
    required String notifyUrl,
    required String buyerName,
    required String buyerEmail,
    required String buyerPhone,
  }) async {
    final url = Uri.parse('$baseUrl/payment');
    final body = {
      'product': product,
      'quantity': quantity,
      'price': price,
      'returnUrl': returnUrl,
      'cancelUrl': cancelUrl,
      'notifyUrl': notifyUrl,
      'buyerName': buyerName,
      'buyerEmail': buyerEmail,
      'buyerPhone': buyerPhone,
    };

    final response = await http.post(
      url,
      headers: {
        'Content-Type': 'application/json',
        'va': apiKey,
      },
      body: jsonEncode(body),
    );

    if (response.statusCode == 200) {
      return jsonDecode(response.body);
    } else {
      throw Exception('Failed to create payment');
    }
  }
}

4. 在 Flutter 中使用支付服务

在你的 Flutter 应用中使用 IPaymuService 来创建支付请求,并处理响应。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PaymentPage(),
    );
  }
}

class PaymentPage extends StatelessWidget {
  final IPaymuService ipaymuService = IPaymuService(apiKey: 'your_ipaymu_api_key');

  Future<void> initiatePayment() async {
    try {
      final response = await ipaymuService.createPayment(
        product: 'Sample Product',
        quantity: 1,
        price: 10000,
        returnUrl: 'https://example.com/return',
        cancelUrl: 'https://example.com/cancel',
        notifyUrl: 'https://example.com/notify',
        buyerName: 'John Doe',
        buyerEmail: 'john.doe@example.com',
        buyerPhone: '081234567890',
      );

      // Handle the response
      print(response);
      // Redirect to the payment URL
      // You can use a WebView or launch the URL in a browser
    } catch (e) {
      print('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('iPaymu Payment'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: initiatePayment,
          child: Text('Pay Now'),
        ),
      ),
    );
  }
}
回到顶部