Flutter支付集成插件paylink_payment的使用

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

Flutter支付集成插件paylink_payment的使用

概述

paylink_payment 是一个Flutter插件,旨在简化将Paylink支付网关集成到Flutter应用程序中。它提供了一种在Flutter应用内处理支付的简便方法。

功能特性

  • 与Paylink支付网关轻松集成。
  • 简化支付流程,仅需少量代码。
  • 安全处理支付交易。
  • 支持发票的创建、查询、取消等操作。

使用步骤

1. 安装插件

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

dependencies:
  paylink_payment: ^2.0.2 # 请使用最新版本

2. 导入包

在Dart文件中导入 paylink_payment 包:

import 'package:paylink_payment/paylink_payment.dart';

3. 初始化Paylink实例

根据环境选择测试或生产模式进行初始化:

测试模式

paylink = PaylinkPayment.test(
  context: context,
  webViewTitle: 'Payment Screen', // 可选
  textColor: Colors.white, // 可选
  themeColor: Colors.blue, // 可选
);

生产模式

paylink = PaylinkPayment.production(
  context: context,
  apiId: '**************',
  secretKey: '**************',
  webViewTitle: 'Payment Screen', // 可选
  textColor: Colors.white, // 可选
  themeColor: Colors.blue, // 可选
);

4. 使用示例

打开支付表单

当按钮或其他动作触发时,使用 PaylinkPayment 类打开支付表单:

paylink.openPaymentForm(
  transactionNo: '1713690519134',
  onPaymentComplete: (PaylinkInvoice orderDetails) {
    // 处理支付完成逻辑
  },
  onError: (Object error) {
    // 处理支付错误逻辑
  },
);

添加发票

paylink.addInvoice(
  amount: 220.0,
  clientMobile: '0512345678',
  clientName: 'Mohammed',
  orderNumber: '123456789',
  callBackUrl: 'https://example.com',
  products: [
    PaylinkProduct(title: 'Book', price: 100, qty: 2),
    PaylinkProduct(title: 'Pen', price: 2, qty: 10),
  ],
  cancelUrl: 'https://example.com',
  clientEmail: 'mohammed@test.com',
  currency: 'SAR',
  displayPending: true,
  note: 'Test invoice',
  smsMessage: 'URL: [SHORT_URL], Amount: [AMOUNT]',
  supportedCardBrands: ['mada', 'visaMastercard', 'amex', 'tabby', 'tamara', 'stcpay', 'urpay'],
).then((PaylinkInvoice orderDetails) {
  // 处理成功响应
}).onError((error, stackTrace) {
  // 处理错误响应
});

查询发票详情

paylink.getInvoice('1713690519134').then((PaylinkInvoice orderDetails) {
  // 处理成功响应
}).onError((error, stackTrace) {
  // 处理错误响应
});

取消发票

paylink.cancelInvoice('1713690519134').then((bool result) {
  // 处理成功响应
}).onError((error, stackTrace) {
  // 处理错误响应
});

完整示例Demo

