From a136f79bd148c6bdf1713bca58c6cbab9f38f99c Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sun, 22 Sep 2024 18:05:19 -0400 Subject: [PATCH 1/3] Add new payment method "Faster Payments System (SBP)" for Russian Ruble This is the standard P2P payment method in Russia to perform funds transfers and payments between Russian bank accounts in Russian Rubles. There is no chargeback risk. Recipient bank account is located using telephone number and bank name, and sender receives recipients first name, middle name, and initial of last name to confirm the phone number entered is correct before sending. Adding this new payment method has been discussed at length on the GitHub 'growth' channel at: https://github.com/bisq-network/growth/issues/288 --- .../core/payment/PaymentAccountFactory.java | 2 + .../bisq/core/payment/PaymentAccountUtil.java | 2 + .../java/bisq/core/payment/SbpAccount.java | 78 +++++++++++ .../core/payment/payload/PaymentMethod.java | 5 + .../payment/payload/SbpAccountPayload.java | 129 +++++++++++++++++ .../bisq/core/proto/CoreProtoResolver.java | 3 + .../trade/statistics/TradeStatistics3.java | 3 +- .../resources/i18n/displayStrings.properties | 15 ++ .../i18n/displayStrings_ru.properties | 14 ++ .../components/paymentmethods/SbpForm.java | 130 ++++++++++++++++++ .../fiataccounts/FiatAccountsView.java | 7 + .../steps/buyer/BuyerStep2View.java | 7 + .../desktop/util/validation/SbpValidator.java | 38 +++++ proto/src/main/proto/pb.proto | 7 + 14 files changed, 439 insertions(+), 1 deletion(-) create mode 100644 core/src/main/java/bisq/core/payment/SbpAccount.java create mode 100644 core/src/main/java/bisq/core/payment/payload/SbpAccountPayload.java create mode 100644 desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java create mode 100644 desktop/src/main/java/bisq/desktop/util/validation/SbpValidator.java diff --git a/core/src/main/java/bisq/core/payment/PaymentAccountFactory.java b/core/src/main/java/bisq/core/payment/PaymentAccountFactory.java index 3938753a200..212126b65e5 100644 --- a/core/src/main/java/bisq/core/payment/PaymentAccountFactory.java +++ b/core/src/main/java/bisq/core/payment/PaymentAccountFactory.java @@ -132,6 +132,8 @@ public static PaymentAccount getPaymentAccount(PaymentMethod paymentMethod) { return new BsqSwapAccount(); case PaymentMethod.MERCADO_PAGO_ID: return new MercadoPagoAccount(); + case PaymentMethod.SBP_ID: + return new SbpAccount(); // Cannot be deleted as it would break old trade history entries case PaymentMethod.OK_PAY_ID: diff --git a/core/src/main/java/bisq/core/payment/PaymentAccountUtil.java b/core/src/main/java/bisq/core/payment/PaymentAccountUtil.java index 2ab9494a468..b5608c33761 100644 --- a/core/src/main/java/bisq/core/payment/PaymentAccountUtil.java +++ b/core/src/main/java/bisq/core/payment/PaymentAccountUtil.java @@ -216,6 +216,8 @@ public static List getTradeCurrencies(PaymentMethod paymentMethod return VerseAccount.SUPPORTED_CURRENCIES; case MERCADO_PAGO_ID: return MercadoPagoAccount.SUPPORTED_CURRENCIES(); + case SBP_ID: + return SbpAccount.SUPPORTED_CURRENCIES; default: return Collections.emptyList(); } diff --git a/core/src/main/java/bisq/core/payment/SbpAccount.java b/core/src/main/java/bisq/core/payment/SbpAccount.java new file mode 100644 index 00000000000..50be0237a12 --- /dev/null +++ b/core/src/main/java/bisq/core/payment/SbpAccount.java @@ -0,0 +1,78 @@ +/* + * This file is part of Bisq. + * + * Bisq is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bisq is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bisq. If not, see . + */ + +package bisq.core.payment; + +import bisq.core.locale.FiatCurrency; +import bisq.core.locale.TradeCurrency; +import bisq.core.payment.payload.SbpAccountPayload; +import bisq.core.payment.payload.PaymentAccountPayload; +import bisq.core.payment.payload.PaymentMethod; + +import java.util.List; + +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +@EqualsAndHashCode(callSuper = true) +public final class SbpAccount extends PaymentAccount { + + public static final List SUPPORTED_CURRENCIES = List.of(new FiatCurrency("RUB")); + + public SbpAccount() { + super(PaymentMethod.SBP); + setSingleTradeCurrency(SUPPORTED_CURRENCIES.get(0)); + } + + @Override + protected PaymentAccountPayload createPayload() { + return new SbpAccountPayload(paymentMethod.getId(), id); + } + + @Override + public @NonNull List getSupportedCurrencies() { + return SUPPORTED_CURRENCIES; + } + + public String getMessageForAccountCreation() { + return "payment.sbp.info.account"; + } + + public void setMobileNumber(String mobileNumber) { + ((SbpAccountPayload) paymentAccountPayload).setMobileNumber(mobileNumber); + } + + public String getMobileNumber() { + return ((SbpAccountPayload) paymentAccountPayload).getMobileNumber(); + } + + public void setBankName(String bankName) { + ((SbpAccountPayload) paymentAccountPayload).setBankName(bankName); + } + + public String getBankName() { + return ((SbpAccountPayload) paymentAccountPayload).getBankName(); + } + + public void setHolderName(String holderName) { + ((SbpAccountPayload) paymentAccountPayload).setHolderName(holderName); + } + + public String getHolderName() { + return ((SbpAccountPayload) paymentAccountPayload).getHolderName(); + } +} diff --git a/core/src/main/java/bisq/core/payment/payload/PaymentMethod.java b/core/src/main/java/bisq/core/payment/payload/PaymentMethod.java index 6a1988911d5..2d51c32d127 100644 --- a/core/src/main/java/bisq/core/payment/payload/PaymentMethod.java +++ b/core/src/main/java/bisq/core/payment/payload/PaymentMethod.java @@ -124,6 +124,7 @@ public final class PaymentMethod implements PersistablePayload, Comparable. + */ + +package bisq.core.payment.payload; + +import bisq.core.locale.Res; + +import com.google.protobuf.Message; + +import org.apache.commons.lang3.ArrayUtils; + +import java.nio.charset.StandardCharsets; + +import java.util.HashMap; +import java.util.Map; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.extern.slf4j.Slf4j; + +@EqualsAndHashCode(callSuper = true) +@ToString +@Setter +@Getter +@Slf4j +public final class SbpAccountPayload extends PaymentAccountPayload implements PayloadWithHolderName { + private String mobileNumber = ""; + private String holderName = ""; + private String bankName = ""; + + public SbpAccountPayload(String paymentMethod, String id) { + super(paymentMethod, id); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // PROTO BUFFER + /////////////////////////////////////////////////////////////////////////////////////////// + + private SbpAccountPayload(String paymentMethod, + String id, + String mobileNumber, + String holderName, + String bankName, + long maxTradePeriod, + Map excludeFromJsonDataMap) { + super(paymentMethod, + id, + maxTradePeriod, + excludeFromJsonDataMap); + + this.mobileNumber = mobileNumber; + this.holderName = holderName; + this.bankName = bankName; + } + + @Override + public Message toProtoMessage() { + return getPaymentAccountPayloadBuilder() + .setSbpAccountPayload(protobuf.SbpAccountPayload.newBuilder() + .setMobileNumber(mobileNumber) + .setHolderName(holderName) + .setBankName(bankName)) + .build(); + } + + public static SbpAccountPayload fromProto(protobuf.PaymentAccountPayload proto) { + return new SbpAccountPayload(proto.getPaymentMethodId(), + proto.getId(), + proto.getSbpAccountPayload().getMobileNumber(), + proto.getSbpAccountPayload().getHolderName(), + proto.getSbpAccountPayload().getBankName(), + proto.getMaxTradePeriod(), + new HashMap<>(proto.getExcludeFromJsonDataMap())); + } + + + /////////////////////////////////////////////////////////////////////////////////////////// + // API + /////////////////////////////////////////////////////////////////////////////////////////// + + @Override + public String getPaymentDetails() { + return Res.get(paymentMethodId) + " - " + + Res.getWithCol("payment.account.owner.sbp") + " " + holderName + ", " + + Res.getWithCol("payment.mobile") + " " + mobileNumber + ", " + + Res.getWithCol("payment.bank.name") + " " + bankName; + } + + @Override + public String getPaymentDetailsForTradePopup() { + return Res.getWithCol("payment.account.owner.sbp") + " " + holderName + "\n" + + Res.getWithCol("payment.mobile") + " " + mobileNumber + "\n" + + Res.getWithCol("payment.bank.name") + " " + bankName; + } + + @Override + public byte[] getAgeWitnessInputData() { + // We don't add holderName because we don't want to break age validation if the user recreates an account with + // slight changes in holder name (e.g. add or remove middle name) + return super.getAgeWitnessInputData( + ArrayUtils.addAll( + mobileNumber.getBytes(StandardCharsets.UTF_8), + bankName.getBytes(StandardCharsets.UTF_8) + ) + ); + } + + @Override + public String getOwnerId() { + return holderName; + } +} diff --git a/core/src/main/java/bisq/core/proto/CoreProtoResolver.java b/core/src/main/java/bisq/core/proto/CoreProtoResolver.java index 92f152d5771..47ce90c3d04 100644 --- a/core/src/main/java/bisq/core/proto/CoreProtoResolver.java +++ b/core/src/main/java/bisq/core/proto/CoreProtoResolver.java @@ -64,6 +64,7 @@ import bisq.core.payment.payload.RtgsAccountPayload; import bisq.core.payment.payload.SameBankAccountPayload; import bisq.core.payment.payload.SatispayAccountPayload; +import bisq.core.payment.payload.SbpAccountPayload; import bisq.core.payment.payload.SepaAccountPayload; import bisq.core.payment.payload.SepaInstantAccountPayload; import bisq.core.payment.payload.SpecificBanksAccountPayload; @@ -236,6 +237,8 @@ public PaymentAccountPayload fromProto(protobuf.PaymentAccountPayload proto) { return SwiftAccountPayload.fromProto(proto); case BSQ_SWAP_ACCOUNT_PAYLOAD: return BsqSwapAccountPayload.fromProto(proto); + case SBP_ACCOUNT_PAYLOAD: + return SbpAccountPayload.fromProto(proto); // Cannot be deleted as it would break old trade history entries case O_K_PAY_ACCOUNT_PAYLOAD: diff --git a/core/src/main/java/bisq/core/trade/statistics/TradeStatistics3.java b/core/src/main/java/bisq/core/trade/statistics/TradeStatistics3.java index 135da27d858..2b43fba0fbe 100644 --- a/core/src/main/java/bisq/core/trade/statistics/TradeStatistics3.java +++ b/core/src/main/java/bisq/core/trade/statistics/TradeStatistics3.java @@ -197,7 +197,8 @@ enum PaymentMethodMapper { TIKKIE, TRANSFERWISE_USD, ACH_TRANSFER, - DOMESTIC_WIRE_TRANSFER; + DOMESTIC_WIRE_TRANSFER, + SBP; private static final PaymentMethodMapper[] values = values(); // cache for perf gain } diff --git a/core/src/main/resources/i18n/displayStrings.properties b/core/src/main/resources/i18n/displayStrings.properties index 6c74cb1a5f0..8909be25f4e 100644 --- a/core/src/main/resources/i18n/displayStrings.properties +++ b/core/src/main/resources/i18n/displayStrings.properties @@ -820,6 +820,7 @@ portfolio.pending.step2_buyer.halCashInfo.msg=You need to send a text message wi portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Some banks might verify the receiver's name. \ Faster Payments accounts created in old Bisq clients do not provide the receiver's name, \ so please use trade chat to obtain it (if needed). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Confirm that you have started the payment portfolio.pending.step2_buyer.confirmStart.msg=Did you initiate the {0} payment to your trading partner? portfolio.pending.step2_buyer.confirmStart.yes=Yes, I have started the payment @@ -3721,6 +3722,7 @@ payment.account.phoneNr=Phone number payment.account.owner=Account owner full name payment.account.owner.ask=[Ask trader to provide account name if needed] payment.account.fullName=Full name (first, middle, last) +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.state=State/Province/Region payment.account.city=City payment.account.address=Address @@ -4295,6 +4297,14 @@ payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send - Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ @@ -4423,6 +4433,9 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) + # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -4521,6 +4534,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_ru.properties b/core/src/main/resources/i18n/displayStrings_ru.properties index 58d6884335d..7d0ac2f2a13 100644 --- a/core/src/main/resources/i18n/displayStrings_ru.properties +++ b/core/src/main/resources/i18n/displayStrings_ru.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Вам необходим portfolio.pending.step2_buyer.halCashInfo.headline=Отправить код HalCash portfolio.pending.step2_buyer.halCashInfo.msg=Вам необходимо отправить сообщение с кодом HalCash и идентификатором сделки ({0}) продавцу BTC.\nНомер моб. тел. продавца: {1}\n\nВы отправили код продавцу? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Some banks might verify the receiver's name. Faster Payments accounts created in old Bisq clients do not provide the receiver's name, so please use trade chat to obtain it (if needed). +portfolio.pending.step2_buyer.sbp=Пожалуйста, оплатите {0} через услугу SBP «Оплата по номеру телефона» вашего банка, используя информацию продавца на следующем экране.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Подтвердите начало платежа portfolio.pending.step2_buyer.confirmStart.msg=Вы начали платеж {0} своему контрагенту? portfolio.pending.step2_buyer.confirmStart.yes=Да @@ -2945,6 +2946,7 @@ payment.account.phoneNr=Phone number payment.account.owner=Полное имя владельца счёта payment.account.owner.ask=[Ask trader to provide account name if needed] payment.account.fullName=Полное имя (имя, отчество, фамилия) +payment.account.owner.sbp=Имя владельца счёта (Имя, отчество, первая буква фамилии) payment.account.state=Штат/Провинция/Область payment.account.city=Город payment.account.address=Адрес @@ -3204,6 +3206,14 @@ payment.payid.info=A PayID like a phone number, email address or an Australian B payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=Система быстрых платежей (СБП) — это межбанковский сервис денежных переводов в РОССИИ, позволяющий физическим лицам \ + совершать личные платежи, используя только номер мобильного телефона.\n\n\ + 1. Сервис предназначен для платежей и переводов между российскими банковскими счетами только в российских рублях.\n\n\ + 2. Для использования сервиса можно зарегистрировать только номера мобильных операторов России (+7 код страны).\n\n\ + 3. Вам необходимо создать отдельную учетную запись Bisq для каждого банка, в котором у вас есть счет и вы хотите получать средства.\n\n\ + 4. СБП отображает имя, отчество и первую букву фамилии получателя для проверки правильности номера телефона. \ + Поэтому вам следует ввести имя владельца учетной записи в учетной записи Bisq, используя тот же стиль. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ @@ -3332,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Система быстрых платежей (СБП) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3430,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=СБП # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java new file mode 100644 index 00000000000..f95a915008a --- /dev/null +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java @@ -0,0 +1,130 @@ +/* + * This file is part of Bisq. + * + * Bisq is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bisq is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bisq. If not, see . + */ + +package bisq.desktop.components.paymentmethods; + +import bisq.desktop.components.InputTextField; +import bisq.desktop.util.FormBuilder; +import bisq.desktop.util.validation.SbpValidator; + +import bisq.core.account.witness.AccountAgeWitnessService; +import bisq.core.locale.Res; +import bisq.core.locale.TradeCurrency; +import bisq.core.payment.SbpAccount; +import bisq.core.payment.PaymentAccount; +import bisq.core.payment.payload.SbpAccountPayload; +import bisq.core.payment.payload.PaymentAccountPayload; +import bisq.core.util.coin.CoinFormatter; +import bisq.core.util.validation.InputValidator; + +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; + +import static bisq.desktop.util.FormBuilder.addCompactTopLabelTextField; +import static bisq.desktop.util.FormBuilder.addCompactTopLabelTextFieldWithCopyIcon; +import static bisq.desktop.util.FormBuilder.addTopLabelTextField; + +public class SbpForm extends PaymentMethodForm { + private final SbpAccount SbpAccount; + private final SbpValidator SbpValidator; + + public static int addFormForBuyer(GridPane gridPane, int gridRow, PaymentAccountPayload paymentAccountPayload) { + addCompactTopLabelTextFieldWithCopyIcon(gridPane, ++gridRow, Res.get("payment.account.owner.sbp"), + ((SbpAccountPayload) paymentAccountPayload).getHolderName()); + addCompactTopLabelTextFieldWithCopyIcon(gridPane, gridRow, 1, Res.get("payment.mobile"), + ((SbpAccountPayload) paymentAccountPayload).getMobileNumber()); + addCompactTopLabelTextFieldWithCopyIcon(gridPane, ++gridRow, Res.get("payment.bank.name"), + ((SbpAccountPayload) paymentAccountPayload).getBankName()); + return gridRow; + } + + public SbpForm(PaymentAccount paymentAccount, AccountAgeWitnessService accountAgeWitnessService, SbpValidator sbpValidator, InputValidator inputValidator, GridPane gridPane, int gridRow, CoinFormatter formatter) { + super(paymentAccount, accountAgeWitnessService, inputValidator, gridPane, gridRow, formatter); + this.SbpAccount = (SbpAccount) paymentAccount; + this.SbpValidator = sbpValidator; + } + + @Override + public void addFormForAddAccount() { + gridRowFrom = gridRow + 1; + + InputTextField holderNameInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, + Res.get("payment.account.owner.sbp")); + holderNameInputTextField.setValidator(inputValidator); + holderNameInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { + SbpAccount.setHolderName(newValue.trim()); + updateFromInputs(); + }); + + InputTextField mobileNrInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, + Res.get("payment.mobile")); + mobileNrInputTextField.setValidator(SbpValidator); + mobileNrInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { + SbpAccount.setMobileNumber(newValue.trim()); + updateFromInputs(); + }); + + InputTextField bankNameInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, + Res.get("payment.bank.name")); + bankNameInputTextField.setValidator(inputValidator); + bankNameInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { + SbpAccount.setBankName(newValue.trim()); + updateFromInputs(); + }); + + final TradeCurrency singleTradeCurrency = SbpAccount.getSingleTradeCurrency(); + final String nameAndCode = singleTradeCurrency != null ? singleTradeCurrency.getNameAndCode() : ""; + addTopLabelTextField(gridPane, ++gridRow, Res.get("shared.currency"), + nameAndCode); + addLimitations(false); + addAccountNameTextFieldWithAutoFillToggleButton(); + } + + @Override + protected void autoFillNameTextField() { + setAccountNameWithString(SbpAccount.getMobileNumber()); + } + + @Override + public void addFormForEditAccount() { + gridRowFrom = gridRow; + addAccountNameTextFieldWithAutoFillToggleButton(); + addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.paymentMethod"), + Res.get(SbpAccount.getPaymentMethod().getId())); + addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.account.owner.sbp"), + SbpAccount.getHolderName()); + TextField mobileNrField = addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.mobile"), + SbpAccount.getMobileNumber()).second; + mobileNrField.setMouseTransparent(false); + TextField BankNameField = addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.bank.name"), + SbpAccount.getBankName()).second; + final TradeCurrency singleTradeCurrency = SbpAccount.getSingleTradeCurrency(); + final String nameAndCode = singleTradeCurrency != null ? singleTradeCurrency.getNameAndCode() : ""; + addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.currency"), + nameAndCode); + addLimitations(true); + } + + @Override + public void updateAllInputsValid() { + allInputsValid.set(isAccountNameValid() + && SbpValidator.validate(SbpAccount.getMobileNumber()).isValid + && inputValidator.validate(SbpAccount.getHolderName()).isValid + && inputValidator.validate(SbpAccount.getBankName()).isValid + && SbpAccount.getTradeCurrencies().size() > 0); + } +} diff --git a/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsView.java b/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsView.java index 6c70db3ad62..8778a6b8cf3 100644 --- a/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsView.java +++ b/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsView.java @@ -58,6 +58,7 @@ import bisq.desktop.components.paymentmethods.RtgsForm; import bisq.desktop.components.paymentmethods.SameBankForm; import bisq.desktop.components.paymentmethods.SatispayForm; +import bisq.desktop.components.paymentmethods.SbpForm; import bisq.desktop.components.paymentmethods.SepaForm; import bisq.desktop.components.paymentmethods.SepaInstantForm; import bisq.desktop.components.paymentmethods.SpecificBankForm; @@ -96,6 +97,7 @@ import bisq.desktop.util.validation.PopmoneyValidator; import bisq.desktop.util.validation.PromptPayValidator; import bisq.desktop.util.validation.RevolutValidator; +import bisq.desktop.util.validation.SbpValidator; import bisq.desktop.util.validation.SwishValidator; import bisq.desktop.util.validation.TransferwiseValidator; import bisq.desktop.util.validation.USPostalMoneyOrderValidator; @@ -186,6 +188,7 @@ public class FiatAccountsView extends PaymentAccountsView paymentMethodComboBox; private PaymentMethodForm paymentMethodForm; @@ -217,6 +220,7 @@ public FiatAccountsView(FiatAccountsViewModel model, PromptPayValidator promptPayValidator, AdvancedCashValidator advancedCashValidator, TransferwiseValidator transferwiseValidator, + SbpValidator sbpValidator, AccountAgeWitnessService accountAgeWitnessService, KeyRing keyRing, @Named(FormattingUtils.BTC_FORMATTER_KEY) CoinFormatter formatter) { @@ -247,6 +251,7 @@ public FiatAccountsView(FiatAccountsViewModel model, this.promptPayValidator = promptPayValidator; this.advancedCashValidator = advancedCashValidator; this.transferwiseValidator = transferwiseValidator; + this.sbpValidator = sbpValidator; this.formatter = formatter; } @@ -710,6 +715,8 @@ private PaymentMethodForm getPaymentMethodForm(PaymentMethod paymentMethod, Paym return new DomesticWireTransferForm(paymentAccount, accountAgeWitnessService, inputValidator, root, gridRow, formatter); case PaymentMethod.MERCADO_PAGO_ID: return new MercadoPagoForm(paymentAccount, accountAgeWitnessService, inputValidator, root, gridRow, formatter); + case PaymentMethod.SBP_ID: + return new SbpForm(paymentAccount, accountAgeWitnessService, sbpValidator, inputValidator, root, gridRow, formatter); default: log.error("Not supported PaymentMethod: " + paymentMethod); return null; diff --git a/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep2View.java b/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep2View.java index 8eb48afa005..60f8f4dc169 100644 --- a/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep2View.java +++ b/desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep2View.java @@ -60,6 +60,7 @@ import bisq.desktop.components.paymentmethods.RtgsForm; import bisq.desktop.components.paymentmethods.SameBankForm; import bisq.desktop.components.paymentmethods.SatispayForm; +import bisq.desktop.components.paymentmethods.SbpForm; import bisq.desktop.components.paymentmethods.SepaForm; import bisq.desktop.components.paymentmethods.SepaInstantForm; import bisq.desktop.components.paymentmethods.SpecificBankForm; @@ -102,6 +103,7 @@ import bisq.core.payment.payload.MoneyGramAccountPayload; import bisq.core.payment.payload.PaymentAccountPayload; import bisq.core.payment.payload.PaymentMethod; +import bisq.core.payment.payload.SbpAccountPayload; import bisq.core.payment.payload.SepaAccountPayload; import bisq.core.payment.payload.SepaInstantAccountPayload; import bisq.core.payment.payload.SwiftAccountPayload; @@ -430,6 +432,9 @@ protected void addContent() { case PaymentMethod.MERCADO_PAGO_ID: gridRow = MercadoPagoForm.addFormForBuyer(gridPane, gridRow, paymentAccountPayload); break; + case PaymentMethod.SBP_ID: + gridRow = SbpForm.addFormForBuyer(gridPane, gridRow, paymentAccountPayload); + break; default: log.error("Not supported PaymentMethod: " + paymentMethodId); } @@ -713,6 +718,8 @@ private void showPopup() { message += Res.get("portfolio.pending.step2_buyer.pay", amount) + refTextWarn + "\n\n" + Res.get("portfolio.pending.step2_buyer.fees.swift"); + } else if (paymentAccountPayload instanceof SbpAccountPayload) { + message += Res.get("portfolio.pending.step2_buyer.sbp", amount); } else { message += Res.get("portfolio.pending.step2_buyer.pay", amount) + refTextWarn + "\n\n" + diff --git a/desktop/src/main/java/bisq/desktop/util/validation/SbpValidator.java b/desktop/src/main/java/bisq/desktop/util/validation/SbpValidator.java new file mode 100644 index 00000000000..a9f60f673cc --- /dev/null +++ b/desktop/src/main/java/bisq/desktop/util/validation/SbpValidator.java @@ -0,0 +1,38 @@ +/* + * This file is part of Bisq. + * + * Bisq is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bisq is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bisq. If not, see . + */ + +package bisq.desktop.util.validation; + +public final class SbpValidator extends PhoneNumberValidator { + + /////////////////////////////////////////////////////////////////////////////////////////// + // Constructor + /////////////////////////////////////////////////////////////////////////////////////////// + + // Public no-arg constructor required by Guice injector. + // Superclass' isoCountryCode must be set before validation. + public SbpValidator() { super("RU"); } + + /////////////////////////////////////////////////////////////////////////////////////////// + // Public methods + /////////////////////////////////////////////////////////////////////////////////////////// + + @Override + public ValidationResult validate(String input) { + return super.validate(input); + } +} diff --git a/proto/src/main/proto/pb.proto b/proto/src/main/proto/pb.proto index 034343f1996..0d5292e1fde 100644 --- a/proto/src/main/proto/pb.proto +++ b/proto/src/main/proto/pb.proto @@ -1103,6 +1103,7 @@ message PaymentAccountPayload { MoneseAccountPayload monese_account_payload = 38; VerseAccountPayload verse_account_payload = 39; BsqSwapAccountPayload bsq_swap_account_payload = 40; + SbpAccountPayload sbp_account_payload = 41; } map exclude_from_json_data = 15; } @@ -1458,6 +1459,12 @@ message SwiftAccountPayload { string intermediary_address = 16; } +message SbpAccountPayload { + string holder_name = 1; + string mobile_number = 2; + string bank_name = 3; +} + message PersistableEnvelope { oneof message { SequenceNumberMap sequence_number_map = 1; From a0f24fe5d5c5e03bde4ad4a5442dbc3d41287630 Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sun, 22 Sep 2024 18:55:04 -0400 Subject: [PATCH 2/3] Add new payment method "Faster Payments System (SBP)" for Russian Ruble Added new displayStrings into other language files as a placeholder for future translation, minor revision to order of payment method fields in source code (cosmetic, no impact on functionality) --- .../bisq/core/payment/payload/SbpAccountPayload.java | 10 +++++----- core/src/main/resources/i18n/displayStrings.properties | 2 +- .../main/resources/i18n/displayStrings_cs.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_de.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_es.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_fa.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_fr.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_it.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_ja.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_pl.properties | 10 ++++++++++ .../resources/i18n/displayStrings_pt-br.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_pt.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_ru.properties | 2 +- .../main/resources/i18n/displayStrings_th.properties | 10 ++++++++++ .../main/resources/i18n/displayStrings_vi.properties | 10 ++++++++++ .../resources/i18n/displayStrings_zh-hans.properties | 10 ++++++++++ .../resources/i18n/displayStrings_zh-hant.properties | 10 ++++++++++ .../desktop/components/paymentmethods/SbpForm.java | 2 +- 18 files changed, 148 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/bisq/core/payment/payload/SbpAccountPayload.java b/core/src/main/java/bisq/core/payment/payload/SbpAccountPayload.java index cb03f87c4c1..ca6ec229f84 100644 --- a/core/src/main/java/bisq/core/payment/payload/SbpAccountPayload.java +++ b/core/src/main/java/bisq/core/payment/payload/SbpAccountPayload.java @@ -40,8 +40,8 @@ @Getter @Slf4j public final class SbpAccountPayload extends PaymentAccountPayload implements PayloadWithHolderName { - private String mobileNumber = ""; private String holderName = ""; + private String mobileNumber = ""; private String bankName = ""; public SbpAccountPayload(String paymentMethod, String id) { @@ -55,8 +55,8 @@ public SbpAccountPayload(String paymentMethod, String id) { private SbpAccountPayload(String paymentMethod, String id, - String mobileNumber, String holderName, + String mobileNumber, String bankName, long maxTradePeriod, Map excludeFromJsonDataMap) { @@ -65,8 +65,8 @@ private SbpAccountPayload(String paymentMethod, maxTradePeriod, excludeFromJsonDataMap); - this.mobileNumber = mobileNumber; this.holderName = holderName; + this.mobileNumber = mobileNumber; this.bankName = bankName; } @@ -74,8 +74,8 @@ private SbpAccountPayload(String paymentMethod, public Message toProtoMessage() { return getPaymentAccountPayloadBuilder() .setSbpAccountPayload(protobuf.SbpAccountPayload.newBuilder() - .setMobileNumber(mobileNumber) .setHolderName(holderName) + .setMobileNumber(mobileNumber) .setBankName(bankName)) .build(); } @@ -83,8 +83,8 @@ public Message toProtoMessage() { public static SbpAccountPayload fromProto(protobuf.PaymentAccountPayload proto) { return new SbpAccountPayload(proto.getPaymentMethodId(), proto.getId(), - proto.getSbpAccountPayload().getMobileNumber(), proto.getSbpAccountPayload().getHolderName(), + proto.getSbpAccountPayload().getMobileNumber(), proto.getSbpAccountPayload().getBankName(), proto.getMaxTradePeriod(), new HashMap<>(proto.getExcludeFromJsonDataMap())); diff --git a/core/src/main/resources/i18n/displayStrings.properties b/core/src/main/resources/i18n/displayStrings.properties index 8909be25f4e..96fa72e3d17 100644 --- a/core/src/main/resources/i18n/displayStrings.properties +++ b/core/src/main/resources/i18n/displayStrings.properties @@ -3721,8 +3721,8 @@ payment.account.userName=User name payment.account.phoneNr=Phone number payment.account.owner=Account owner full name payment.account.owner.ask=[Ask trader to provide account name if needed] -payment.account.fullName=Full name (first, middle, last) payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) +payment.account.fullName=Full name (first, middle, last) payment.account.state=State/Province/Region payment.account.city=City payment.account.address=Address diff --git a/core/src/main/resources/i18n/displayStrings_cs.properties b/core/src/main/resources/i18n/displayStrings_cs.properties index 13c9af0c9b8..e8567f04eda 100644 --- a/core/src/main/resources/i18n/displayStrings_cs.properties +++ b/core/src/main/resources/i18n/displayStrings_cs.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Musíte odeslat MTCN (sle portfolio.pending.step2_buyer.halCashInfo.headline=Pošlete HalCash kód portfolio.pending.step2_buyer.halCashInfo.msg=Musíte odeslat jak textovou zprávu s kódem HalCash tak i obchodní ID ({0}) prodejci BTC.\nMobilní číslo prodejce je {1}.\n\nPoslali jste kód prodejci? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Některé banky mohou ověřovat jméno příjemce. Účty Faster Payments vytvořené u starých klientů Bisq neposkytují jméno příjemce, proto si jej (v případě potřeby) vyžádejte pomocí obchodního chatu. +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Potvrďte, že jste zahájili platbu portfolio.pending.step2_buyer.confirmStart.msg=Zahájili jste platbu {0} vašemu obchodnímu partnerovi? portfolio.pending.step2_buyer.confirmStart.yes=Ano, zahájil jsem platbu @@ -2944,6 +2945,7 @@ payment.account.userName=Uživatelské jméno payment.account.phoneNr=Telefonní číslo payment.account.owner=Celé jméno vlastníka účtu payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Celé jméno (křestní, střední, příjmení) payment.account.state=Stát/Provincie/Region payment.account.city=Město @@ -3204,6 +3206,14 @@ payment.payid.info=PayID jako telefonní číslo, e-mailová adresa nebo austral payment.amazonGiftCard.info=Chcete-li platit dárkovou kartou Amazon eGift, budete muset prodejci BTC poslat kartu Amazon eGift přes svůj účet Amazon.\n\nPro další detaily a rady viz wiki: [HYPERLINK:https://bisq.wiki/Amazon_eGift_card].\n\nZde jsou tři důležité poznámky:\n- Preferujte dárkové karty v hodnotě do 100 USD, protože Amazon může považovat nákupy karet s vyššími částkami jako podezřelé a zablokovat je.\n- Na kartě do zprávy pro příjemce můžete přidat i vlastní originální text (např. "Happy birthday Susan!"). V takovém případě o tom informujte protistranu pomocí obchodního chatu, aby mohli s jistotou ověřit, že obdržená dárková karta pochází od vás.\n- Karty Amazon eGift lze uplatnit pouze na té stránce Amazon, na které byly také koupeny (např. karta koupená na amazon.it může být uplatněna zase jen na amazon.it). payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_de.properties b/core/src/main/resources/i18n/displayStrings_de.properties index 922af483650..480631884de 100644 --- a/core/src/main/resources/i18n/displayStrings_de.properties +++ b/core/src/main/resources/i18n/displayStrings_de.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Sie müssen die MTCN (Tra portfolio.pending.step2_buyer.halCashInfo.headline=HalCash Code senden portfolio.pending.step2_buyer.halCashInfo.msg=Sie müssen eine SMS mit dem HalCash-Code sowie der Trade-ID ({0}) an den BTC-Verkäufer senden.\nDie Handynummer des Verkäufers lautet {1}.\n\nHaben Sie den Code an den Verkäufer gesendet? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Einige Banken könnten den Namen des Empfängers überprüfen. Faster Payments Konten, die in alten Bisq-Clients angelegt wurden, geben den Namen des Empfängers nicht an, also benutzen Sie bitte den Trade-Chat, um ihn zu erhalten (falls erforderlich). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Bestätigen Sie, dass Sie die Zahlung begonnen haben portfolio.pending.step2_buyer.confirmStart.msg=Haben Sie die {0}-Zahlung an Ihren Handelspartner begonnen? portfolio.pending.step2_buyer.confirmStart.yes=Ja, ich habe die Zahlung begonnen @@ -2944,6 +2945,7 @@ payment.account.userName=Benutzername payment.account.phoneNr=Telefonnummer payment.account.owner=Vollständiger Name des Kontoinhabers payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Vollständiger Name (vor, zweit, nach) payment.account.state=Bundesland/Landkreis/Region payment.account.city=Stadt @@ -3204,6 +3206,14 @@ payment.payid.info=Eine PayID wie eine Telefonnummer, E-Mail Adresse oder Austra payment.amazonGiftCard.info=Um mit einer Amazon eGift Card zu bezahlen, müssen Sie eine Amazon eGift Card über Ihr Amazon-Konto an den BTC-Verkäufer senden. \n\nDetails und bewährte Methoden finden Sie im Wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card]. \n\nDrei wichtige Hinweise:\n- Versuchen Sie, Geschenkkarten mit Beträgen von 100 USD oder weniger zu versenden, da Amazon dafür bekannt ist, größere Geschenkkarten als betrügerisch einzustufen\n- Versuchen Sie, einen kreativen, glaubwürdigen Text für die Nachricht der Geschenkkarte zu verwenden (z. B. "Alles Gute zum Geburtstag, Susi!") und nutzen Sie den Händler-Chat, um Ihrem Handelspartner den von Ihnen gewählten Referenztext mitzuteilen, damit er Ihre Zahlung überprüfen kann.\n- Amazon eGift Cards können nur auf der Amazon-Website eingelöst werden, auf der sie gekauft wurden (z. B. kann eine auf amazon.it gekaufte Geschenkkarte nur auf amazon.it eingelöst werden) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_es.properties b/core/src/main/resources/i18n/displayStrings_es.properties index 3b1ce26f94a..ed5cdb5cfbb 100644 --- a/core/src/main/resources/i18n/displayStrings_es.properties +++ b/core/src/main/resources/i18n/displayStrings_es.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Necesita enviar el MTCN ( portfolio.pending.step2_buyer.halCashInfo.headline=Enviar código HalCash portfolio.pending.step2_buyer.halCashInfo.msg=Necesita enviar un mensaje de texto con el código HalCash\nEl móvil del vendedor es {1}.\n\n¿Envió el código al vendedor? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Algunos bancos pueden verificar el nombre del receptor. Las cuentas Faster Payments creadas en antiguos clientes de Bisq no proporcionan el nombre completo del receptor, así que por favor, utilice el chat del intercambio para obtenerlo (si es necesario). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Confirme que ha comenzado el pago. portfolio.pending.step2_buyer.confirmStart.msg=¿Ha iniciado el pago de {0} a su par de intercambio? portfolio.pending.step2_buyer.confirmStart.yes=Sí, lo he iniciado. @@ -2944,6 +2945,7 @@ payment.account.userName=Nombre de usuario payment.account.phoneNr=Número de teléfono payment.account.owner=Nombre completo del propietario de la cuenta payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Nombre completo payment.account.state=Estado/Provincia/Región payment.account.city=Ciudad @@ -3204,6 +3206,14 @@ payment.payid.info=Un PayID como un número de teléfono, dirección email o Aus payment.amazonGiftCard.info=Para pagar con Tarjeta eGift Amazon. necesitará enviar una Tarjeta eGift Amazon al vendedor BTC a través de su cuenta Amazon.\n\nPor favor vea la wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] para más detalles y mejores prácticas.\n\nTres puntos a considerar:\n- Pruebe a enviar las tarjetas regalo en cantidades de 100USD o menores, ya que Amazon está señalando tarjetas regalo mayores como fraudulentas.\n- Pruebe a usar textos creativos y creíbles para el mensaje de la tarjeta regalo (p.ej. Feliz cumpleaños!) y usar el chat de intercambio para comentar a su par de intercambio el texto de referencia elegido de tal modo que pueda verificar su pago.\n- Las tarjetas Amazon eGift pueden ser redimidas únicamente en la web de Amazon en la que se compraron (por ejemplo, una tarjeta comprada en amazon.it solo puede ser redimida en amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_fa.properties b/core/src/main/resources/i18n/displayStrings_fa.properties index 90e1149a795..efa405f969e 100644 --- a/core/src/main/resources/i18n/displayStrings_fa.properties +++ b/core/src/main/resources/i18n/displayStrings_fa.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=شما باید MTCN (ش portfolio.pending.step2_buyer.halCashInfo.headline=ارسال کد HalCash portfolio.pending.step2_buyer.halCashInfo.msg=باید کد HalCash و شناسه‌ی معامله ({0}) را به فروشنده بیتکوین پیامک بفرستید. شماره موبایل فروشنده بیتکوین {1} است. آیا کد را برای فروشنده فرستادید؟ portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Some banks might verify the receiver's name. Faster Payments accounts created in old Bisq clients do not provide the receiver's name, so please use trade chat to obtain it (if needed). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=تأیید کنید که پرداخت را آغاز کرده‌اید portfolio.pending.step2_buyer.confirmStart.msg=آیا شما پرداخت {0} را به شریک معاملاتی خود آغاز کردید؟ portfolio.pending.step2_buyer.confirmStart.yes=بلی، پرداخت را آغاز کرده‌ام @@ -2944,6 +2945,7 @@ payment.account.userName=User name payment.account.phoneNr=Phone number payment.account.owner=نام کامل مالک حساب payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=نام کامل (اول، وسط، آخر) payment.account.state=ایالت/استان/ناحیه payment.account.city=شهر @@ -3204,6 +3206,14 @@ payment.payid.info=A PayID like a phone number, email address or an Australian B payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_fr.properties b/core/src/main/resources/i18n/displayStrings_fr.properties index e485747933e..b6aad7ef088 100644 --- a/core/src/main/resources/i18n/displayStrings_fr.properties +++ b/core/src/main/resources/i18n/displayStrings_fr.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Vous devez envoyez le MTC portfolio.pending.step2_buyer.halCashInfo.headline=Envoyer le code HalCash portfolio.pending.step2_buyer.halCashInfo.msg=Vous devez envoyez un message au format texte SMS avec le code HalCash ainsi que l''ID de la transaction ({0}) au vendeur de BTC.\nLe numéro de mobile du vendeur est {1}.\n\nAvez-vous envoyé le code au vendeur ? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Certaines banques pourraient vérifier le nom du destinataire. Des comptes de paiement plus rapides créés dans des clients Bisq plus anciens ne fournissent pas le nom du receveur, veuillez donc utiliser le chat de trade pour l'obtenir (si nécessaire). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Confirmez que vous avez initié le paiement portfolio.pending.step2_buyer.confirmStart.msg=Avez-vous initié le {0} paiement auprès de votre partenaire de trading? portfolio.pending.step2_buyer.confirmStart.yes=Oui, j'ai initié le paiement @@ -2944,6 +2945,7 @@ payment.account.userName=Nom d'utilisateur payment.account.phoneNr=Numéro de téléphone payment.account.owner=Nom et prénoms du propriétaire du compte payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Nom complet (prénom, deuxième prénom, nom de famille) payment.account.state=État/Département/Région payment.account.city=Ville @@ -3204,6 +3206,14 @@ payment.payid.info=Un PayID, tel qu'un numéro de téléphone, une adresse élec payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_it.properties b/core/src/main/resources/i18n/displayStrings_it.properties index 92a442384ed..49971c46835 100644 --- a/core/src/main/resources/i18n/displayStrings_it.properties +++ b/core/src/main/resources/i18n/displayStrings_it.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Devi inviare l'MTCN (nume portfolio.pending.step2_buyer.halCashInfo.headline=Invia il codice HalCash portfolio.pending.step2_buyer.halCashInfo.msg=È necessario inviare un messaggio di testo con il codice HalCash e l'ID dello scambio ({0}) al venditore BTC.\nIl numero di cellulare del venditore è {1}.\n\nHai inviato il codice al venditore? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Alcune banche potrebbero richiedere il nome del destinatario. Gli account di Pagamento Veloci creati dai vecchi client Bisq non forniscono il nome del destinatario, quindi (se necessario) utilizza la chat dell scambio per fartelo comunicare. +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Conferma di aver avviato il pagamento portfolio.pending.step2_buyer.confirmStart.msg=Hai avviato il pagamento {0} al tuo partner commerciale? portfolio.pending.step2_buyer.confirmStart.yes=Sì, ho avviato il pagamento @@ -2944,6 +2945,7 @@ payment.account.userName=User name payment.account.phoneNr=Phone number payment.account.owner=Nome completo del proprietario del conto payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Nome completo (nome, secondo nome, cognome) payment.account.state=Stato/Provincia/Regione payment.account.city=Città @@ -3204,6 +3206,14 @@ payment.payid.info=A PayID like a phone number, email address or an Australian B payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_ja.properties b/core/src/main/resources/i18n/displayStrings_ja.properties index a3136b0c16c..a384af1faaf 100644 --- a/core/src/main/resources/i18n/displayStrings_ja.properties +++ b/core/src/main/resources/i18n/displayStrings_ja.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=あなたはMTCN(追跡 portfolio.pending.step2_buyer.halCashInfo.headline=HalCashコードを送信 portfolio.pending.step2_buyer.halCashInfo.msg=HalCashコードと取引ID({0})を含むテキストメッセージをBTCの売り手に送信する必要があります。\n売り手の携帯電話番号は {1} です。\n\n売り手にコードを送信しましたか? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=銀行によっては、受信者の名前を検証する場合があります。 旧バージョンのBisqクライアントで作成した「Faster Payments」アカウントでは、受信者の名前は提供されませんので、(必要ならば)トレードチャットで尋ねて下さい。 +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=支払いが開始したことを確認 portfolio.pending.step2_buyer.confirmStart.msg=トレーディングパートナーへの{0}支払いを開始しましたか? portfolio.pending.step2_buyer.confirmStart.yes=はい、支払いを開始しました @@ -2944,6 +2945,7 @@ payment.account.userName=ユーザ名 payment.account.phoneNr=電話番号 payment.account.owner=アカウント所有者の氏名 payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=氏名(名、ミドルネーム、姓) payment.account.state=州/県/区 payment.account.city=市区町村 @@ -3204,6 +3206,14 @@ payment.payid.info=銀行、信用金庫、あるいは住宅金融組合アカ payment.amazonGiftCard.info=Amazonギフト券で支払うには、Amazonアカウントを使ってギフト券をBTC売り手に送る必要があります。 \n\n最良の慣行について詳しくはWikiを参照して下さい:[HYPERLINK:https://bisq.wiki/Amazon_eGift_card] \n\n3つの注意点:\n- 可能であれば、100米ドル価格以下のeGiftカードを送って下さい。それ以上の価格はアマゾンに不正な取引というフラグが立てられることがあります\n- ギフト券のメッセージフィールドに、信ぴょう性のあるメッセージを入力して下さい。(例えば「隆さん、お誕生日おめでとう!」)。そして確認のため、取引者チャットでトレードピアにメッセージの内容を伝えて下さい\n- Amazonギフト券は買われたサイトのみに交換できます(例えば、amazon.co.jpから買われたカードはamazon.co.jpのみに交換できます) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_pl.properties b/core/src/main/resources/i18n/displayStrings_pl.properties index 21ef124ab48..b274fef7cf1 100644 --- a/core/src/main/resources/i18n/displayStrings_pl.properties +++ b/core/src/main/resources/i18n/displayStrings_pl.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Musisz wysłać MTCN (num portfolio.pending.step2_buyer.halCashInfo.headline=Wyślij kod HalCash portfolio.pending.step2_buyer.halCashInfo.msg=Musisz wysłać wiadmość tekstową z kodem HalCash jak również ID transakcji ({0}) sprzedawcy BTC.\nNumer telefonu komórkowy sprzedawcy to {1}.\n\nCzy wysłałeś kod sprzedawcy ? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Niektre banki mogą również weryfikować nazwę odbiorcy. Konta z szybszymi płatnościami stworzone na starej platformie Bisq nie dostarczają pola z nazwą odbiorcy, dlatego skontaktuj się przez czat ze sprzedawcą aby to zdobyć(jesli potrzebne). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Potwierdź rozpoczęcie płatności portfolio.pending.step2_buyer.confirmStart.msg=Czy rozpocząłeś proces {0} płatności dla sprzedawcy ? portfolio.pending.step2_buyer.confirmStart.yes=Tak, rozpocząłem płatność @@ -2944,6 +2945,7 @@ payment.account.userName=Nazwa użytkownika payment.account.phoneNr=Numer telefonu payment.account.owner=Pełna nazwa właściciela konta payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Pełne imię (pierwsze, drugie, nazwisko) payment.account.state=Stan/Prowincja/Region payment.account.city=Miasto @@ -3204,6 +3206,14 @@ payment.payid.info=PayID jak numer telefonu, adres email czy Australijski numer payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_pt-br.properties b/core/src/main/resources/i18n/displayStrings_pt-br.properties index 0e390f04d1e..1298bcc7275 100644 --- a/core/src/main/resources/i18n/displayStrings_pt-br.properties +++ b/core/src/main/resources/i18n/displayStrings_pt-br.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Você precisa enviar o MT portfolio.pending.step2_buyer.halCashInfo.headline=Enviar código HalCash portfolio.pending.step2_buyer.halCashInfo.msg=Você precisa enviar uma mensagem de texto com o código HalCash, bem como o ID da negociação ({0}) para o vendedor BTC.\nO nº do telefone do vendedor é {1}.\n\nVocê enviou o código para o vendedor? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Alguns bancos podem verificar o nome do destinatário. Contas de pagamento rápido criadas numa versão antiga da Bisq não fornecem o nome do destinatário, então, por favor, use o chat de negociação pra obtê-lo (caso necessário). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Confirme que você iniciou o pagamento portfolio.pending.step2_buyer.confirmStart.msg=Você iniciou o pagamento {0} para o seu parceiro de negociação? portfolio.pending.step2_buyer.confirmStart.yes=Sim, iniciei o pagamento @@ -2944,6 +2945,7 @@ payment.account.userName=Nome de usuário payment.account.phoneNr=Número de telefone payment.account.owner=Nome completo do titular da conta payment.account.owner.ask=[Peça ao negociador para fornecer o nome da conta, se necessário.] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Nome completo (nome e sobrenome) payment.account.state=Estado/Província/Região payment.account.city=Cidade @@ -3204,6 +3206,14 @@ payment.payid.info=A PayID like a phone number, email address or an Australian B payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_pt.properties b/core/src/main/resources/i18n/displayStrings_pt.properties index 47575a18502..6c61e882636 100644 --- a/core/src/main/resources/i18n/displayStrings_pt.properties +++ b/core/src/main/resources/i18n/displayStrings_pt.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Você precisa enviar o MT portfolio.pending.step2_buyer.halCashInfo.headline=Enviar o código HalCash portfolio.pending.step2_buyer.halCashInfo.msg=Você precisa enviar uma mensagem de texto com o código HalCash, bem como o ID da negociação ({0}) para o vendedor BTC.\nO nº do telemóvel do vendedor é {1}.\n\nVocê enviou o código para o vendedor? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Some banks might verify the receiver's name. Faster Payments accounts created in old Bisq clients do not provide the receiver's name, so please use trade chat to obtain it (if needed). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Confirme que você iniciou o pagamento portfolio.pending.step2_buyer.confirmStart.msg=Você iniciou o pagamento de {0} para o seu parceiro de negociação? portfolio.pending.step2_buyer.confirmStart.yes=Sim, iniciei o pagamento @@ -2944,6 +2945,7 @@ payment.account.userName=User name payment.account.phoneNr=Phone number payment.account.owner=Nome completo do titular da conta payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Nome completo (primeiro, nome do meio, último) payment.account.state=Estado/Província/Região payment.account.city=Cidade @@ -3204,6 +3206,14 @@ payment.payid.info=A PayID like a phone number, email address or an Australian B payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_ru.properties b/core/src/main/resources/i18n/displayStrings_ru.properties index 7d0ac2f2a13..c100c08a849 100644 --- a/core/src/main/resources/i18n/displayStrings_ru.properties +++ b/core/src/main/resources/i18n/displayStrings_ru.properties @@ -2945,8 +2945,8 @@ payment.account.userName=User name payment.account.phoneNr=Phone number payment.account.owner=Полное имя владельца счёта payment.account.owner.ask=[Ask trader to provide account name if needed] -payment.account.fullName=Полное имя (имя, отчество, фамилия) payment.account.owner.sbp=Имя владельца счёта (Имя, отчество, первая буква фамилии) +payment.account.fullName=Полное имя (имя, отчество, фамилия) payment.account.state=Штат/Провинция/Область payment.account.city=Город payment.account.address=Адрес diff --git a/core/src/main/resources/i18n/displayStrings_th.properties b/core/src/main/resources/i18n/displayStrings_th.properties index 6ff142ec455..f64aacd6d35 100644 --- a/core/src/main/resources/i18n/displayStrings_th.properties +++ b/core/src/main/resources/i18n/displayStrings_th.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=คุณต้องส portfolio.pending.step2_buyer.halCashInfo.headline=ส่งรหัส HalCash portfolio.pending.step2_buyer.halCashInfo.msg=คุณต้องส่งข้อความที่มีรหัส HalCash พร้อมกับ IDการค้า ({0}) ไปยังผู้ขาย BTC \nเบอร์โทรศัพท์มือถือของผู้ขาย คือ {1}\n\nคุณได้ส่งรหัสให้กับผู้ขายหรือยัง? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Some banks might verify the receiver's name. Faster Payments accounts created in old Bisq clients do not provide the receiver's name, so please use trade chat to obtain it (if needed). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=ยืนยันว่าคุณได้เริ่มต้นการชำระเงินแล้ว portfolio.pending.step2_buyer.confirmStart.msg=คุณได้เริ่มต้นการ {0} การชำระเงินให้กับคู่ค้าของคุณแล้วหรือยัง portfolio.pending.step2_buyer.confirmStart.yes=ใช่ฉันได้เริ่มต้นการชำระเงินแล้ว @@ -2944,6 +2945,7 @@ payment.account.userName=User name payment.account.phoneNr=Phone number payment.account.owner=ชื่อเต็มของเจ้าของบัญชี payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=ชื่อเต็ม (ชื่อจริง, ชื่อกลาง, นามสกุล) payment.account.state=รัฐ / จังหวัด / ภูมิภาค payment.account.city=เมือง @@ -3204,6 +3206,14 @@ payment.payid.info=A PayID like a phone number, email address or an Australian B payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_vi.properties b/core/src/main/resources/i18n/displayStrings_vi.properties index be191e3c8d4..995f827049c 100644 --- a/core/src/main/resources/i18n/displayStrings_vi.properties +++ b/core/src/main/resources/i18n/displayStrings_vi.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=Bạn cần phải gửi portfolio.pending.step2_buyer.halCashInfo.headline=Gửi mã HalCash portfolio.pending.step2_buyer.halCashInfo.msg=Bạn cần nhắn tin mã HalCash và mã giao dịch ({0}) tới người bán BTC. \nSố điện thoại của người bán là {1}.\n\nBạn đã gửi mã tới người bán chưa? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=Some banks might verify the receiver's name. Faster Payments accounts created in old Bisq clients do not provide the receiver's name, so please use trade chat to obtain it (if needed). +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=Xác nhận rằng bạn đã bắt đầu thanh toán portfolio.pending.step2_buyer.confirmStart.msg=Bạn đã kích hoạt thanh toán {0} cho Đối tác giao dịch của bạn chưa? portfolio.pending.step2_buyer.confirmStart.yes=Có, tôi đã bắt đầu thanh toán @@ -2944,6 +2945,7 @@ payment.account.userName=User name payment.account.phoneNr=Phone number payment.account.owner=Họ tên chủ tài khoản payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=Họ tên (họ, tên lót, tên) payment.account.state=Bang/Tỉnh/Vùng payment.account.city=Thành phố @@ -3204,6 +3206,14 @@ payment.payid.info=A PayID like a phone number, email address or an Australian B payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_zh-hans.properties b/core/src/main/resources/i18n/displayStrings_zh-hans.properties index 16f20edb94f..f870ecf34ac 100644 --- a/core/src/main/resources/i18n/displayStrings_zh-hans.properties +++ b/core/src/main/resources/i18n/displayStrings_zh-hans.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=请通过电邮发送 MTC portfolio.pending.step2_buyer.halCashInfo.headline=请发送 HalCash 代码 portfolio.pending.step2_buyer.halCashInfo.msg=您需要向 BTC 卖家发送带有 HalCash 代码和交易 ID({0})的文本消息。\n\n卖方的手机号码是 {1} 。\n\n您是否已经将代码发送至卖家? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=有些银行可能会要求接收方的姓名。在较旧的 Bisq 客户端创建的快速支付帐户没有提供收款人的姓名,所以请使用交易聊天来获得收款人姓名(如果需要)。 +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=确定您已经付款 portfolio.pending.step2_buyer.confirmStart.msg=您是否向您的交易伙伴发起 {0} 付款? portfolio.pending.step2_buyer.confirmStart.yes=是的,我已经开始付款 @@ -2944,6 +2945,7 @@ payment.account.userName=用户昵称 payment.account.phoneNr=电话号码 payment.account.owner=账户拥有者姓名: payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=全称(名,中间名,姓) payment.account.state=州/省/地区 payment.account.city=城市 @@ -3204,6 +3206,14 @@ payment.payid.info=PayID,如电话号码、电子邮件地址或澳大利亚 payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/core/src/main/resources/i18n/displayStrings_zh-hant.properties b/core/src/main/resources/i18n/displayStrings_zh-hant.properties index bb0330561e8..7de94932e44 100644 --- a/core/src/main/resources/i18n/displayStrings_zh-hant.properties +++ b/core/src/main/resources/i18n/displayStrings_zh-hant.properties @@ -719,6 +719,7 @@ portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=請通過電郵發送 MTC portfolio.pending.step2_buyer.halCashInfo.headline=請發送 HalCash 代碼 portfolio.pending.step2_buyer.halCashInfo.msg=您需要向 BTC 賣家發送帶有 HalCash 代碼和交易 ID({0})的文本消息。\n\n賣方的手機號碼是 {1} 。\n\n您是否已經將代碼發送至賣家? portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=有些銀行可能會要求接收方的姓名。在較舊的 Bisq 客户端創建的快速支付帳户沒有提供收款人的姓名,所以請使用交易聊天來獲得收款人姓名(如果需要)。 +portfolio.pending.step2_buyer.sbp=Please pay {0} via your bank''s SBP "Pay by Telephone Number" service using the seller''s information on the next screen.\n\n portfolio.pending.step2_buyer.confirmStart.headline=確定您已經付款 portfolio.pending.step2_buyer.confirmStart.msg=您是否向您的交易夥伴發起 {0} 付款? portfolio.pending.step2_buyer.confirmStart.yes=是的,我已經開始付款 @@ -2944,6 +2945,7 @@ payment.account.userName=用户暱稱 payment.account.phoneNr=電話號碼 payment.account.owner=賬户擁有者姓名: payment.account.owner.ask=[Ask trader to provide account name if needed] +payment.account.owner.sbp=Account owner name (first, middle, and initial of last name) payment.account.fullName=全稱(名,中間名,姓) payment.account.state=州/省/地區 payment.account.city=城市 @@ -3204,6 +3206,14 @@ payment.payid.info=PayID,如電話號碼、電子郵件地址或澳大利亞 payment.amazonGiftCard.info=To pay with Amazon eGift Card, you will need to send an Amazon eGift Card to the BTC seller via your Amazon account. \n\nPlease see the wiki [HYPERLINK:https://bisq.wiki/Amazon_eGift_card] for further details and best practices. \n\nThree important notes:\n- try to send gift cards with amounts of 100 USD or smaller, as Amazon is known to flag larger gift cards as fraudulent\n- try to use creative, believable text for the gift card''s message (e.g., "Happy birthday Susan!") and use trader chat to tell your trading peer the reference text you picked so they can verify your payment\n- Amazon eGift Cards can only be redeemed on the Amazon website they were purchased on (e.g., a gift card purchased on amazon.it can only be redeemed on amazon.it) payment.mercadoPago.holderId=UserID linked to financial institution. Like phone number or email or CVU. +payment.sbp.info.account=The Faster Payments System (SBP) is an inter-bank funds transfer service in RUSSIA that allows individuals \ + to make personal payments using just a mobile phone number.\n\n\ + 1. The service is for payments and transfers between Russian bank accounts in Russian Rubles only.\n\n\ + 2. Only Russian carrier mobile numbers (+7 country code) can be registered for use with the service.\n\n\ + 3. You must create a separate Bisq account for each bank where you have an account and want to receive funds.\n\n\ + 4. SBP displays the receiver's first name, middle name, and initial letter of last name to verify that the phone number is correct. \ + Therefore, you should enter the account owner's name on the Bisq account using the same style. + # We use constants from the code so we do not use our normal naming convention # dynamic values are not recognized by IntelliJ diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java index f95a915008a..d740665bbe5 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SbpForm.java @@ -122,8 +122,8 @@ public void addFormForEditAccount() { @Override public void updateAllInputsValid() { allInputsValid.set(isAccountNameValid() - && SbpValidator.validate(SbpAccount.getMobileNumber()).isValid && inputValidator.validate(SbpAccount.getHolderName()).isValid + && SbpValidator.validate(SbpAccount.getMobileNumber()).isValid && inputValidator.validate(SbpAccount.getBankName()).isValid && SbpAccount.getTradeCurrencies().size() > 0); } From 0bc6e632ec88ad8eb97a56d3d76256a8e78957b0 Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sun, 22 Sep 2024 19:42:16 -0400 Subject: [PATCH 3/3] Add new payment method "Faster Payments System (SBP)" for Russian Ruble Discovered missing displayStrings that were not included in the previous commit, and added them. --- core/src/main/resources/i18n/displayStrings.properties | 1 - core/src/main/resources/i18n/displayStrings_cs.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_de.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_es.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_fa.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_fr.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_it.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_ja.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_pl.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_pt-br.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_pt.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_th.properties | 4 ++++ core/src/main/resources/i18n/displayStrings_vi.properties | 4 ++++ .../src/main/resources/i18n/displayStrings_zh-hans.properties | 4 ++++ .../src/main/resources/i18n/displayStrings_zh-hant.properties | 4 ++++ 15 files changed, 56 insertions(+), 1 deletion(-) diff --git a/core/src/main/resources/i18n/displayStrings.properties b/core/src/main/resources/i18n/displayStrings.properties index 96fa72e3d17..f05c4376eab 100644 --- a/core/src/main/resources/i18n/displayStrings.properties +++ b/core/src/main/resources/i18n/displayStrings.properties @@ -4436,7 +4436,6 @@ MERCADO_PAGO=MercadoPago # suppress inspection "UnusedProperty" SBP=Faster Payments System (SBP) - # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" OK_PAY=OKPay diff --git a/core/src/main/resources/i18n/displayStrings_cs.properties b/core/src/main/resources/i18n/displayStrings_cs.properties index e8567f04eda..191afae2f78 100644 --- a/core/src/main/resources/i18n/displayStrings_cs.properties +++ b/core/src/main/resources/i18n/displayStrings_cs.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Tuzemský bankovní převod BSQ_SWAP=BSQ swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Tuzemský převod BSQ_SWAP_SHORT=BSQ swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_de.properties b/core/src/main/resources/i18n/displayStrings_de.properties index 480631884de..657bce47cef 100644 --- a/core/src/main/resources/i18n/displayStrings_de.properties +++ b/core/src/main/resources/i18n/displayStrings_de.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Inlandsüberweisung BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Inlandsüberweisung BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_es.properties b/core/src/main/resources/i18n/displayStrings_es.properties index ed5cdb5cfbb..66bdfbf587b 100644 --- a/core/src/main/resources/i18n/displayStrings_es.properties +++ b/core/src/main/resources/i18n/displayStrings_es.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Transferencia bancaria doméstica BSQ_SWAP=Swap BSQ # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Transferencia doméstica BSQ_SWAP_SHORT=Swap BSQ # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_fa.properties b/core/src/main/resources/i18n/displayStrings_fa.properties index efa405f969e..ba56da18bf2 100644 --- a/core/src/main/resources/i18n/displayStrings_fa.properties +++ b/core/src/main/resources/i18n/displayStrings_fa.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_fr.properties b/core/src/main/resources/i18n/displayStrings_fr.properties index b6aad7ef088..1ff830247e9 100644 --- a/core/src/main/resources/i18n/displayStrings_fr.properties +++ b/core/src/main/resources/i18n/displayStrings_fr.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_it.properties b/core/src/main/resources/i18n/displayStrings_it.properties index 49971c46835..09b7837d8a5 100644 --- a/core/src/main/resources/i18n/displayStrings_it.properties +++ b/core/src/main/resources/i18n/displayStrings_it.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_ja.properties b/core/src/main/resources/i18n/displayStrings_ja.properties index a384af1faaf..25032159754 100644 --- a/core/src/main/resources/i18n/displayStrings_ja.properties +++ b/core/src/main/resources/i18n/displayStrings_ja.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_pl.properties b/core/src/main/resources/i18n/displayStrings_pl.properties index b274fef7cf1..c9d416b7c6b 100644 --- a/core/src/main/resources/i18n/displayStrings_pl.properties +++ b/core/src/main/resources/i18n/displayStrings_pl.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_pt-br.properties b/core/src/main/resources/i18n/displayStrings_pt-br.properties index 1298bcc7275..0886b9ba3fb 100644 --- a/core/src/main/resources/i18n/displayStrings_pt-br.properties +++ b/core/src/main/resources/i18n/displayStrings_pt-br.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Transferência Doméstica BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_pt.properties b/core/src/main/resources/i18n/displayStrings_pt.properties index 6c61e882636..a7b8b4c77d8 100644 --- a/core/src/main/resources/i18n/displayStrings_pt.properties +++ b/core/src/main/resources/i18n/displayStrings_pt.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_th.properties b/core/src/main/resources/i18n/displayStrings_th.properties index f64aacd6d35..7a5634f7c7a 100644 --- a/core/src/main/resources/i18n/displayStrings_th.properties +++ b/core/src/main/resources/i18n/displayStrings_th.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_vi.properties b/core/src/main/resources/i18n/displayStrings_vi.properties index 995f827049c..750c0bfe8da 100644 --- a/core/src/main/resources/i18n/displayStrings_vi.properties +++ b/core/src/main/resources/i18n/displayStrings_vi.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_zh-hans.properties b/core/src/main/resources/i18n/displayStrings_zh-hans.properties index f870ecf34ac..a4ea502d4e2 100644 --- a/core/src/main/resources/i18n/displayStrings_zh-hans.properties +++ b/core/src/main/resources/i18n/displayStrings_zh-hans.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" diff --git a/core/src/main/resources/i18n/displayStrings_zh-hant.properties b/core/src/main/resources/i18n/displayStrings_zh-hant.properties index 7de94932e44..f44149c392d 100644 --- a/core/src/main/resources/i18n/displayStrings_zh-hant.properties +++ b/core/src/main/resources/i18n/displayStrings_zh-hant.properties @@ -3342,6 +3342,8 @@ DOMESTIC_WIRE_TRANSFER=Domestic Wire Transfer BSQ_SWAP=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO=MercadoPago +# suppress inspection "UnusedProperty" +SBP=Faster Payments System (SBP) # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty" @@ -3440,6 +3442,8 @@ DOMESTIC_WIRE_TRANSFER_SHORT=Domestic Wire BSQ_SWAP_SHORT=BSQ Swap # suppress inspection "UnusedProperty" MERCADO_PAGO_SHORT=MercadoPago +# suppress inspection "UnusedProperty" +SBP_SHORT=SBP # Deprecated: Cannot be deleted as it would break old trade history entries # suppress inspection "UnusedProperty"