From 295709912d6688a0abcd8b7e03cacacbff3a8948 Mon Sep 17 00:00:00 2001 From: Brandon Trussell Date: Thu, 15 May 2025 21:58:06 -0500 Subject: [PATCH] Bring payment method support for GRPC in-line with payment methods for the desktop application. --- .../method/payment/GetPaymentMethodsTest.java | 66 ++++++++++++++++++- .../core/api/model/PaymentAccountForm.java | 37 ++++++++++- .../api/model/PaymentAccountFormField.java | 3 +- .../core/payment/AchTransferAccount.java | 9 ++- .../core/payment/AdvancedCashAccount.java | 2 +- .../core/payment/AmazonGiftCardAccount.java | 13 ++-- .../haveno/core/payment/BizumAccount.java | 2 +- .../haveno/core/payment/CapitualAccount.java | 8 +-- .../core/payment/CashDepositAccount.java | 2 +- .../haveno/core/payment/CelPayAccount.java | 8 +-- .../payment/DomesticWireTransferAccount.java | 8 ++- .../haveno/core/payment/HalCashAccount.java | 2 +- .../java/haveno/core/payment/ImpsAccount.java | 6 +- .../core/payment/InteracETransferAccount.java | 13 ++-- .../haveno/core/payment/JapanBankAccount.java | 10 ++- .../haveno/core/payment/MoneseAccount.java | 5 +- .../haveno/core/payment/MoneyBeamAccount.java | 2 +- .../core/payment/NationalBankAccount.java | 12 +++- .../java/haveno/core/payment/NeftAccount.java | 14 +++- .../haveno/core/payment/NequiAccount.java | 2 +- .../haveno/core/payment/PaymentAccount.java | 4 ++ .../haveno/core/payment/PayseraAccount.java | 8 +-- .../haveno/core/payment/PaytmAccount.java | 9 ++- .../core/payment/PerfectMoneyAccount.java | 2 +- .../java/haveno/core/payment/PixAccount.java | 2 +- .../haveno/core/payment/PopmoneyAccount.java | 5 +- .../java/haveno/core/payment/RtgsAccount.java | 13 ++++ .../haveno/core/payment/SameBankAccount.java | 12 +++- .../haveno/core/payment/SatispayAccount.java | 5 +- .../core/payment/SpecificBanksAccount.java | 13 +++- .../haveno/core/payment/SwishAccount.java | 2 +- .../haveno/core/payment/TikkieAccount.java | 8 +-- .../payment/USPostalMoneyOrderAccount.java | 2 +- .../java/haveno/core/payment/UpiAccount.java | 9 +++ .../haveno/core/payment/VerseAccount.java | 2 +- .../core/payment/WesternUnionAccount.java | 7 +- .../core/payment/payload/PaymentMethod.java | 37 ++++++++++- proto/src/main/proto/pb.proto | 36 ++++++++++ 38 files changed, 347 insertions(+), 53 deletions(-) diff --git a/apitest/src/test/java/haveno/apitest/method/payment/GetPaymentMethodsTest.java b/apitest/src/test/java/haveno/apitest/method/payment/GetPaymentMethodsTest.java index 6b2e5a8019..ec8f4e14ce 100644 --- a/apitest/src/test/java/haveno/apitest/method/payment/GetPaymentMethodsTest.java +++ b/apitest/src/test/java/haveno/apitest/method/payment/GetPaymentMethodsTest.java @@ -40,7 +40,71 @@ public class GetPaymentMethodsTest extends MethodTest { .stream() .map(PaymentMethod::getId) .collect(Collectors.toList()); - assertTrue(paymentMethodIds.size() >= 20); + assertTrue(paymentMethodIds.size() >= 55); + + // List of expected payment method IDs + List expectedIds = List.of( + "HAL_CASH", + "MONEY_BEAM", + "SWISH", + "POPMONEY", + "US_POSTAL_MONEY_ORDER", + "INTERAC_E_TRANSFER", + "CASH_DEPOSIT", + "CASH_AT_ATM", + "WESTERN_UNION", + "NATIONAL_BANK", + "SAME_BANK", + "SPECIFIC_BANKS", + "AMAZON_GIFT_CARD", + "PERFECT_MONEY", + "ADVANCED_CASH", + "PAYSERA", + "NEFT", + "RTGS", + "IMPS", + "UPI", + "PAYTM", + "NEQUI", + "BIZUM", + "PIX", + "CAPITUAL", + "CELPAY", + "MONESE", + "SATISPAY", + "TIKKIE", + "VERSE", + "ACH_TRANSFER", + "DOMESTIC_WIRE_TRANSFER", + "JAPAN_BANK", + "ALI_PAY", + "WECHAT_PAY", + "PROMPT_PAY", + "PAY_BY_MAIL", + "CARD_LESS_CASH", + "MONEY_GRAM", + "F2F", + "AUSTRALIA_PAYID", + "UPHOLD", + "REVOLUT", + "SEPA", + "SEPA_INSTANT", + "FASTER_PAYMENTS", + "ZELLE", + "BLOCK_CHAINS", + "WISE", + "PAXUM", + "STRIKE", + "SWIFT", + "CASH_APP", + "VENMO", + "PAYPAL", + "PAYSAFE" + ); + + for (String id : expectedIds) { + assertTrue(paymentMethodIds.contains(id), "Missing payment method: " + id); + } } @AfterAll diff --git a/core/src/main/java/haveno/core/api/model/PaymentAccountForm.java b/core/src/main/java/haveno/core/api/model/PaymentAccountForm.java index 6b1b494047..83dc13fedf 100644 --- a/core/src/main/java/haveno/core/api/model/PaymentAccountForm.java +++ b/core/src/main/java/haveno/core/api/model/PaymentAccountForm.java @@ -78,7 +78,42 @@ public final class PaymentAccountForm implements PersistablePayload { CASH_APP, PAYPAL, VENMO, - PAYSAFE; + PAYSAFE, + HAL_CASH, + MONEY_BEAM, + SWISH, + POPMONEY, + US_POSTAL_MONEY_ORDER, + INTERAC_E_TRANSFER, + CASH_DEPOSIT, + WESTERN_UNION, + NATIONAL_BANK, + SAME_BANK, + SPECIFIC_BANKS, + AMAZON_GIFT_CARD, + PERFECT_MONEY, + ADVANCED_CASH, + PAYSERA, + NEFT, + RTGS, + IMPS, + UPI, + PAYTM, + NEQUI, + BIZUM, + PIX, + CAPITUAL, + CELPAY, + MONESE, + SATISPAY, + TIKKIE, + VERSE, + ACH_TRANSFER, + DOMESTIC_WIRE_TRANSFER, + JAPAN_BANK, + ALI_PAY, + WECHAT_PAY, + PROMPT_PAY; public static PaymentAccountForm.FormId fromProto(protobuf.PaymentAccountForm.FormId formId) { return ProtoUtil.enumFromProto(PaymentAccountForm.FormId.class, formId.name()); diff --git a/core/src/main/java/haveno/core/api/model/PaymentAccountFormField.java b/core/src/main/java/haveno/core/api/model/PaymentAccountFormField.java index 8fb4d5b4ad..5c1c8cf71d 100644 --- a/core/src/main/java/haveno/core/api/model/PaymentAccountFormField.java +++ b/core/src/main/java/haveno/core/api/model/PaymentAccountFormField.java @@ -100,7 +100,8 @@ public final class PaymentAccountFormField implements PersistablePayload { TRADE_CURRENCIES, USERNAME, EMAIL_OR_MOBILE_NR_OR_USERNAME, - EMAIL_OR_MOBILE_NR_OR_CASHTAG; + EMAIL_OR_MOBILE_NR_OR_CASHTAG, + VIRTUAL_PAYMENT_ADDRESS; public static PaymentAccountFormField.FieldId fromProto(protobuf.PaymentAccountFormField.FieldId fieldId) { return ProtoUtil.enumFromProto(PaymentAccountFormField.FieldId.class, fieldId.name()); diff --git a/core/src/main/java/haveno/core/payment/AchTransferAccount.java b/core/src/main/java/haveno/core/payment/AchTransferAccount.java index 9f04e4e076..52ea99c575 100644 --- a/core/src/main/java/haveno/core/payment/AchTransferAccount.java +++ b/core/src/main/java/haveno/core/payment/AchTransferAccount.java @@ -79,6 +79,13 @@ public final class AchTransferAccount extends CountryBasedPaymentAccount impleme @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.BANK_NAME, + PaymentAccountFormField.FieldId.BRANCH_ID, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.ACCOUNT_TYPE, + PaymentAccountFormField.FieldId.HOLDER_ADDRESS + ); } } diff --git a/core/src/main/java/haveno/core/payment/AdvancedCashAccount.java b/core/src/main/java/haveno/core/payment/AdvancedCashAccount.java index 1dce0bd4c8..2ab1229962 100644 --- a/core/src/main/java/haveno/core/payment/AdvancedCashAccount.java +++ b/core/src/main/java/haveno/core/payment/AdvancedCashAccount.java @@ -58,7 +58,7 @@ public final class AdvancedCashAccount extends PaymentAccount { @NotNull @Override public List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.ACCOUNT_NR); } public void setAccountNr(String accountNr) { diff --git a/core/src/main/java/haveno/core/payment/AmazonGiftCardAccount.java b/core/src/main/java/haveno/core/payment/AmazonGiftCardAccount.java index cb3eb35c70..c38c2ae3f0 100644 --- a/core/src/main/java/haveno/core/payment/AmazonGiftCardAccount.java +++ b/core/src/main/java/haveno/core/payment/AmazonGiftCardAccount.java @@ -25,7 +25,7 @@ import haveno.core.locale.TradeCurrency; import haveno.core.payment.payload.AmazonGiftCardAccountPayload; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; -import org.jetbrains.annotations.NotNull; +import lombok.NonNull; import javax.annotation.Nullable; import java.util.List; @@ -59,13 +59,16 @@ public final class AmazonGiftCardAccount extends PaymentAccount { } @Override - public @NotNull List getSupportedCurrencies() { + public @NonNull List getSupportedCurrencies() { return SUPPORTED_CURRENCIES; } @Override - public @NotNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + public @NonNull List getInputFieldIds() { + return List.of( + PaymentAccountFormField.FieldId.EMAIL_OR_MOBILE_NR, + PaymentAccountFormField.FieldId.COUNTRY + ); } public String getEmailOrMobileNr() { @@ -89,7 +92,7 @@ public final class AmazonGiftCardAccount extends PaymentAccount { return country; } - public void setCountry(@NotNull Country country) { + public void setCountry(@NonNull Country country) { this.country = country; getAmazonGiftCardAccountPayload().setCountryCode(country.code); } diff --git a/core/src/main/java/haveno/core/payment/BizumAccount.java b/core/src/main/java/haveno/core/payment/BizumAccount.java index 04757ecd5a..5217f62147 100644 --- a/core/src/main/java/haveno/core/payment/BizumAccount.java +++ b/core/src/main/java/haveno/core/payment/BizumAccount.java @@ -72,6 +72,6 @@ public final class BizumAccount extends CountryBasedPaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.MOBILE_NR); } } diff --git a/core/src/main/java/haveno/core/payment/CapitualAccount.java b/core/src/main/java/haveno/core/payment/CapitualAccount.java index 28b47859e7..c3ee5b68a1 100644 --- a/core/src/main/java/haveno/core/payment/CapitualAccount.java +++ b/core/src/main/java/haveno/core/payment/CapitualAccount.java @@ -24,7 +24,7 @@ import haveno.core.payment.payload.CapitualAccountPayload; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import lombok.EqualsAndHashCode; -import org.jetbrains.annotations.NotNull; +import lombok.NonNull; import java.util.List; @@ -47,16 +47,16 @@ public final class CapitualAccount extends PaymentAccount { return new CapitualAccountPayload(paymentMethod.getId(), id); } - @NotNull + @NonNull @Override public List getSupportedCurrencies() { return SUPPORTED_CURRENCIES; } - @NotNull + @NonNull @Override public List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.ACCOUNT_NR); } public void setAccountNr(String accountNr) { diff --git a/core/src/main/java/haveno/core/payment/CashDepositAccount.java b/core/src/main/java/haveno/core/payment/CashDepositAccount.java index b263c906df..0c3cee4512 100644 --- a/core/src/main/java/haveno/core/payment/CashDepositAccount.java +++ b/core/src/main/java/haveno/core/payment/CashDepositAccount.java @@ -48,7 +48,7 @@ public final class CashDepositAccount extends CountryBasedPaymentAccount impleme @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.BANK_ID, PaymentAccountFormField.FieldId.REQUIREMENTS); } @Override diff --git a/core/src/main/java/haveno/core/payment/CelPayAccount.java b/core/src/main/java/haveno/core/payment/CelPayAccount.java index a21ca3e0e3..ec94b0c4b0 100644 --- a/core/src/main/java/haveno/core/payment/CelPayAccount.java +++ b/core/src/main/java/haveno/core/payment/CelPayAccount.java @@ -24,7 +24,7 @@ import haveno.core.payment.payload.CelPayAccountPayload; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import lombok.EqualsAndHashCode; -import org.jetbrains.annotations.NotNull; +import lombok.NonNull; import java.util.List; @@ -73,12 +73,12 @@ public final class CelPayAccount extends PaymentAccount { } @Override - public @NotNull List getSupportedCurrencies() { + public @NonNull List getSupportedCurrencies() { return SUPPORTED_CURRENCIES; } @Override - public @NotNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + public @NonNull List getInputFieldIds() { + return List.of(PaymentAccountFormField.FieldId.EMAIL); } } diff --git a/core/src/main/java/haveno/core/payment/DomesticWireTransferAccount.java b/core/src/main/java/haveno/core/payment/DomesticWireTransferAccount.java index 0707db411e..abe3b51152 100644 --- a/core/src/main/java/haveno/core/payment/DomesticWireTransferAccount.java +++ b/core/src/main/java/haveno/core/payment/DomesticWireTransferAccount.java @@ -79,6 +79,12 @@ public final class DomesticWireTransferAccount extends CountryBasedPaymentAccoun @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.BANK_NAME, + PaymentAccountFormField.FieldId.BRANCH_ID, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.HOLDER_ADDRESS + ); } } diff --git a/core/src/main/java/haveno/core/payment/HalCashAccount.java b/core/src/main/java/haveno/core/payment/HalCashAccount.java index f2de687fe0..d0e687d082 100644 --- a/core/src/main/java/haveno/core/payment/HalCashAccount.java +++ b/core/src/main/java/haveno/core/payment/HalCashAccount.java @@ -50,7 +50,7 @@ public final class HalCashAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.MOBILE_NR); } public void setMobileNr(String mobileNr) { diff --git a/core/src/main/java/haveno/core/payment/ImpsAccount.java b/core/src/main/java/haveno/core/payment/ImpsAccount.java index 42dd116668..3c27f3aeec 100644 --- a/core/src/main/java/haveno/core/payment/ImpsAccount.java +++ b/core/src/main/java/haveno/core/payment/ImpsAccount.java @@ -64,6 +64,10 @@ public final class ImpsAccount extends CountryBasedPaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.BRANCH_ID + ); } } diff --git a/core/src/main/java/haveno/core/payment/InteracETransferAccount.java b/core/src/main/java/haveno/core/payment/InteracETransferAccount.java index 579167c276..05743795f7 100644 --- a/core/src/main/java/haveno/core/payment/InteracETransferAccount.java +++ b/core/src/main/java/haveno/core/payment/InteracETransferAccount.java @@ -24,7 +24,7 @@ import haveno.core.payment.payload.InteracETransferAccountPayload; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import lombok.EqualsAndHashCode; -import org.jetbrains.annotations.NotNull; +import lombok.NonNull; import java.util.List; @@ -44,13 +44,18 @@ public final class InteracETransferAccount extends PaymentAccount { } @Override - public @NotNull List getSupportedCurrencies() { + public @NonNull List getSupportedCurrencies() { return SUPPORTED_CURRENCIES; } @Override - public @NotNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + public @NonNull List getInputFieldIds() { + return List.of( + PaymentAccountFormField.FieldId.EMAIL, + PaymentAccountFormField.FieldId.ANSWER, + PaymentAccountFormField.FieldId.QUESTION, + PaymentAccountFormField.FieldId.HOLDER_NAME + ); } public void setEmail(String email) { diff --git a/core/src/main/java/haveno/core/payment/JapanBankAccount.java b/core/src/main/java/haveno/core/payment/JapanBankAccount.java index 51c15ea931..1107ee4b51 100644 --- a/core/src/main/java/haveno/core/payment/JapanBankAccount.java +++ b/core/src/main/java/haveno/core/payment/JapanBankAccount.java @@ -48,7 +48,15 @@ public final class JapanBankAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.BANK_NAME, + PaymentAccountFormField.FieldId.BANK_CODE, + PaymentAccountFormField.FieldId.BANK_BRANCH_NAME, + PaymentAccountFormField.FieldId.BANK_BRANCH_CODE, + PaymentAccountFormField.FieldId.BANK_ACCOUNT_TYPE, + PaymentAccountFormField.FieldId.BANK_ACCOUNT_NAME, + PaymentAccountFormField.FieldId.BANK_ACCOUNT_NUMBER + ); } // bank code diff --git a/core/src/main/java/haveno/core/payment/MoneseAccount.java b/core/src/main/java/haveno/core/payment/MoneseAccount.java index e7fe518bc9..62302534ec 100644 --- a/core/src/main/java/haveno/core/payment/MoneseAccount.java +++ b/core/src/main/java/haveno/core/payment/MoneseAccount.java @@ -85,6 +85,9 @@ public final class MoneseAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.MOBILE_NR, + PaymentAccountFormField.FieldId.HOLDER_NAME + ); } } diff --git a/core/src/main/java/haveno/core/payment/MoneyBeamAccount.java b/core/src/main/java/haveno/core/payment/MoneyBeamAccount.java index 97fbcccf3b..aaaace4396 100644 --- a/core/src/main/java/haveno/core/payment/MoneyBeamAccount.java +++ b/core/src/main/java/haveno/core/payment/MoneyBeamAccount.java @@ -51,7 +51,7 @@ public final class MoneyBeamAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.ACCOUNT_ID); } public void setAccountId(String accountId) { diff --git a/core/src/main/java/haveno/core/payment/NationalBankAccount.java b/core/src/main/java/haveno/core/payment/NationalBankAccount.java index 16b2633689..5b3614aaa8 100644 --- a/core/src/main/java/haveno/core/payment/NationalBankAccount.java +++ b/core/src/main/java/haveno/core/payment/NationalBankAccount.java @@ -50,7 +50,17 @@ public final class NationalBankAccount extends CountryBasedPaymentAccount implem @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.BANK_NAME, + PaymentAccountFormField.FieldId.BANK_ID, + PaymentAccountFormField.FieldId.BRANCH_ID, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.ACCOUNT_TYPE, + PaymentAccountFormField.FieldId.HOLDER_TAX_ID, + PaymentAccountFormField.FieldId.NATIONAL_ACCOUNT_ID, + PaymentAccountFormField.FieldId.COUNTRY + ); } @Override diff --git a/core/src/main/java/haveno/core/payment/NeftAccount.java b/core/src/main/java/haveno/core/payment/NeftAccount.java index 4f4a2a4deb..1ff1669f5b 100644 --- a/core/src/main/java/haveno/core/payment/NeftAccount.java +++ b/core/src/main/java/haveno/core/payment/NeftAccount.java @@ -17,10 +17,14 @@ package haveno.core.payment; +import haveno.core.api.model.PaymentAccountFormField; import haveno.core.payment.payload.NeftAccountPayload; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import java.util.List; @EqualsAndHashCode(callSuper = true) public final class NeftAccount extends IfscBasedAccount { @@ -46,4 +50,12 @@ public final class NeftAccount extends IfscBasedAccount { return "payment.neft.info.account"; } -} + @Override + public @NonNull List getInputFieldIds() { + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.BRANCH_ID + ); + } +} \ No newline at end of file diff --git a/core/src/main/java/haveno/core/payment/NequiAccount.java b/core/src/main/java/haveno/core/payment/NequiAccount.java index d74f509319..a8709ab32f 100644 --- a/core/src/main/java/haveno/core/payment/NequiAccount.java +++ b/core/src/main/java/haveno/core/payment/NequiAccount.java @@ -72,6 +72,6 @@ public final class NequiAccount extends CountryBasedPaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.MOBILE_NR); } } diff --git a/core/src/main/java/haveno/core/payment/PaymentAccount.java b/core/src/main/java/haveno/core/payment/PaymentAccount.java index 14dd88482b..8b6a315184 100644 --- a/core/src/main/java/haveno/core/payment/PaymentAccount.java +++ b/core/src/main/java/haveno/core/payment/PaymentAccount.java @@ -821,6 +821,10 @@ public abstract class PaymentAccount implements PersistablePayload { field.setMinLength(10); field.setMaxLength(150); break; + case VIRTUAL_PAYMENT_ADDRESS: + field.setComponent(PaymentAccountFormField.Component.TEXT); + field.setLabel(Res.get("payment.upi.virtualPaymentAddress")); + break; default: throw new RuntimeException("Unhandled form field: " + field); } diff --git a/core/src/main/java/haveno/core/payment/PayseraAccount.java b/core/src/main/java/haveno/core/payment/PayseraAccount.java index 0254cd7c71..261b504266 100644 --- a/core/src/main/java/haveno/core/payment/PayseraAccount.java +++ b/core/src/main/java/haveno/core/payment/PayseraAccount.java @@ -24,7 +24,7 @@ import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import haveno.core.payment.payload.PayseraAccountPayload; import lombok.EqualsAndHashCode; -import org.jetbrains.annotations.NotNull; +import lombok.NonNull; import java.util.List; @@ -76,13 +76,13 @@ public final class PayseraAccount extends PaymentAccount { } @Override - public @NotNull List getSupportedCurrencies() { + public @NonNull List getSupportedCurrencies() { return SUPPORTED_CURRENCIES; } @Override - public @NotNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + public @NonNull List getInputFieldIds() { + return List.of(PaymentAccountFormField.FieldId.EMAIL); } public void setEmail(String accountId) { diff --git a/core/src/main/java/haveno/core/payment/PaytmAccount.java b/core/src/main/java/haveno/core/payment/PaytmAccount.java index e434179137..d0b73dc5a4 100644 --- a/core/src/main/java/haveno/core/payment/PaytmAccount.java +++ b/core/src/main/java/haveno/core/payment/PaytmAccount.java @@ -16,11 +16,13 @@ */ package haveno.core.payment; - +import haveno.core.api.model.PaymentAccountFormField; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import haveno.core.payment.payload.PaytmAccountPayload; import lombok.EqualsAndHashCode; +import lombok.NonNull; +import java.util.List; @EqualsAndHashCode(callSuper = true) public final class PaytmAccount extends IfscBasedAccount { @@ -33,6 +35,11 @@ public final class PaytmAccount extends IfscBasedAccount { return new PaytmAccountPayload(paymentMethod.getId(), id); } + @Override + public @NonNull List getInputFieldIds() { + return List.of(PaymentAccountFormField.FieldId.EMAIL_OR_MOBILE_NR); + } + public void setEmailOrMobileNr(String emailOrMobileNr) { ((PaytmAccountPayload) paymentAccountPayload).setEmailOrMobileNr(emailOrMobileNr); } diff --git a/core/src/main/java/haveno/core/payment/PerfectMoneyAccount.java b/core/src/main/java/haveno/core/payment/PerfectMoneyAccount.java index 84a51bff02..5380640187 100644 --- a/core/src/main/java/haveno/core/payment/PerfectMoneyAccount.java +++ b/core/src/main/java/haveno/core/payment/PerfectMoneyAccount.java @@ -50,7 +50,7 @@ public final class PerfectMoneyAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.ACCOUNT_NR); } public void setAccountNr(String accountNr) { diff --git a/core/src/main/java/haveno/core/payment/PixAccount.java b/core/src/main/java/haveno/core/payment/PixAccount.java index c0e3b72c82..4d750fc9b5 100644 --- a/core/src/main/java/haveno/core/payment/PixAccount.java +++ b/core/src/main/java/haveno/core/payment/PixAccount.java @@ -72,6 +72,6 @@ public final class PixAccount extends CountryBasedPaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.PIX_KEY); } } diff --git a/core/src/main/java/haveno/core/payment/PopmoneyAccount.java b/core/src/main/java/haveno/core/payment/PopmoneyAccount.java index 22fd446257..4c58150144 100644 --- a/core/src/main/java/haveno/core/payment/PopmoneyAccount.java +++ b/core/src/main/java/haveno/core/payment/PopmoneyAccount.java @@ -51,7 +51,10 @@ public final class PopmoneyAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.ACCOUNT_ID, + PaymentAccountFormField.FieldId.HOLDER_NAME + ); } public void setAccountId(String accountId) { diff --git a/core/src/main/java/haveno/core/payment/RtgsAccount.java b/core/src/main/java/haveno/core/payment/RtgsAccount.java index e7bc4831b2..05c2b5c155 100644 --- a/core/src/main/java/haveno/core/payment/RtgsAccount.java +++ b/core/src/main/java/haveno/core/payment/RtgsAccount.java @@ -17,10 +17,14 @@ package haveno.core.payment; +import haveno.core.api.model.PaymentAccountFormField; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import haveno.core.payment.payload.RtgsAccountPayload; import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import java.util.List; @EqualsAndHashCode(callSuper = true) public final class RtgsAccount extends IfscBasedAccount { @@ -45,4 +49,13 @@ public final class RtgsAccount extends IfscBasedAccount { public String getMessageForAccountCreation() { return "payment.rtgs.info.account"; } + + @Override + public @NonNull List getInputFieldIds() { + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.BRANCH_ID + ); + } } diff --git a/core/src/main/java/haveno/core/payment/SameBankAccount.java b/core/src/main/java/haveno/core/payment/SameBankAccount.java index 3a2af39946..021ac3dbd4 100644 --- a/core/src/main/java/haveno/core/payment/SameBankAccount.java +++ b/core/src/main/java/haveno/core/payment/SameBankAccount.java @@ -50,7 +50,17 @@ public final class SameBankAccount extends CountryBasedPaymentAccount implements @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.BANK_NAME, + PaymentAccountFormField.FieldId.BANK_ID, + PaymentAccountFormField.FieldId.BRANCH_ID, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.ACCOUNT_TYPE, + PaymentAccountFormField.FieldId.HOLDER_TAX_ID, + PaymentAccountFormField.FieldId.NATIONAL_ACCOUNT_ID, + PaymentAccountFormField.FieldId.COUNTRY + ); } @Override diff --git a/core/src/main/java/haveno/core/payment/SatispayAccount.java b/core/src/main/java/haveno/core/payment/SatispayAccount.java index 2a93ceed4c..41c9209031 100644 --- a/core/src/main/java/haveno/core/payment/SatispayAccount.java +++ b/core/src/main/java/haveno/core/payment/SatispayAccount.java @@ -80,6 +80,9 @@ public final class SatispayAccount extends CountryBasedPaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.MOBILE_NR, + PaymentAccountFormField.FieldId.HOLDER_NAME + ); } } diff --git a/core/src/main/java/haveno/core/payment/SpecificBanksAccount.java b/core/src/main/java/haveno/core/payment/SpecificBanksAccount.java index d74fd36a15..bd767e6deb 100644 --- a/core/src/main/java/haveno/core/payment/SpecificBanksAccount.java +++ b/core/src/main/java/haveno/core/payment/SpecificBanksAccount.java @@ -50,7 +50,18 @@ public final class SpecificBanksAccount extends CountryBasedPaymentAccount imple @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.BANK_NAME, + PaymentAccountFormField.FieldId.BANK_ID, + PaymentAccountFormField.FieldId.BRANCH_ID, + PaymentAccountFormField.FieldId.ACCOUNT_NR, + PaymentAccountFormField.FieldId.ACCOUNT_TYPE, + PaymentAccountFormField.FieldId.HOLDER_TAX_ID, + PaymentAccountFormField.FieldId.NATIONAL_ACCOUNT_ID, + PaymentAccountFormField.FieldId.COUNTRY + ); + } // TODO change to List diff --git a/core/src/main/java/haveno/core/payment/SwishAccount.java b/core/src/main/java/haveno/core/payment/SwishAccount.java index a726a9a14a..e455514978 100644 --- a/core/src/main/java/haveno/core/payment/SwishAccount.java +++ b/core/src/main/java/haveno/core/payment/SwishAccount.java @@ -50,7 +50,7 @@ public final class SwishAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.MOBILE_NR, PaymentAccountFormField.FieldId.HOLDER_NAME); } public void setMobileNr(String mobileNr) { diff --git a/core/src/main/java/haveno/core/payment/TikkieAccount.java b/core/src/main/java/haveno/core/payment/TikkieAccount.java index 123b2a0d58..bef82a3d4f 100644 --- a/core/src/main/java/haveno/core/payment/TikkieAccount.java +++ b/core/src/main/java/haveno/core/payment/TikkieAccount.java @@ -24,7 +24,7 @@ import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import haveno.core.payment.payload.TikkieAccountPayload; import lombok.EqualsAndHashCode; -import org.jetbrains.annotations.NotNull; +import lombok.NonNull; import java.util.List; @@ -68,12 +68,12 @@ public final class TikkieAccount extends CountryBasedPaymentAccount { } @Override - public @NotNull List getSupportedCurrencies() { + public @NonNull List getSupportedCurrencies() { return SUPPORTED_CURRENCIES; } @Override - public @NotNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + public @NonNull List getInputFieldIds() { + return List.of(PaymentAccountFormField.FieldId.IBAN); } } diff --git a/core/src/main/java/haveno/core/payment/USPostalMoneyOrderAccount.java b/core/src/main/java/haveno/core/payment/USPostalMoneyOrderAccount.java index 41667563cf..3d108c83b9 100644 --- a/core/src/main/java/haveno/core/payment/USPostalMoneyOrderAccount.java +++ b/core/src/main/java/haveno/core/payment/USPostalMoneyOrderAccount.java @@ -50,7 +50,7 @@ public final class USPostalMoneyOrderAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.POSTAL_ADDRESS, PaymentAccountFormField.FieldId.HOLDER_NAME); } public void setPostalAddress(String postalAddress) { diff --git a/core/src/main/java/haveno/core/payment/UpiAccount.java b/core/src/main/java/haveno/core/payment/UpiAccount.java index 1042e9d0e3..0fccf028c5 100644 --- a/core/src/main/java/haveno/core/payment/UpiAccount.java +++ b/core/src/main/java/haveno/core/payment/UpiAccount.java @@ -17,10 +17,14 @@ package haveno.core.payment; +import haveno.core.api.model.PaymentAccountFormField; import haveno.core.payment.payload.PaymentAccountPayload; import haveno.core.payment.payload.PaymentMethod; import haveno.core.payment.payload.UpiAccountPayload; import lombok.EqualsAndHashCode; +import lombok.NonNull; + +import java.util.List; @EqualsAndHashCode(callSuper = true) public final class UpiAccount extends IfscBasedAccount { @@ -33,6 +37,11 @@ public final class UpiAccount extends IfscBasedAccount { return new UpiAccountPayload(paymentMethod.getId(), id); } + @Override + public @NonNull List getInputFieldIds() { + return List.of(PaymentAccountFormField.FieldId.VIRTUAL_PAYMENT_ADDRESS); + } + public void setVirtualPaymentAddress(String virtualPaymentAddress) { ((UpiAccountPayload) paymentAccountPayload).setVirtualPaymentAddress(virtualPaymentAddress); } diff --git a/core/src/main/java/haveno/core/payment/VerseAccount.java b/core/src/main/java/haveno/core/payment/VerseAccount.java index f45015a77a..55ec22ab2c 100644 --- a/core/src/main/java/haveno/core/payment/VerseAccount.java +++ b/core/src/main/java/haveno/core/payment/VerseAccount.java @@ -79,6 +79,6 @@ public final class VerseAccount extends PaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of(PaymentAccountFormField.FieldId.HOLDER_NAME); } } diff --git a/core/src/main/java/haveno/core/payment/WesternUnionAccount.java b/core/src/main/java/haveno/core/payment/WesternUnionAccount.java index 64f18c205b..593d68fdba 100644 --- a/core/src/main/java/haveno/core/payment/WesternUnionAccount.java +++ b/core/src/main/java/haveno/core/payment/WesternUnionAccount.java @@ -47,7 +47,12 @@ public final class WesternUnionAccount extends CountryBasedPaymentAccount { @Override public @NonNull List getInputFieldIds() { - throw new RuntimeException("Not implemented"); + return List.of( + PaymentAccountFormField.FieldId.EMAIL, + PaymentAccountFormField.FieldId.HOLDER_NAME, + PaymentAccountFormField.FieldId.CITY, + PaymentAccountFormField.FieldId.STATE + ); } public String getEmail() { diff --git a/core/src/main/java/haveno/core/payment/payload/PaymentMethod.java b/core/src/main/java/haveno/core/payment/payload/PaymentMethod.java index 4a8246fe78..49043fb1ef 100644 --- a/core/src/main/java/haveno/core/payment/payload/PaymentMethod.java +++ b/core/src/main/java/haveno/core/payment/payload/PaymentMethod.java @@ -369,7 +369,42 @@ public final class PaymentMethod implements PersistablePayload, Comparable paymentMethodIds.contains(paymentMethod.getId())).collect(Collectors.toList()); } diff --git a/proto/src/main/proto/pb.proto b/proto/src/main/proto/pb.proto index 022031d08d..3b31fd9d79 100644 --- a/proto/src/main/proto/pb.proto +++ b/proto/src/main/proto/pb.proto @@ -1903,6 +1903,41 @@ message PaymentAccountForm { PAYPAL = 17; VENMO = 18; PAYSAFE = 19; + CAPITUAL = 20; + CELPAY = 21; + MONESE = 22; + SATISPAY = 23; + TIKKIE = 24; + VERSE = 25; + ACH_TRANSFER = 26; + DOMESTIC_WIRE_TRANSFER = 27; + JAPAN_BANK = 28; + ALI_PAY = 29; + WECHAT_PAY = 30; + PROMPT_PAY = 31; + NEFT = 32; + RTGS = 33; + IMPS = 34; + UPI = 35; + PAYTM = 36; + NEQUI = 37; + BIZUM = 38; + PIX = 39; + HAL_CASH = 40; + MONEY_BEAM = 41; + SWISH = 42; + POPMONEY = 43; + US_POSTAL_MONEY_ORDER = 44; + INTERAC_E_TRANSFER = 45; + CASH_DEPOSIT = 46; + WESTERN_UNION = 47; + NATIONAL_BANK = 48; + SAME_BANK = 49; + SPECIFIC_BANKS = 50; + AMAZON_GIFT_CARD = 51; + PERFECT_MONEY = 52; + ADVANCED_CASH = 53; + PAYSERA = 54; } FormId id = 1; repeated PaymentAccountFormField fields = 2; @@ -1970,6 +2005,7 @@ message PaymentAccountFormField { USERNAME = 57; EMAIL_OR_MOBILE_NR_OR_USERNAME = 58; EMAIL_OR_MOBILE_NR_OR_CASHTAG = 59; + VIRTUAL_PAYMENT_ADDRESS = 60; } enum Component { TEXT = 0;