This commit is contained in:
Arseni
2026-03-04 17:43:18 +03:00
parent 80b25a8608
commit aff804ec58
46 changed files with 1090 additions and 345 deletions

View File

@@ -0,0 +1,56 @@
class PaymentOperationDTO {
final String? stepRef;
final String? operationRef;
final String? code;
final String? state;
final String? label;
final String? failureCode;
final String? failureReason;
final String? startedAt;
final String? completedAt;
const PaymentOperationDTO({
this.stepRef,
this.operationRef,
this.code,
this.state,
this.label,
this.failureCode,
this.failureReason,
this.startedAt,
this.completedAt,
});
factory PaymentOperationDTO.fromJson(Map<String, dynamic> json) =>
PaymentOperationDTO(
stepRef: _asString(json['stepRef'] ?? json['step_ref']),
operationRef: _asString(json['operationRef'] ?? json['operation_ref']),
code: _asString(json['code']),
state: _asString(json['state']),
label: _asString(json['label']),
failureCode: _asString(json['failureCode'] ?? json['failure_code']),
failureReason: _asString(
json['failureReason'] ?? json['failure_reason'],
),
startedAt: _asString(json['startedAt'] ?? json['started_at']),
completedAt: _asString(json['completedAt'] ?? json['completed_at']),
);
Map<String, dynamic> toJson() => <String, dynamic>{
'stepRef': stepRef,
'operationRef': operationRef,
'code': code,
'state': state,
'label': label,
'failureCode': failureCode,
'failureReason': failureReason,
'startedAt': startedAt,
'completedAt': completedAt,
};
}
String? _asString(Object? value) {
final text = value?.toString().trim();
if (text == null || text.isEmpty) return null;
return text;
}

View File

@@ -1,5 +1,6 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:pshared/data/dto/payment/operation.dart';
import 'package:pshared/data/dto/payment/payment_quote.dart';
part 'payment.g.dart';
@@ -12,6 +13,8 @@ class PaymentDTO {
final String? state;
final String? failureCode;
final String? failureReason;
@JsonKey(defaultValue: <PaymentOperationDTO>[])
final List<PaymentOperationDTO> operations;
final PaymentQuoteDTO? lastQuote;
final Map<String, String>? metadata;
final String? createdAt;
@@ -22,6 +25,7 @@ class PaymentDTO {
this.state,
this.failureCode,
this.failureReason,
this.operations = const <PaymentOperationDTO>[],
this.lastQuote,
this.metadata,
this.createdAt,