Flutter支付集成插件flutter_cielo的使用

flutter-cielo

Package用于使用Cielo e-Commerce SDK创建交易。更多详细信息请访问 文档

开始

在您的pubspec.yaml文件中添加flutter_cielo包。

dependencies:
  flutter_cielo: ^x.x.x

然后在代码中导入:

import 'package:flutter_cielo/flutter_cielo.dart';

初始化API对象:

final CieloEcommerce cielo = CieloEcommerce(
  environment: Environment.SANDBOX, // 环境设置为沙箱模式
  merchant: Merchant(
    merchantId: "SEU_MERCHANT_ID", // 商户ID
    merchantKey: "SEU_MERCHANT_KEY", // 商户密钥
  ),
);

创建一个销售对象并发起支付:

// 创建销售对象
Sale sale = Sale(
  merchantOrderId: "123", // 唯一订单ID
  customer: Customer(
    name: "Comprador crédito simples" // 用户名
  ),
  payment: Payment(
    type: TypePayment.creditCard, // 支付类型
    amount: 7777, // 金额(以分计算)
    installments: 1, // 分期数
    softDescriptor: "Cielo", // 支付描述
    creditCard: CreditCard(
      cardNumber: "1234123412341231", // 卡号
      holder: "Teste Holder", // 持卡人姓名
      expirationDate: "12/2030", // 到期日期
      securityCode: "123", // 安全码
      brand: "Visa", // 卡品牌
    ),
  ),
);

try {
  var response = await cielo.createSale(sale);
  print(response.payment.paymentId); // 打印支付ID
} catch (e) {
  print(e); // 捕获异常
}

Tokenizing一张信用卡

使用tokenizeCard方法对信用卡进行token化处理:

CreditCard cart = CreditCard(
  customerName: "Comprador Teste Cielo",
  cardNumber: "1234123412341231",
  holder: "Teste Holder",
  expirationDate: "12/2030",
  brand: "Visa",
);

try {
  var response = await cielo.tokenizeCard(cart);
  print(response.cardToken); // 打印生成的卡token
} on CieloException catch (e) {
  print(e.message); // 打印错误消息
  print(e.errors[0].message); // 打印具体错误信息
  print(e.errors[0].code); // 打印错误代码
}

使用Tokenized卡进行支付

使用已token化的卡进行支付:

Sale sale = Sale(
  merchantOrderId: "123",
  customer: Customer(
    name: "Comprador crédito simples"
  ),
  payment: Payment(
    type: TypePayment.creditCard,
    amount: 7777,
    installments: 1,
    softDescriptor: "Cielo",
    creditCard: CreditCard.token(
      cardToken: "1234123412341231", // 使用已token化的卡
      securityCode: "123",
      brand: "Visa",
    ),
  ),
);

try {
  var response = await cielo.createSale(sale);
  print(response.payment.paymentId); // 打印支付ID
} on CieloException catch (e) {
  print(e.message); // 打印错误消息
  print(e.errors[0].message); // 打印具体错误信息
  print(e.errors[0].code); // 打印错误代码
}

示例代码

以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_cielo/flutter_cielo.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 Home Page'),
    );
  }
}

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

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  final CieloEcommerce cielo = CieloEcommerce(
    environment: Environment.SANDBOX,
    merchant: Merchant(
      merchantId: "SEU_MERCHANT_ID",
      merchantKey: "SEU_MERCHANT_KEY",
    ),
  );

  void _incrementCounter() async {
    try {
      print("Iniciando pagamento tokenizado....");
      Sale sale = Sale(
        merchantOrderId: "123",
        customer: Customer(
          name: "Comprador crédito simples"
        ),
        payment: Payment(
          type: TypePayment.creditCard,
          amount: 7777,
          installments: 1,
          softDescriptor: "Pagame",
          creditCard: CreditCard(
            cardToken: "TOKEN_DO_CARTAO",
            securityCode: "123",
            brand: "Visa",
          ),
        ),
      );

      var response = await cielo.createSale(sale);
      print(response.payment.paymentId); // 打印支付ID
    } on CieloException catch (e) {
      print(e.message); // 打印错误消息
      print(e.errors[0].message); // 打印具体错误信息
      print(e.errors[0].code); // 打印错误代码
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('You have pushed the button this many times:'),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}
1 回复

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


flutter_cielo 是一个用于在 Flutter 应用中集成 Cielo 支付网关的插件。Cielo 是巴西最大的支付处理公司之一,支持多种支付方式,包括信用卡、借记卡和电子钱包等。

以下是如何在 Flutter 项目中使用 flutter_cielo 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_cielo: ^1.0.0  # 请使用最新版本

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

2. 配置 Cielo 商户信息

在使用 flutter_cielo 之前,你需要配置你的 Cielo 商户信息,包括 MerchantIdMerchantKey。你可以在 Cielo 的开发者门户中获取这些信息。

3. 初始化 Cielo 支付

在你的 Flutter 应用中初始化 Cielo 支付:

import 'package:flutter_cielo/flutter_cielo.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Cielo Payment Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              _startPayment();
            },
            child: Text('Pay with Cielo'),
          ),
        ),
      ),
    );
  }

  void _startPayment() async {
    // 初始化 Cielo
    Cielo cielo = Cielo(
      merchantId: 'YOUR_MERCHANT_ID',
      merchantKey: 'YOUR_MERCHANT_KEY',
      environment: CieloEnvironment.sandbox, // 使用沙盒环境进行测试
    );

    // 创建支付请求
    PaymentRequest paymentRequest = PaymentRequest(
      orderId: 'ORDER123',
      amount: 1000, // 金额以分为单位
      paymentType: PaymentType.creditCard,
      creditCard: CreditCard(
        cardNumber: '4111111111111111',
        holder: 'John Doe',
        expirationDate: '12/2025',
        securityCode: '123',
        brand: 'Visa',
      ),
    );

    // 发起支付
    try {
      PaymentResponse response = await cielo.createPayment(paymentRequest);
      if (response.status == PaymentStatus.authorized) {
        print('Payment authorized!');
      } else {
        print('Payment failed: ${response.returnMessage}');
      }
    } catch (e) {
      print('Error: $e');
    }
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!