Flutter电商集成插件cielo_ecommerce的使用

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

Flutter电商集成插件cielo_ecommerce的使用

简介

cielo_ecommerce 是一个用于在Flutter应用中集成Cielo e-Commerce API的插件。通过这个插件,开发者可以轻松实现多种支付方式,包括信用卡、boleto(巴西银行票据)、Google Pay等。本文将详细介绍如何使用该插件,并提供一个完整的示例代码。

插件功能

cielo_ecommerce 插件支持以下功能:

  • 简单交易:直接进行信用卡支付。
  • 完整交易:包含更多支付选项和配置。
  • 令牌化卡片:将信用卡信息转换为安全的令牌,以便后续使用。
  • 欺诈分析:在支付过程中进行欺诈检测。
  • boleto支付:生成并处理boleto支付。
  • Google Pay:集成Google Pay进行支付。

使用步骤

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 cielo_ecommerce 依赖:

dependencies:
  cielo_ecommerce: ^2.2.0
2. 导入包

在需要使用的Dart文件中导入 cielo_ecommerce 包:

import 'package:cielo_ecommerce/cielo_ecommerce.dart';

示例代码

以下是一个完整的示例代码,展示了如何使用 cielo_ecommerce 插件进行简单的信用卡支付,并提供了查询、批准和取消交易的功能。

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Cielo Ecommerce'),
    );
  }
}

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

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

var paymentId;
int? status = 0;
var enableAction;
var returnMessage;

class _MyHomePageState extends State<MyHomePage> {
  final CieloEcommerce cielo = CieloEcommerce(
    environment: Environment.sandbox, // 使用沙箱环境进行测试
    merchant: Merchant(
      merchantId: "SEU_MERCHANT_ID", // 替换为你的商户ID
      merchantKey: "SEU_MERCHANT_KEY", // 替换为你的商户密钥
    ),
  );