以下是一个完整的示例应用,展示了如何在Flutter应用中集成 paylink_payment 插件。

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String? paymentResponseMessage;
  late PaylinkPayment paylink;

  @override
  void initState() {
    super.initState();
    paylinkInitialize();
  }

  void paylinkInitialize() {
    paylink = PaylinkPayment.test(
      context: context,
      webViewTitle: 'Payment Screen',
      textColor: Colors.white,
      themeColor: Colors.blue,
    );
  }

  void addInvoice() {
    paylink.addInvoice(
      amount: 220.0,
      clientMobile: '0512345678',
      clientName: 'Mohammed',
      orderNumber: '123456789',
      callBackUrl: 'https://example.com',
      products: [
        PaylinkProduct(title: 'Book', price: 100, qty: 2),
        PaylinkProduct(title: 'Pen', price: 2, qty: 10),
      ],
      cancelUrl: 'https://example.com',
      clientEmail: 'mohammed@test.com',
      currency: 'SAR',
      displayPending: true,
      note: 'Test invoice',
      smsMessage: 'URL: [SHORT_URL], Amount: [AMOUNT]',
      supportedCardBrands: [
        'mada',
        'visaMastercard',
        'amex',
        'tabby',
        'tamara',
        'stcpay',
        'urpay'
      ],
    ).then((PaylinkInvoice orderDetails) {
      print('Invoice added successfully: $orderDetails');
    }).onError((error, stackTrace) {
      print('Error adding invoice: $error');
    });
  }

  void getInvoice(String transactionNo) {
    paylink.getInvoice(transactionNo).then((PaylinkInvoice orderDetails) {
      print('Invoice details: $orderDetails');
    }).onError((error, stackTrace) {
      print('Error getting invoice: $error');
    });
  }

  void checkout(String transactionNo) {
    paylink.openPaymentForm(
      transactionNo: transactionNo,
      onPaymentComplete: (PaylinkInvoice orderDetails) {
        print('Payment completed: $orderDetails');
      },
      onError: (error) {
        print('Payment error: $error');
      },
    );
  }

  void cancelInvoice(String transactionNo) {
    paylink.cancelInvoice(transactionNo).then((bool result) {
      print(result ? 'Invoice canceled successfully' : 'Failed to cancel invoice');
    }).onError((error, stackTrace) {
      print('Error canceling invoice: $error');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Paylink Payment Demo'),
        actions: [
          IconButton(
            icon: const Icon(Icons.add),
            onPressed: addInvoice,
          ),
        ],
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () => getInvoice('1713690519134'),
              child: const Text('Get Invoice'),
            ),
            ElevatedButton(
              onPressed: () => checkout('1713690519134'),
              child: const Text('Checkout Invoice'),
            ),
            ElevatedButton(
              onPressed: () => cancelInvoice('1713690519134'),
              child: const Text('Cancel Invoice'),
            ),
          ],
        ),
      ),
    );
  }
}

通过以上步骤和示例代码,您可以快速地将 paylink_payment 插件集成到您的Flutter应用中,并实现支付功能。


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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用paylink_payment插件的示例代码。这个插件通常用于处理支付功能,但请注意,具体实现可能会因插件版本和支付平台的要求而有所不同。

首先,确保你已经在pubspec.yaml文件中添加了paylink_payment依赖:

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

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

接下来,在你的Flutter项目中,你可以按照以下步骤进行支付功能的集成:

  1. 导入插件

在你的Dart文件中导入paylink_payment插件:

import 'package:paylink_payment/paylink_payment.dart';
  1. 配置支付参数

根据你的支付平台要求,配置支付所需的参数。以下是一个示例配置:

Map<String, dynamic> paymentData = {
  'amount': '100.00',  // 支付金额
  'currency': 'USD',   // 货币类型
  'description': 'Test Payment',  // 支付描述
  // 其他可能需要的参数,如支付ID、商品信息等,根据paylink_payment插件的文档进行配置
};
  1. 初始化并启动支付流程

使用PaylinkPayment类来初始化并启动支付流程:

void initiatePayment() async {
  try {
    // 初始化PaylinkPayment实例(如果需要的话,根据插件文档)
    // PaylinkPayment paylinkPayment = PaylinkPayment(); // 如果插件提供了构造函数

    // 调用支付方法(假设插件提供了一个名为startPayment的方法)
    bool result = await PaylinkPayment.startPayment(paymentData: paymentData);

    if (result) {
      print('Payment successful');
      // 处理支付成功后的逻辑
    } else {
      print('Payment failed or cancelled');
      // 处理支付失败或取消的逻辑
    }
  } catch (e) {
    print('Error initiating payment: $e');
    // 处理异常
  }
}

注意:上面的PaylinkPayment.startPayment方法及其参数是假设的,因为实际的插件API可能会有所不同。你需要参考paylink_payment插件的官方文档来获取正确的API调用方式和参数。

  1. 在UI中触发支付

在你的Flutter UI中,添加一个按钮或其他触发元素来调用initiatePayment方法:

import 'package:flutter/material.dart';

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

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

这个示例展示了如何在Flutter应用中集成paylink_payment插件并启动支付流程。但是,请注意,由于插件的具体实现和API可能会随着版本更新而变化,因此强烈建议你查阅paylink_payment插件的官方文档以获取最新的集成指南和API参考。

回到顶部