Flutter支付集成插件paystack_standard的使用

Flutter支付集成插件paystack_standard的使用

Paystack Standard简化了Paystack的集成——无需暴露您的PUB_KEY。这是通过使用Paystack重定向实现的。

特性

  • 提供Paystack的所有支付方式

开始使用

安装

pubspec.yaml文件中添加以下依赖:

flutter pub add paystack_standard

初始化交易

这一步需要在后端服务器上使用您的SECRET-KEY来完成。参考

const https = require('https')

const params = JSON.stringify({
  "email": "customer@email.com",
  "amount": "20000"
})

const options = {
  hostname: 'api.paystack.co',
  port: 443,
  path: '/transaction/initialize',
  method: 'POST',
  headers: {
    Authorization: 'Bearer SECRET_KEY',
    'Content-Type': 'application/json'
  }
}

const req = https.request(options, res => {
  let data = ''

  res.on('data', (chunk) => {
    data += chunk
  });

  res.on('end', () => {
    console.log(JSON.parse(data))
  })
}).on('error', error => {
  console.error(error)
})

req.write(params)
req.end()

示例响应

{
  "status": true,
  "message": "Authorization URL created",
  "data": {
    "authorization_url": "https://checkout.paystack.com/0peioxfhpn",
    "access_code": "0peioxfhpn",
    "reference": "7PVGX8MEk85tgeEpVDtD"
  }
}

返回一个authorization_url——您的后端服务器应该将此URL发送到前端/客户端进行结账。

注意事项

请确保在初始化Paystack交易时设置您的重定向URL。

结账/支付

从后端服务器发送的authorization_url作为唯一参数传递给Paystack Standard接口。PaystackStandard.checkout方法返回类型为CheckoutResponse的对象,其中包含一个success - bool和交易reference

PaystackStandard(context).checkout(checkoutUrl: "<authorization_url>").then((response){
  // 这里检查是否成功 - 需要通过后端服务器验证交易状态
});

屏幕截图

![paystack_bank] ![paystack_cancel] ![paystack_card] ![paystack_transfer] ![paystack_ussd]

完整示例代码

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            GestureDetector(
              onTap: () {
                PaystackStandard(context)
                    .checkout(checkoutUrl: "https://checkout.paystack.com/c3inl5xppg4z5qo");
              },
              child: Text(
                "Pay 1000N",
                style: Theme.of(context).textTheme.headlineMedium,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter应用中集成Paystack支付插件paystack_standard的示例代码。这个示例将展示如何进行基本的支付初始化、支付请求以及处理支付结果。

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

dependencies:
  flutter:
    sdk: flutter
  paystack_standard: ^最新版本号  # 替换为当前最新版本号

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

接下来,在你的Flutter应用中,你需要按照以下步骤进行支付集成:

  1. 配置Paystack密钥

在你的应用的入口文件(通常是main.dart或者一个专门用于初始化的文件)中,配置Paystack的公钥和私钥。这些密钥应该从Paystack仪表盘中获取。

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

void main() {
  // 初始化Paystack
  PaystackPlugin.init(
    publicKey: '你的公钥',  // 替换为你的Paystack公钥
    secretKey: '你的私钥',  // 替换为你的Paystack私钥(注意:私钥通常不在客户端使用,这里仅作为示例)
    encryptionKey: '你的加密密钥', // 替换为你的加密密钥(如果需要)
  );

  runApp(MyApp());
}

注意:在实际应用中,私钥不应该在客户端代码中暴露。通常,支付请求会通过你的后端服务器进行,后端服务器会使用私钥来生成必要的支付令牌等信息。

  1. 发起支付请求

在你的支付页面上,你可以使用PaystackPlugin.startTransaction方法来发起支付请求。

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

class PaymentPage extends StatefulWidget {
  @override
  _PaymentPageState createState() => _PaymentPageState();
}

class _PaymentPageState extends State<PaymentPage> {
  Future<void> _makePayment() async {
    try {
      // 发起支付请求
      String? response = await PaystackPlugin.startTransaction(
        amount: 1000, // 支付金额(单位:奈拉,Naira)
        email: '用户的邮箱地址',
        phone: '用户的电话号码',
        reference: '唯一的交易参考号', // 确保每次交易都是唯一的
        currency: 'NGN', // 货币代码
        // 其他可选参数,如metadata等,可以根据需要添加
      );

      // 处理支付响应
      if (response != null) {
        // 解析响应数据,通常包含支付状态等信息
        print('支付响应: $response');
      }
    } catch (e) {
      // 处理错误
      print('支付错误: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('支付页面'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _makePayment,
          child: Text('发起支付'),
        ),
      ),
    );
  }
}
  1. 处理支付结果

支付完成后,Paystack通常会重定向用户到一个指定的回调URL,或者通过某种方式通知你的后端服务器支付结果。你应该在后端服务器上处理这些回调,并更新你的应用状态。

由于支付结果处理涉及到后端逻辑,这里不展示具体的代码。但通常,你会在后端接收到Paystack的支付通知后,更新订单状态,并通过某种方式(如Firebase Cloud Messaging)通知客户端应用支付结果。

注意:在实际开发中,请务必遵循最佳实践,确保支付过程的安全性。特别是私钥的管理、交易数据的加密以及支付结果的验证等方面。

以上代码提供了一个基本的Flutter集成Paystack支付的示例。根据你的具体需求,你可能需要调整代码以适应你的应用逻辑和用户体验。

回到顶部