Flutter支付信息令牌化插件conekta_tokenizer的使用
Flutter支付信息令牌化插件conekta_tokenizer的使用
一个允许创建Conekta卡令牌的Flutter插件。
安装
在pubspec.yaml
文件中添加conekta_tokenizer
作为依赖项。
dependencies:
conekta_tokenizer: ^1.0.0
Android
为Android项目添加Internet权限。
<uses-permission android:name="android.permission.INTERNET"/>
在AndroidManifest.xml文件中添加以下内容:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
iOS
如果你正在使用iOS 9进行编译,在应用程序的plist文件中添加以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
使用
实例化ConektaTokenizer
类。
final conektaTokenizer = ConektaTokenizer();
设置你的Conekta API密钥。
conektaTokenizer.setApiKey("key_CUcWMZnt5zvqwePs2m432TQ");
当已经有了卡的信息后,创建一个ConektaCard
实例并创建卡令牌。
final conektaCard = ConektaCard(
cardName: 'Alfonso Osorio',
cardNumber: '4242424242424242',
cvv: '847',
expirationMonth: '12',
expirationYear: '2040',
);
try {
final String token = await conektaTokenizer.createCardToken(conektaCard);
} on PlatformException catch (exception) {
// 处理异常
}
错误
该插件可能会返回以下错误:
- ApiKeyNotProvided:这是因为未分配Conekta API密钥。
- InvalidCardArguments:这是因为一张或多张卡片参数为空或无效。
请注意,库不会验证或确认ConektaCard
实例中提供的数据是否正确,例如cvv或卡号的长度是否有效。
除了上述提到的错误外,当尝试创建卡令牌时,插件还会返回Conekta直接返回的错误。有关更多信息,请参阅Conekta API错误。
示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:conekta_tokenizer/conekta_tokenizer.dart';
import 'package:conekta_tokenizer/conekta_card.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _token = '未知';
@override
void initState() {
super.initState();
initPlatformState();
}
Future<void> initPlatformState() async {
String token = "未知";
try {
final ConektaTokenizer conektaFlutter = ConektaTokenizer();
await conektaFlutter.setApiKey('key_CUfWMZnF5zvKyzPs2m897TQ');
token = await conektaFlutter.createCardToken(ConektaCard(
cardName: 'Alfonso Osorio',
cardNumber: '4242424242424242',
cvv: '847',
expirationMonth: '12',
expirationYear: '2040',
));
} on PlatformException catch (exception) {
token = exception.message!;
}
if (!mounted) return;
setState(() => _token = token);
}
@override
Widget build(BuildContext context) => MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Conekta Flutter插件示例'),
),
body: Center(
child: Text('Conekta令牌: $_token\n'),
),
),
);
}
更多关于Flutter支付信息令牌化插件conekta_tokenizer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付信息令牌化插件conekta_tokenizer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
Conekta 是一个在拉丁美洲广泛使用的支付处理平台,它提供了一种名为 Tokenizer 的服务,用于将支付信息(如信用卡信息)令牌化,以增强安全性。在 Flutter 中,你可以使用 conekta_tokenizer
插件来实现这一功能。
以下是如何使用 conekta_tokenizer
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 conekta_tokenizer
插件的依赖:
dependencies:
flutter:
sdk: flutter
conekta_tokenizer: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化 Conekta
在应用程序启动时,你需要初始化 Conekta。通常,你可以在 main.dart
文件中进行初始化:
import 'package:conekta_tokenizer/conekta_tokenizer.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Conekta
ConektaTokenizer.initialize('your_public_key');
runApp(MyApp());
}
your_public_key
是你在 Conekta 平台上获取的公钥。
3. 令牌化支付信息
接下来,你可以使用 ConektaTokenizer
来令牌化支付信息。以下是一个示例:
import 'package:flutter/material.dart';
import 'package:conekta_tokenizer/conekta_tokenizer.dart';
class PaymentScreen extends StatefulWidget {
[@override](/user/override)
_PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
final TextEditingController _cardNumberController = TextEditingController();
final TextEditingController _nameController = TextEditingController();
final TextEditingController _expMonthController = TextEditingController();
final TextEditingController _expYearController = TextEditingController();
final TextEditingController _cvcController = TextEditingController();
Future<void> _tokenizeCard() async {
try {
final String cardNumber = _cardNumberController.text;
final String name = _nameController.text;
final String expMonth = _expMonthController.text;
final String expYear = _expYearController.text;
final String cvc = _cvcController.text;
final token = await ConektaTokenizer.tokenize(
cardNumber: cardNumber,
name: name,
expMonth: expMonth,
expYear: expYear,
cvc: cvc,
);
print('Token: $token');
// 你可以将 token 发送到你的服务器进行处理
} catch (e) {
print('Error tokenizing card: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Payment'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: _cardNumberController,
decoration: InputDecoration(labelText: 'Card Number'),
),
TextField(
controller: _nameController,
decoration: InputDecoration(labelText: 'Cardholder Name'),
),
TextField(
controller: _expMonthController,
decoration: InputDecoration(labelText: 'Expiration Month'),
),
TextField(
controller: _expYearController,
decoration: InputDecoration(labelText: 'Expiration Year'),
),
TextField(
controller: _cvcController,
decoration: InputDecoration(labelText: 'CVC'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _tokenizeCard,
child: Text('Tokenize Card'),
),
],
),
),
);
}
}