  /// 执行支付操作
  _makePayment() async {
    print("Transação Simples");
    print("Iniciando pagamento....");

    // 创建销售对象
    Sale sale = Sale(
      merchantOrderId: "2020032601", // 订单编号
      customer: Customer(
        name: "Comprador crédito simples", // 客户姓名
      ),
      payment: Payment(
        type: TypePayment.creditCard, // 支付类型:信用卡
        amount: 9, // 金额(以分为单位)
        installments: 1, // 分期数
        softDescriptor: "Mensagem", // 将显示在客户账单上的描述(最多15个字符)
        creditCard: CreditCard(
          cardNumber: "4024007153763191", // 信用卡号
          holder: 'Teste accept', // 卡片持有人姓名
          expirationDate: '08/2030', // 有效期
          securityCode: '123', // 安全码
          brand: 'Visa', // 卡片品牌
        ),
      ),
    );

    try {
      var response = await cielo.createSale(sale);

      print('paymentId ${response!.payment!.paymentId}');
      paymentId = response.payment!.paymentId;
      status = response.payment!.status;

      setState(() {});
    } on CieloException catch (e) {
      print(e);
      print(e.message);
      print(e.errors[0].message);
      print(e.errors[0].code);
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    if (status == 0) {
      returnMessage = 'Aguardando atualização de status'; // 等待状态更新
    } else if (status == 1) {
      returnMessage = 'Pagamento apto a ser capturado ou definido como pago'; // 可以捕获或确认支付
    } else if (status == 2) {
      returnMessage = 'Pagamento confirmado e finalizado'; // 支付已确认并完成
    } else if (status == 10) {
      returnMessage = 'Pagamento cancelado'; // 支付已取消
    }

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title!),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Padding(
              padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
              child: Text(
                'Status: $status - $returnMessage',
                textAlign: TextAlign.center,
              ),
            ),
            ElevatedButton(
                child: Text('Consultar', style: TextStyle(color: Colors.white)),
                style: ElevatedButton.styleFrom(
                  primary: Colors.blue,
                ),
                onPressed: () async {
                  print('Consultar');
                  try {
                    // 查询支付状态
                    enableAction = await cielo.getReturn(paymentId);

                    // 打印查询结果
                    print(enableAction.toJson());

                    // 更新支付状态
                    status = enableAction.toJson()['Payment'].toJson()['Status'];

                    setState(() {});
                  } on CieloException catch (e) {
                    print(e);
                    print(e.message);
                    print(e.errors[0].message);
                    print(e.errors[0].code);
                  }
                }),
            ElevatedButton(
                child: Text('Aprovar', style: TextStyle(color: Colors.white)),
                style: ElevatedButton.styleFrom(
                  primary: Colors.green,
                ),
                onPressed: () async {
                  print('Aprovar');
                  try {
                    // 批准支付
                    enableAction = await cielo.enableCapture(paymentId);
                    status = enableAction.status;

                    setState(() {});
                  } on CieloException catch (e) {
                    print(e);
                    print(e.message);
                    print(e.errors[0].message);
                    print(e.errors[0].code);
                  }
                }),
            ElevatedButton(
                child: Text('Cancelar', style: TextStyle(color: Colors.white)),
                style: ElevatedButton.styleFrom(
                  primary: Colors.red,
                ),
                onPressed: () async {
                  print('Cancelar');
                  try {
                    // 取消支付
                    enableAction = await cielo.enableVoid(paymentId);
                    status = enableAction.status;
                    setState(() {});
                  } on CieloException catch (e) {
                    print(e);
                    print(e.message);
                    print(e.errors[0].message);
                    print(e.errors[0].code);
                  }
                }),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _makePayment,
        tooltip: 'Increment',
        child: Icon(Icons.payment),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter电商应用中集成cielo_ecommerce插件的示例代码。cielo_ecommerce是一个用于处理Cielo支付网关集成的Flutter插件。这个示例将展示如何初始化插件并进行支付请求。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加cielo_ecommerce依赖:

dependencies:
  flutter:
    sdk: flutter
  cielo_ecommerce: ^latest_version  # 请替换为最新版本号

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

2. 初始化插件

在你的Flutter应用中,你需要初始化CieloEcommerce插件。通常,这可以在应用的入口文件(如main.dart)中完成。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化CieloEcommerce插件
  CieloEcommerce.init(
    merchantId: 'your_merchant_id',  // 替换为你的商家ID
    merchantKey: 'your_merchant_key', // 替换为你的商家密钥
  );
  runApp(MyApp());
}

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

  void _makePayment() async {
    // 创建支付请求
    var paymentRequest = PaymentRequest(
      amount: 1000, // 支付金额,单位为分
      currency: 'BRL', // 货币代码
      softDescriptor: 'Test Payment', // 软描述符,显示在用户的银行账户中
      creditCard: CreditCard(
        number: '4111111111111111', // 测试信用卡号
        holder: 'John Doe', // 卡持有人姓名
        expMonth: '12', // 到期月份
        expYear: '24', // 到期年份
        cvv: '123', // CVV安全码
      ),
    );

    try {
      // 发起支付请求
      var paymentResponse = await CieloEcommerce.makePayment(paymentRequest);
      print('Payment successful: ${paymentResponse.toJson()}');
    } catch (e) {
      // 处理错误
      print('Payment failed: $e');
    }
  }
}

3. 处理支付响应

在上面的代码中,_makePayment方法创建了一个PaymentRequest对象,并使用插件的makePayment方法发起支付请求。支付成功后,你可以处理支付响应数据。如果支付失败,你可以捕获并处理异常。

注意事项

  1. 安全性:在实际应用中,不要在客户端代码中硬编码敏感信息,如信用卡详情。这些信息应该通过安全的服务器端流程进行处理。
  2. 错误处理:确保对可能的异常情况(如网络错误、支付失败等)进行妥善处理。
  3. UI/UX:上述示例仅用于演示目的,实际应用中应有更友好的用户界面和用户体验设计。

这个示例展示了如何在Flutter应用中集成cielo_ecommerce插件并进行支付请求。根据你的具体需求,你可能需要进一步定制和扩展代码。

回到顶部