| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import 'package:flutter/material.dart';
- import 'package:yookassa_payments_flutter/yookassa_payments_flutter.dart';
- import 'package:yookassa_payments_flutter_example/success_tokenization_screen.dart';
- class TokenizationScreen extends StatefulWidget {
- const TokenizationScreen({Key? key}) : super(key: key);
- @override
- State<TokenizationScreen> createState() => TokenizationScreenState();
- }
- class TokenizationScreenState extends State<TokenizationScreen> {
- late TextEditingController controller;
- @override
- void initState() {
- controller = TextEditingController(text: "10.0");
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: const Text("Flutter Example App"),
- ),
- body: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Container(
- padding: const EdgeInsets.all(20.0),
- child: TextField(
- controller: controller,
- ),
- ),
- ElevatedButton(
- onPressed: () async {
- startTokenization();
- },
- child: const Text("Оплатить"))
- ],
- ),
- );
- }
- void startTokenization() async {
- var clientApplicationKey = "<Ключ для клиентских приложений>";
- var amount = Amount(value: controller.text, currency: Currency.rub);
- var moneyAuthClientId = "<ID для центра авторизации в системе YooMoney>";
- var shopId = "<Идентификатор магазина в ЮKassa>";
- var applicationScheme = "<Схема вашего приложения для deeplink>" "://";
- var tokenizationModuleInputData = TokenizationModuleInputData(
- clientApplicationKey: clientApplicationKey,
- title: "Космические объекты",
- subtitle: "Комета повышенной яркости, период обращения — 112 лет",
- amount: amount,
- savePaymentMethod: SavePaymentMethod.userSelects,
- isLoggingEnabled: true,
- moneyAuthClientId: moneyAuthClientId,
- shopId: shopId,
- customerId: "<Уникальный идентификатор покупателя>",
- applicationScheme: applicationScheme,
- tokenizationSettings: const TokenizationSettings(PaymentMethodTypes([
- PaymentMethod.bankCard,
- PaymentMethod.yooMoney,
- PaymentMethod.sberbank,
- PaymentMethod.sbp
- ])),
- testModeSettings: null);
- var result =
- await YookassaPaymentsFlutter.tokenization(tokenizationModuleInputData);
- if (result is SuccessTokenizationResult) {
- Navigator.push(
- context,
- MaterialPageRoute(
- builder: (BuildContext context) => SuccessTokenizationScreen(
- result: result,
- tokenizationData: tokenizationModuleInputData)));
- } else if (result is ErrorTokenizationResult) {
- showDialog(
- context: context,
- builder: (context) => AlertDialog(content: Text(result.error)));
- return;
- }
- }
- }
|