+source +destination in payments
This commit is contained in:
@@ -2,20 +2,24 @@ import 'package:pshared/data/dto/payment/card.dart';
|
||||
import 'package:pshared/data/dto/payment/card_token.dart';
|
||||
import 'package:pshared/data/dto/payment/endpoint.dart';
|
||||
import 'package:pshared/data/dto/payment/external_chain.dart';
|
||||
import 'package:pshared/data/dto/payment/iban.dart';
|
||||
import 'package:pshared/data/dto/payment/ledger.dart';
|
||||
import 'package:pshared/data/dto/payment/managed_wallet.dart';
|
||||
import 'package:pshared/data/dto/payment/russian_bank.dart';
|
||||
import 'package:pshared/data/dto/payment/wallet.dart';
|
||||
import 'package:pshared/data/mapper/payment/asset.dart';
|
||||
import 'package:pshared/data/mapper/payment/enums.dart';
|
||||
import 'package:pshared/data/mapper/payment/type.dart';
|
||||
import 'package:pshared/models/payment/methods/card.dart';
|
||||
import 'package:pshared/models/payment/methods/card_token.dart';
|
||||
import 'package:pshared/models/payment/methods/crypto_address.dart';
|
||||
import 'package:pshared/models/payment/methods/data.dart';
|
||||
import 'package:pshared/models/payment/methods/iban.dart';
|
||||
import 'package:pshared/models/payment/methods/ledger.dart';
|
||||
import 'package:pshared/models/payment/methods/managed_wallet.dart';
|
||||
import 'package:pshared/models/payment/methods/russian_bank.dart';
|
||||
import 'package:pshared/models/payment/methods/wallet.dart';
|
||||
import 'package:pshared/models/payment/type.dart';
|
||||
|
||||
|
||||
extension PaymentMethodDataEndpointMapper on PaymentMethodData {
|
||||
PaymentEndpointDTO toDTO() {
|
||||
final metadata = this.metadata;
|
||||
@@ -76,8 +80,40 @@ extension PaymentMethodDataEndpointMapper on PaymentMethodData {
|
||||
).toJson(),
|
||||
metadata: metadata,
|
||||
);
|
||||
default:
|
||||
throw UnsupportedError('Unsupported payment endpoint type: $type');
|
||||
case PaymentType.wallet:
|
||||
final payload = this as WalletPaymentMethod;
|
||||
return PaymentEndpointDTO(
|
||||
type: endpointTypeToValue(type),
|
||||
data: WalletPaymentDataDTO(walletId: payload.walletId).toJson(),
|
||||
metadata: metadata,
|
||||
);
|
||||
case PaymentType.bankAccount:
|
||||
final payload = this as RussianBankAccountPaymentMethod;
|
||||
return PaymentEndpointDTO(
|
||||
type: endpointTypeToValue(type),
|
||||
data: RussianBankAccountPaymentDataDTO(
|
||||
recipientName: payload.recipientName,
|
||||
inn: payload.inn,
|
||||
kpp: payload.kpp,
|
||||
bankName: payload.bankName,
|
||||
bik: payload.bik,
|
||||
accountNumber: payload.accountNumber,
|
||||
correspondentAccount: payload.correspondentAccount,
|
||||
).toJson(),
|
||||
metadata: metadata,
|
||||
);
|
||||
case PaymentType.iban:
|
||||
final payload = this as IbanPaymentMethod;
|
||||
return PaymentEndpointDTO(
|
||||
type: endpointTypeToValue(type),
|
||||
data: IbanPaymentDataDTO(
|
||||
iban: payload.iban,
|
||||
accountHolder: payload.accountHolder,
|
||||
bic: payload.bic,
|
||||
bankName: payload.bankName,
|
||||
).toJson(),
|
||||
metadata: metadata,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -127,14 +163,40 @@ extension PaymentEndpointDTOMapper on PaymentEndpointDTO {
|
||||
maskedPan: payload.maskedPan,
|
||||
metadata: metadata,
|
||||
);
|
||||
default:
|
||||
throw UnsupportedError('Unsupported payment endpoint type: ${paymentTypeFromValue(type)}');
|
||||
case PaymentType.wallet:
|
||||
final payload = WalletPaymentDataDTO.fromJson(data);
|
||||
return WalletPaymentMethod(
|
||||
walletId: payload.walletId,
|
||||
metadata: metadata,
|
||||
);
|
||||
case PaymentType.bankAccount:
|
||||
final payload = RussianBankAccountPaymentDataDTO.fromJson(data);
|
||||
return RussianBankAccountPaymentMethod(
|
||||
recipientName: payload.recipientName,
|
||||
inn: payload.inn,
|
||||
kpp: payload.kpp,
|
||||
bankName: payload.bankName,
|
||||
bik: payload.bik,
|
||||
accountNumber: payload.accountNumber,
|
||||
correspondentAccount: payload.correspondentAccount,
|
||||
metadata: metadata,
|
||||
);
|
||||
case PaymentType.iban:
|
||||
final payload = IbanPaymentDataDTO.fromJson(data);
|
||||
return IbanPaymentMethod(
|
||||
iban: payload.iban,
|
||||
accountHolder: payload.accountHolder,
|
||||
bic: payload.bic,
|
||||
bankName: payload.bankName,
|
||||
metadata: metadata,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PaymentType _resolveEndpointType(String type, Map<String, dynamic> data) {
|
||||
if (type == 'card' && (data.containsKey('token') || data.containsKey('masked_pan'))) {
|
||||
if (type == 'card' &&
|
||||
(data.containsKey('token') || data.containsKey('masked_pan'))) {
|
||||
return PaymentType.cardToken;
|
||||
}
|
||||
return endpointTypeFromValue(type);
|
||||
|
||||
Reference in New Issue
Block a user