tokenization_screen.dart 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import 'package:flutter/material.dart';
  2. import 'package:yookassa_payments_flutter/yookassa_payments_flutter.dart';
  3. import 'package:yookassa_payments_flutter_example/success_tokenization_screen.dart';
  4. class TokenizationScreen extends StatefulWidget {
  5. const TokenizationScreen({Key? key}) : super(key: key);
  6. @override
  7. State<TokenizationScreen> createState() => TokenizationScreenState();
  8. }
  9. class TokenizationScreenState extends State<TokenizationScreen> {
  10. late TextEditingController controller;
  11. @override
  12. void initState() {
  13. controller = TextEditingController(text: "10.0");
  14. super.initState();
  15. }
  16. @override
  17. Widget build(BuildContext context) {
  18. return Scaffold(
  19. appBar: AppBar(
  20. title: const Text("Flutter Example App"),
  21. ),
  22. body: Column(
  23. mainAxisAlignment: MainAxisAlignment.center,
  24. children: [
  25. Container(
  26. padding: const EdgeInsets.all(20.0),
  27. child: TextField(
  28. controller: controller,
  29. ),
  30. ),
  31. ElevatedButton(
  32. onPressed: () async {
  33. startTokenization();
  34. },
  35. child: const Text("Оплатить"))
  36. ],
  37. ),
  38. );
  39. }
  40. void startTokenization() async {
  41. var clientApplicationKey = "<Ключ для клиентских приложений>";
  42. var amount = Amount(value: controller.text, currency: Currency.rub);
  43. var moneyAuthClientId = "<ID для центра авторизации в системе YooMoney>";
  44. var shopId = "<Идентификатор магазина в ЮKassa>";
  45. var applicationScheme = "<Схема вашего приложения для deeplink>" "://";
  46. var tokenizationModuleInputData = TokenizationModuleInputData(
  47. clientApplicationKey: clientApplicationKey,
  48. title: "Космические объекты",
  49. subtitle: "Комета повышенной яркости, период обращения — 112 лет",
  50. amount: amount,
  51. savePaymentMethod: SavePaymentMethod.userSelects,
  52. isLoggingEnabled: true,
  53. moneyAuthClientId: moneyAuthClientId,
  54. shopId: shopId,
  55. customerId: "<Уникальный идентификатор покупателя>",
  56. applicationScheme: applicationScheme,
  57. tokenizationSettings: const TokenizationSettings(PaymentMethodTypes([
  58. PaymentMethod.bankCard,
  59. PaymentMethod.yooMoney,
  60. PaymentMethod.sberbank,
  61. PaymentMethod.sbp
  62. ])),
  63. testModeSettings: null);
  64. var result =
  65. await YookassaPaymentsFlutter.tokenization(tokenizationModuleInputData);
  66. if (result is SuccessTokenizationResult) {
  67. Navigator.push(
  68. context,
  69. MaterialPageRoute(
  70. builder: (BuildContext context) => SuccessTokenizationScreen(
  71. result: result,
  72. tokenizationData: tokenizationModuleInputData)));
  73. } else if (result is ErrorTokenizationResult) {
  74. showDialog(
  75. context: context,
  76. builder: (context) => AlertDialog(content: Text(result.error)));
  77. return;
  78. }
  79. }
  80. }