tokenization_result.dart 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'package:yookassa_payments_flutter/models/payment_method_types.dart';
  2. class TokenizationResult {
  3. TokenizationResult._();
  4. factory TokenizationResult.success(
  5. String token, PaymentMethod? paymentMethodType) =
  6. SuccessTokenizationResult;
  7. factory TokenizationResult.canceled() = CanceledTokenizationResult;
  8. factory TokenizationResult.error(String error) = ErrorTokenizationResult;
  9. factory TokenizationResult.fromJson(Map<String, dynamic> json) {
  10. final status = json['status'];
  11. switch (status) {
  12. case 'success':
  13. {
  14. final token = json['paymentToken'];
  15. PaymentMethod? paymentMethodType =
  16. _paymentMethodFromString(json['paymentMethodType']);
  17. return TokenizationResult.success(token, paymentMethodType);
  18. }
  19. case 'canceled':
  20. return TokenizationResult.canceled();
  21. default:
  22. return TokenizationResult.error(json['error'] ?? 'Unknown error');
  23. }
  24. }
  25. }
  26. class SuccessTokenizationResult extends TokenizationResult {
  27. final String token;
  28. final PaymentMethod? paymentMethodType;
  29. SuccessTokenizationResult(this.token, this.paymentMethodType) : super._();
  30. }
  31. class CanceledTokenizationResult extends TokenizationResult {
  32. CanceledTokenizationResult() : super._();
  33. }
  34. class ErrorTokenizationResult extends TokenizationResult {
  35. final String error;
  36. ErrorTokenizationResult(this.error) : super._();
  37. }
  38. PaymentMethod? _paymentMethodFromString(String type) {
  39. switch (type) {
  40. case "sberbank":
  41. return PaymentMethod.sberbank;
  42. case "bank_card":
  43. return PaymentMethod.bankCard;
  44. case "yoo_money":
  45. return PaymentMethod.yooMoney;
  46. case "apple_pay":
  47. return PaymentMethod.applePay;
  48. case "google_pay":
  49. return PaymentMethod.googlePay;
  50. case "sbp":
  51. return PaymentMethod.sbp;
  52. default:
  53. return null;
  54. }
  55. }