@@ -462,13 +462,57 @@ pub enum PayLaterData {
462
462
Walley { } ,
463
463
}
464
464
465
- #[ derive( Debug , Clone , Eq , PartialEq , serde:: Deserialize , serde:: Serialize , ToSchema ) ]
465
+ #[ derive( serde:: Deserialize , serde:: Serialize , Debug , Clone , ToSchema , Eq , PartialEq ) ]
466
+ #[ serde( rename_all = "snake_case" ) ]
467
+ pub enum BankDebitData {
468
+ /// Payment Method data for Ach bank debit
469
+ AchBankDebit {
470
+ /// Billing details for bank debit
471
+ billing_details : BankDebitBilling ,
472
+ /// Account number for ach bank debit payment
473
+ #[ schema( value_type = String , example = "000123456789" ) ]
474
+ account_number : Secret < String > ,
475
+ /// Routing number for ach bank debit payment
476
+ #[ schema( value_type = String , example = "110000000" ) ]
477
+ routing_number : Secret < String > ,
478
+ } ,
479
+ SepaBankDebit {
480
+ /// Billing details for bank debit
481
+ billing_details : BankDebitBilling ,
482
+ /// International bank account number (iban) for SEPA
483
+ #[ schema( value_type = String , example = "DE89370400440532013000" ) ]
484
+ iban : Secret < String > ,
485
+ } ,
486
+ BecsBankDebit {
487
+ /// Billing details for bank debit
488
+ billing_details : BankDebitBilling ,
489
+ /// Account number for Becs payment method
490
+ #[ schema( value_type = String , example = "000123456" ) ]
491
+ account_number : Secret < String > ,
492
+ /// Bank-State-Branch (bsb) number
493
+ #[ schema( value_type = String , example = "000000" ) ]
494
+ bsb_number : Secret < String > ,
495
+ } ,
496
+ BacsBankDebit {
497
+ /// Billing details for bank debit
498
+ billing_details : BankDebitBilling ,
499
+ /// Account number for Bacs payment method
500
+ #[ schema( value_type = String , example = "00012345" ) ]
501
+ account_number : Secret < String > ,
502
+ /// Sort code for Bacs payment method
503
+ #[ schema( value_type = String , example = "108800" ) ]
504
+ sort_code : Secret < String > ,
505
+ } ,
506
+ }
507
+
508
+ #[ derive( Debug , Clone , serde:: Deserialize , serde:: Serialize , ToSchema ) ]
466
509
#[ serde( rename_all = "snake_case" ) ]
467
510
pub enum PaymentMethodData {
468
511
Card ( Card ) ,
469
512
Wallet ( WalletData ) ,
470
513
PayLater ( PayLaterData ) ,
471
514
BankRedirect ( BankRedirectData ) ,
515
+ BankDebit ( BankDebitData ) ,
472
516
Crypto ( CryptoData ) ,
473
517
}
474
518
@@ -485,6 +529,7 @@ pub enum AdditionalPaymentData {
485
529
Wallet { } ,
486
530
PayLater { } ,
487
531
Crypto { } ,
532
+ BankDebit { } ,
488
533
}
489
534
490
535
impl From < & PaymentMethodData > for AdditionalPaymentData {
@@ -509,6 +554,7 @@ impl From<&PaymentMethodData> for AdditionalPaymentData {
509
554
PaymentMethodData :: Wallet ( _) => Self :: Wallet { } ,
510
555
PaymentMethodData :: PayLater ( _) => Self :: PayLater { } ,
511
556
PaymentMethodData :: Crypto ( _) => Self :: Crypto { } ,
557
+ PaymentMethodData :: BankDebit ( _) => Self :: BankDebit { } ,
512
558
}
513
559
}
514
560
}
@@ -607,6 +653,18 @@ pub struct BankRedirectBilling {
607
653
pub billing_name : Secret < String > ,
608
654
}
609
655
656
+ #[ derive( serde:: Deserialize , serde:: Serialize , Debug , Clone , ToSchema , Eq , PartialEq ) ]
657
+ pub struct BankDebitBilling {
658
+ /// The billing name for bank debits
659
+ #[ schema( value_type = String , example = "John Doe" ) ]
660
+ pub name : Secret < String > ,
661
+ /// The billing email for bank debits
662
+ #[ schema( value_type = String , example = "[email protected] " ) ]
663
+ pub email : Secret < String , pii:: Email > ,
664
+ /// The billing address for bank debits
665
+ pub address : Option < AddressDetails > ,
666
+ }
667
+
610
668
#[ derive( Eq , PartialEq , Clone , Debug , serde:: Deserialize , serde:: Serialize , ToSchema ) ]
611
669
#[ serde( rename_all = "snake_case" ) ]
612
670
pub enum WalletData {
@@ -722,6 +780,7 @@ pub enum PaymentMethodDataResponse {
722
780
Paypal ,
723
781
BankRedirect ( BankRedirectData ) ,
724
782
Crypto ( CryptoData ) ,
783
+ BankDebit ( BankDebitData ) ,
725
784
}
726
785
727
786
#[ derive( Debug , Clone , PartialEq , Eq , serde:: Serialize , serde:: Deserialize , ToSchema ) ]
@@ -1137,7 +1196,7 @@ pub struct PaymentListResponse {
1137
1196
pub data : Vec < PaymentsResponse > ,
1138
1197
}
1139
1198
1140
- #[ derive( Setter , Clone , Default , Debug , Eq , PartialEq , serde:: Serialize ) ]
1199
+ #[ derive( Setter , Clone , Default , Debug , serde:: Serialize ) ]
1141
1200
pub struct VerifyResponse {
1142
1201
pub verify_id : Option < String > ,
1143
1202
pub merchant_id : Option < String > ,
@@ -1262,6 +1321,7 @@ impl From<PaymentMethodData> for PaymentMethodDataResponse {
1262
1321
Self :: BankRedirect ( bank_redirect_data)
1263
1322
}
1264
1323
PaymentMethodData :: Crypto ( crpto_data) => Self :: Crypto ( crpto_data) ,
1324
+ PaymentMethodData :: BankDebit ( bank_debit_data) => Self :: BankDebit ( bank_debit_data) ,
1265
1325
}
1266
1326
}
1267
1327
}
0 commit comments