success_tokenization_screen.dart 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/services.dart';
  3. import 'package:yookassa_payments_flutter/input_data/saved_card_module_input_data.dart';
  4. import 'package:yookassa_payments_flutter/yookassa_payments_flutter.dart';
  5. class SuccessTokenizationScreen extends StatefulWidget {
  6. const SuccessTokenizationScreen(
  7. {Key? key, required this.result, this.tokenizationData, this.repeatData})
  8. : super(key: key);
  9. final SuccessTokenizationResult result;
  10. final TokenizationModuleInputData? tokenizationData;
  11. final SavedBankCardModuleInputData? repeatData;
  12. @override
  13. State<StatefulWidget> createState() => _SuccessTokenizationScreenState();
  14. }
  15. class _SuccessTokenizationScreenState extends State<SuccessTokenizationScreen> {
  16. late SuccessTokenizationResult result;
  17. late TokenizationModuleInputData? tokenizationData;
  18. late SavedBankCardModuleInputData? repeatData;
  19. late TextEditingController controller;
  20. @override
  21. void initState() {
  22. controller = TextEditingController();
  23. super.initState();
  24. result = widget.result;
  25. tokenizationData = widget.tokenizationData;
  26. repeatData = widget.repeatData;
  27. }
  28. @override
  29. Widget build(BuildContext context) {
  30. return Scaffold(
  31. appBar: AppBar(
  32. title: const Text("Flutter Example App"),
  33. ),
  34. body: Column(
  35. mainAxisAlignment: MainAxisAlignment.center,
  36. children: [
  37. const ListTile(
  38. leading: Icon(Icons.done, color: Colors.green),
  39. title: Text("Токен готов"),
  40. ),
  41. Container(
  42. padding: const EdgeInsets.all(20.0),
  43. child: TextField(
  44. controller: controller,
  45. decoration:
  46. const InputDecoration(hintText: "3ds / App2App ссылка"),
  47. ),
  48. ),
  49. ElevatedButton(
  50. onPressed: () async {
  51. var shopId = "<Идентификатор магазина в ЮKassa>";
  52. var clientApplicationKey = "<Ключ для клиентских приложений>";
  53. await YookassaPaymentsFlutter.confirmation(
  54. controller.text,
  55. result.paymentMethodType,
  56. clientApplicationKey,
  57. shopId
  58. );
  59. showDialog(
  60. context: context,
  61. builder: (context) => const AlertDialog(
  62. content: Text("Confirmation process is done"),
  63. ));
  64. },
  65. child: const Text("Подтвердить")),
  66. TextButton(
  67. onPressed: () async {
  68. showDialog(
  69. context: context,
  70. builder: (context) => AlertDialog(
  71. content: Text(result.token),
  72. actions: <Widget>[
  73. TextButton(
  74. onPressed: () {
  75. Clipboard.setData(
  76. ClipboardData(text: result.token));
  77. Navigator.of(context).pop();
  78. },
  79. child: const Text('Скопировать'),
  80. ),
  81. ]));
  82. },
  83. child: const Text("Показать токен"))
  84. ],
  85. ),
  86. );
  87. }
  88. }