Flutter支付集成插件cielo_flutter的使用
Flutter支付集成插件cielo_flutter的使用
概述
cielo_flutter
是一个非官方的 Flutter 插件,用于集成 Cielo 和 Braspag 的支付服务。
免责声明
该 SDK 仅用于个人用途,并且功能仅限于满足我的项目需求。如果您希望贡献代码,请遵循相同的编码风格。幸运的是,这是一个非常简单的 SDK,易于理解和扩展。
开始使用
安装
在 pubspec.yaml
文件中添加 cielo_flutter
:
flutter pub add cielo_flutter
配置
首先,导入 cielo_flutter
包并初始化核心配置:
import 'package:cielo_flutter/cielo_flutter.dart';
// 初始化核心配置
const options = CieloOptions(
environment: CieloEnvironment.sandbox,
provider: CieloProvider.braspag,
language: CieloLanguage.pt,
);
Cielo.init(options);
// 初始化 Silent Order Post
const sop = CieloSOPOptions(enableTokenize: true);
Cielo.initSOP(sop);
使用
Silent Order Post
了解更多信息:
发送信用卡信息:
import 'package:cielo_flutter/cielo_flutter.dart';
String accessToken = "<SOP access token generated by your backend>";
CieloCard card = CieloCard(
cardNumber: '0000000000000001',
holder: 'John Doe',
expirationDate: '12/2021',
securityCode: '123',
);
await Cielo.sop.sendCard(card, accessToken: accessToken);
错误处理
try {
Cielo.sop.sendCard(brokenCard, accessToken: accessToken);
} on CieloCardValidationException catch (e) {
// 处理卡片验证错误。
print(e.field); // 导致错误的字段名称。
print(e.code); // 用于开发的错误代码。
print(e.message); // 用户友好的消息,根据核心选项进行本地化。
} on CieloException catch (e) {
// 处理 SDK 错误。
// 目前,仅在 SOP 中无效的 accessToken 抛出。
print(e.code); // 用于开发的错误代码。
print(e.message); // 用于开发的错误消息。
} on CieloAPIException catch (e) {
// 处理来自提供商的 API 错误。
print(e.code); // 用于开发的错误代码。
print(e.message); // 用于开发的错误消息。
}
其他
// 重置 SDK 所有配置。
Cielo.dispose();
许可证
该 SDK 采用 MIT 许可证,详情见 LICENSE。
示例代码
以下是完整的示例代码,展示了如何在 Flutter 应用中使用 cielo_flutter
插件。
import 'package:cielo_flutter/cielo_flutter.dart';
import 'package:credit_card_form/credit_card_form.dart';
import 'package:flutter/material.dart';
void main() {
// 初始化 Cielo 一次在启动时。
const options = CieloOptions(
provider: CieloProvider.braspag,
environment: CieloEnvironment.sandbox,
language: CieloLanguage.pt,
);
const sop = CieloSOPOptions(enableTokenize: true);
Cielo.init(options);
Cielo.initSOP(sop);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个小部件是您的应用的根。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Cielo Flutter',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final controller = CreditCardController();
CieloCard? card;
String? accessToken;
dynamic response;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Cielo Flutter'),
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
CreditCardForm(
controller: controller,
theme: CreditCardLightTheme(),
onChanged: (CreditCardResult result) {
card = CieloCard(
rawNumber: result.cardNumber,
holderName: result.cardHolderName,
expirationDate: '${result.expirationMonth}/20${result.expirationYear}',
securityCode: result.cvc,
);
},
),
TextField(
onChanged: (value) {
accessToken = value;
},
decoration: const InputDecoration(
labelText: 'SOP Access Token',
),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () async {
if (card != null && accessToken != null) {
try {
final r = await Cielo.sop.sendCard(card!, accessToken: accessToken!);
setState(() {
response = r;
});
} on CieloAPIException catch (e) {
setState(() {
response = e.toString();
});
} on CieloCardValidationException catch (e) {
setState(() {
// 使用 e.message 作为用户友好部分的消息。
response = e.toString();
});
} on CieloException catch (e) {
setState(() {
response = e.toString();
});
}
}
},
child: const Text('保存卡片'),
),
const SizedBox(height: 24),
if (response != null)
Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(response!.toString(), textAlign: TextAlign.center),
),
),
],
),
),
);
}
}
更多关于Flutter支付集成插件cielo_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件cielo_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
cielo_flutter
是一个用于在 Flutter 应用中集成 Cielo 支付功能的插件。Cielo 是巴西最大的支付处理公司之一,提供多种支付方式,包括信用卡、借记卡和电子钱包等。
本文将介绍如何在 Flutter 项目中使用 cielo_flutter
插件来实现支付功能。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 cielo_flutter
插件的依赖。
dependencies:
flutter:
sdk: flutter
cielo_flutter: ^latest_version
然后,运行 flutter pub get
来安装依赖。
2. 初始化 Cielo
在使用 cielo_flutter
之前,你需要初始化 Cielo 的支付环境。通常,你需要在应用启动时进行初始化。
import 'package:cielo_flutter/cielo_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Cielo
await CieloFlutter.initialize(
merchantId: 'YOUR_MERCHANT_ID',
merchantKey: 'YOUR_MERCHANT_KEY',
environment: CieloEnvironment.sandbox, // 使用沙盒环境进行测试
);
runApp(MyApp());
}
3. 创建支付请求
接下来,你可以创建一个支付请求。通常需要提供支付金额、支付方式(信用卡、借记卡等)以及其他相关信息。
import 'package:cielo_flutter/cielo_flutter.dart';
Future<void> makePayment() async {
final paymentRequest = PaymentRequest(
amount: 1000, // 支付金额(以分为单位)
currency: Currency.brl, // 货币类型(巴西雷亚尔)
paymentType: PaymentType.creditCard, // 支付类型(信用卡)
card: Card(
cardNumber: '4551870000000181', // 信用卡号
holder: 'Teste Holder', // 持卡人姓名
expirationDate: '12/2023', // 过期日期
securityCode: '123', // 安全码
brand: CardBrand.visa, // 信用卡品牌
),
);
try {
final paymentResult = await CieloFlutter.makePayment(paymentRequest);
print('Payment successful: ${paymentResult.paymentId}');
} catch (e) {
print('Payment failed: $e');
}
}
4. 处理支付结果
makePayment
方法会返回一个 PaymentResult
对象,其中包含支付的状态和支付 ID。你可以根据支付结果来更新用户界面或执行其他操作。
if (paymentResult.status == PaymentStatus.approved) {
// 支付成功
print('Payment approved with ID: ${paymentResult.paymentId}');
} else {
// 支付失败或取消
print('Payment failed or canceled');
}
5. 处理错误
在支付过程中,可能会遇到各种错误,例如网络问题、支付卡无效等。你可以使用 try-catch
块来捕获并处理这些错误。
try {
final paymentResult = await CieloFlutter.makePayment(paymentRequest);
// 处理支付成功
} on CieloException catch (e) {
// 捕获 Cielo 相关的错误
print('Cielo error: ${e.message}');
} catch (e) {
// 捕获其他错误
print('Error: $e');
}
6. 使用其他支付方式
除了信用卡支付,cielo_flutter
还支持其他支付方式,例如借记卡、电子钱包等。你可以在 PaymentRequest
中指定不同的 paymentType
和支付方式。
final paymentRequest = PaymentRequest(
amount: 1000,
currency: Currency.brl,
paymentType: PaymentType.debitCard, // 借记卡支付
card: Card(
cardNumber: '4551870000000181',
holder: 'Teste Holder',
expirationDate: '12/2023',
securityCode: '123',
brand: CardBrand.visa,
),
);