From c21f4dbc2f2f83404a3d4c52b4ef5b59b03baaaf Mon Sep 17 00:00:00 2001 From: adyen-git-manager Date: Tue, 15 Jan 2019 17:30:49 +0100 Subject: [PATCH] 2.3.1 --- README.md | 4 +- build.gradle | 4 +- .../core/internal/PaymentHandlerImpl.java | 69 ++++++----- .../internal/model/DeviceFingerprint.java | 11 +- .../core/internal/model/PaymentImpl.java | 11 +- .../adyen/checkout/core/model/Payment.java | 6 + .../OpenInvoiceDetailsActivity.java | 107 ++++++++++++++---- .../openinvoice/OpenInvoiceHandler.java | 6 +- .../src/main/res/values-da-rDK/strings.xml | 2 + .../src/main/res/values-de-rDE/strings.xml | 2 + .../src/main/res/values-es-rES/strings.xml | 2 + .../src/main/res/values-fr-rFR/strings.xml | 2 + .../src/main/res/values-it-rIT/strings.xml | 2 + .../src/main/res/values-ja-rJP/strings.xml | 2 + .../src/main/res/values-nb-rNO/strings.xml | 2 + .../src/main/res/values-nl-rNL/strings.xml | 2 + .../src/main/res/values-pl-rPL/strings.xml | 2 + .../src/main/res/values-pt-rBR/strings.xml | 2 + .../src/main/res/values-ru-rRU/strings.xml | 2 + .../src/main/res/values-sv-rSE/strings.xml | 2 + .../src/main/res/values-zh-rCN/strings.xml | 2 + .../src/main/res/values-zh-rTW/strings.xml | 2 + checkout-ui/src/main/res/values/strings.xml | 2 + .../checkout/util/PaymentMethodTypes.java | 3 + 24 files changed, 185 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 5abcfe3b5d..6e86e126d2 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ To give you as much flexibility as possible, our Android SDK can be integrated i Import the quick integration modules by adding these lines to your build.gradle file. ```groovy -final checkoutVersion = "2.3.0" +final checkoutVersion = "2.3.1" implementation "com.adyen.checkout:ui:${checkoutVersion}" implementation "com.adyen.checkout:nfc:${checkoutVersion}" // Optional; Integrates NFC card reader in card UI implementation "com.adyen.checkout:wechatpay:${checkoutVersion}" // Optional; Integrates support for WeChat Pay @@ -136,7 +136,7 @@ By default, we use the font that is declared in the theme that is used for check #### Installation Import the following modules by adding these line to your `build.gradle` file. ```groovy -final checkoutVersion = "2.3.0" +final checkoutVersion = "2.3.1" implementation "com.adyen.checkout:core:${checkoutVersion}" implementation "com.adyen.checkout:core-card:${checkoutVersion}" // Optional; Required for processing card payments. implementation "com.adyen.checkout:nfc:${checkoutVersion}" // Optional; Enables reading of card information with the device"s NFC chip. diff --git a/build.gradle b/build.gradle index 0137b59495..f17403aa02 100644 --- a/build.gradle +++ b/build.gradle @@ -28,8 +28,8 @@ ext { "com.tencent.mm.opensdk:wechat-sdk-android-without-mta:9a15154c07c05eadba8351c110647c1754316e32d8f12f55e24679891b52739c:SHA-256", ] - versionCode = 206 - versionName = "2.3.0" + versionCode = 207 + versionName = "2.3.1" testCoverageEnabled = true } diff --git a/checkout-core/src/main/java/com/adyen/checkout/core/internal/PaymentHandlerImpl.java b/checkout-core/src/main/java/com/adyen/checkout/core/internal/PaymentHandlerImpl.java index 0a32b00c31..876c2e7966 100644 --- a/checkout-core/src/main/java/com/adyen/checkout/core/internal/PaymentHandlerImpl.java +++ b/checkout-core/src/main/java/com/adyen/checkout/core/internal/PaymentHandlerImpl.java @@ -196,39 +196,7 @@ public void setErrorHandler(@NonNull Activity activity, @NonNull ErrorHandler er @Override public void initiatePayment(@NonNull PaymentMethod paymentMethod, @Nullable PaymentMethodDetails paymentMethodDetails) { PaymentSessionImpl paymentSession = mPaymentSessionEntity.paymentSession; - initiatePayment(paymentSession, (PaymentMethodImpl) paymentMethod, paymentMethodDetails); - } - - private void initiatePayment( - @NonNull PaymentSessionImpl paymentSession, - @NonNull final PaymentMethodImpl paymentMethod, - @Nullable PaymentMethodDetails paymentMethodDetails - ) { - String paymentData = paymentSession.getPaymentData(); - String paymentMethodData = paymentMethod.getPaymentMethodData(); - PaymentInitiation paymentInitiation = new PaymentInitiation.Builder(paymentData, paymentMethodData) - .setPaymentMethodDetails(paymentMethodDetails) - .build(); - - final Callable callable = CheckoutApi - .getInstance(mApplication) - .initiatePayment(paymentSession, paymentInitiation); - - mExecutorService.submit(new Runnable() { - @Override - public void run() { - handleRequestStarted(); - - try { - PaymentInitiationResponse response = callable.call(); - handlePaymentInitiationResponse(paymentMethod, response); - } catch (Exception e) { - handleException(e, "An error occurred while initiating the payment."); - } finally { - handleRequestFinished(); - } - } - }); + initiatePaymentInternal(paymentSession, (PaymentMethodImpl) paymentMethod, paymentMethodDetails); } @Override @@ -256,7 +224,7 @@ public void submitAdditionalDetails(@NonNull PaymentMethodDetails paymentMethodD } } - initiatePayment(paymentSession, paymentMethod, paymentMethodDetails); + initiatePaymentInternal(paymentSession, paymentMethod, paymentMethodDetails); } @Override @@ -277,7 +245,7 @@ public void handleRedirectResult(@NonNull final Uri redirectResult) { if (redirectFields.isSubmitPaymentMethodReturnData()) { AppResponseDetails appResponseDetails = new AppResponseDetails.Builder(redirectResult.getQuery()).build(); - initiatePayment(paymentSession, paymentMethod, appResponseDetails); + initiatePaymentInternal(paymentSession, paymentMethod, appResponseDetails); } else { try { JSONObject jsonObject = new JSONObject(); @@ -342,6 +310,37 @@ public void run() { }); } + private void initiatePaymentInternal( + @NonNull PaymentSessionImpl paymentSession, + @NonNull final PaymentMethodImpl paymentMethod, + @Nullable PaymentMethodDetails paymentMethodDetails + ) { + String paymentData = paymentSession.getPaymentData(); + String paymentMethodData = paymentMethod.getPaymentMethodData(); + PaymentInitiation paymentInitiation = new PaymentInitiation.Builder(paymentData, paymentMethodData) + .setPaymentMethodDetails(paymentMethodDetails) + .build(); + + final Callable callable = CheckoutApi + .getInstance(mApplication) + .initiatePayment(paymentSession, paymentInitiation); + + handleRequestStarted(); + mExecutorService.submit(new Runnable() { + @Override + public void run() { + try { + PaymentInitiationResponse response = callable.call(); + handlePaymentInitiationResponse(paymentMethod, response); + } catch (Exception e) { + handleException(e, "An error occurred while initiating the payment."); + } finally { + handleRequestFinished(); + } + } + }); + } + private void handleRequestStarted() { mNetworkingStateImpl.onRequestStarted(); diff --git a/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/DeviceFingerprint.java b/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/DeviceFingerprint.java index 65934cd87a..5f2cae277b 100644 --- a/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/DeviceFingerprint.java +++ b/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/DeviceFingerprint.java @@ -87,7 +87,7 @@ public JSONObject serialize() throws JSONException { deviceInfo.put("deviceModel", DEVICE_MODEL); deviceInfo.put("deviceIdentifier", mDeviceIdentifier); deviceInfo.put("integration", mIntegration); - deviceInfo.put("locale", mLocale); + deviceInfo.put("locale", getLocaleWithoutScript(mLocale)); deviceInfo.put("generationTime", mGenerationTime); return deviceInfo; @@ -124,4 +124,13 @@ public int hashCode() { result = HashUtils.MULTIPLIER * result + (mGenerationTime != null ? mGenerationTime.hashCode() : 0); return result; } + + /** + * Some locales have extra part named "Language Script" that specified by # after Region code e.g. "zh_CN_#Hans" + * Since backend doesn't support "script" part of locale, we need to remove it! + * This function parse locale and return string with `${LanguageCode}_${RegionCode}` format. + */ + private String getLocaleWithoutScript(@NonNull Locale locale) { + return String.format("%s_%s", locale.getLanguage(), locale.getCountry()); + } } diff --git a/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/PaymentImpl.java b/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/PaymentImpl.java index 8d730ff43e..2aae1bd69c 100644 --- a/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/PaymentImpl.java +++ b/checkout-core/src/main/java/com/adyen/checkout/core/internal/model/PaymentImpl.java @@ -57,6 +57,12 @@ public AmountImpl getAmount() { return mAmount; } + @NonNull + @Override + public String getCountryCode() { + return mCountryCode; + } + @Override public boolean equals(@Nullable Object o) { if (this == o) { @@ -107,11 +113,6 @@ public String toString() { return "Payment{" + "CountryCode='" + mCountryCode + '\'' + ", Amount=" + mAmount + '}'; } - @NonNull - public String getCountryCode() { - return mCountryCode; - } - @NonNull public String getReference() { return mReference; diff --git a/checkout-core/src/main/java/com/adyen/checkout/core/model/Payment.java b/checkout-core/src/main/java/com/adyen/checkout/core/model/Payment.java index b972ded02e..8ed45bcc43 100644 --- a/checkout-core/src/main/java/com/adyen/checkout/core/model/Payment.java +++ b/checkout-core/src/main/java/com/adyen/checkout/core/model/Payment.java @@ -17,4 +17,10 @@ public interface Payment extends Parcelable { */ @NonNull Amount getAmount(); + + /** + * @return The code of the country specified for this Payment. + */ + @NonNull + String getCountryCode(); } diff --git a/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceDetailsActivity.java b/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceDetailsActivity.java index 758c34a490..a77abdf937 100644 --- a/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceDetailsActivity.java +++ b/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceDetailsActivity.java @@ -14,6 +14,7 @@ import static com.adyen.checkout.core.model.OpenInvoiceDetails.KEY_PERSONAL_DETAILS; import static com.adyen.checkout.core.model.OpenInvoiceDetails.KEY_SEPARATE_DELIVERY_ADDRESS; +import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.graphics.Typeface; @@ -37,13 +38,13 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; +import android.widget.Toast; import com.adyen.checkout.core.CheckoutException; import com.adyen.checkout.core.Observer; import com.adyen.checkout.core.PaymentReference; import com.adyen.checkout.core.SearchHandler; import com.adyen.checkout.core.internal.model.InputDetailImpl; -import com.adyen.checkout.core.internal.model.PaymentImpl; import com.adyen.checkout.core.model.Address; import com.adyen.checkout.core.model.FieldSetConfiguration; import com.adyen.checkout.core.model.InputDetail; @@ -71,6 +72,10 @@ public class OpenInvoiceDetailsActivity extends CheckoutDetailsActivity implemen private static final String KLARNA_CONSENT_URL = "https://cdn.klarna.com/1.0/shared/content/legal/terms/2/de_de/consent"; private static final String KLARNA_MORE_INFO_URL = "https://cdn.klarna.com/1.0/shared/content/legal/terms/2/%s/invoice"; + private static final String AFTERPAY_NL_CONSENT_URL = "https://www.afterpay.nl/nl/algemeen/betalen-met-afterpay/betalingsvoorwaarden"; + private static final String AFTERPAY_BE_CONSENT_URL = "https://www.afterpay.be/be/footer/betalen-met-afterpay/betalingsvoorwaarden"; + private static final String AFTERPAY_US_CONSENT_URL = "https://www.afterpay.nl/en/algemeen/pay-with-afterpay/payment-conditions"; + private PaymentMethod mPaymentMethod; private SearchHandler mSearchHandler; @@ -173,6 +178,14 @@ public void onClick(View v) { }); } + private boolean isKlarna() { + return PaymentMethodTypes.KLARNA.equals(mPaymentMethod.getType()); + } + + private boolean isAfterpay() { + return PaymentMethodTypes.AFTERPAY.equals(mPaymentMethod.getType()); + } + private void setupSSnLookup() { if (mPersonalDetailsLayout.getFormVisibility() == FieldSetConfiguration.FieldVisibility.READ_ONLY) { return; @@ -221,7 +234,7 @@ public void onSsnInputFinished(@NonNull String ssnNumber) { mSsnLookupEditText.addTextChangedListener(new AsYouTypeSsnFormatter(ssnCompleteCallback)); mSsnLookupEditText.addTextChangedListener(new SimpleTextWatcher() { @Override - public void afterTextChanged(Editable s) { + public void afterTextChanged(@NonNull Editable s) { checkValidation(); } }); @@ -305,7 +318,7 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { } break; case KEY_CONSENT_CHECKBOX: - setupKlarnaConsent(); + setupConsent(); break; default: if (!detail.isOptional()) { @@ -317,42 +330,91 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { } } - private void setupKlarnaConsent() { - mConsentLayout.setVisibility(View.VISIBLE); + private void setupConsent() { + String highlighted; + String termsAndConditions; + + if (isKlarna()) { + highlighted = getString(R.string.checkout_klarna_consent); + termsAndConditions = getString(R.string.checkout_klarna_terms_and_conditions_text); + } else if (isAfterpay()) { + highlighted = getString(R.string.checkout_afterpay_conditions); + termsAndConditions = getString(R.string.checkout_afterpay_terms_and_conditions_text); + } else { + return; + } - String consent = getString(R.string.checkout_klarna_consent); - String termsAndConditions = getString(R.string.checkout_klarna_terms_and_conditions_text); final int replacePosition = termsAndConditions.indexOf("%s"); + mConsentLayout.setVisibility(View.VISIBLE); + if (replacePosition > -1) { - final int endOfSpan = replacePosition + consent.length(); - SpannableStringBuilder spannableTermsAndConditions = new SpannableStringBuilder(String.format(termsAndConditions, consent)); + final int endOfSpan = replacePosition + highlighted.length(); + SpannableStringBuilder spannableTermsAndConditions = new SpannableStringBuilder(String.format(termsAndConditions, highlighted)); spannableTermsAndConditions.setSpan(new UnderlineSpan(), replacePosition, endOfSpan, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannableTermsAndConditions.setSpan(new StyleSpan(Typeface.BOLD), replacePosition, endOfSpan, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mConsentText.setText(spannableTermsAndConditions); } else { - mConsentText.setText(String.format(termsAndConditions, consent)); + mConsentText.setText(String.format(termsAndConditions, highlighted)); + } + + if (isKlarna()) { + klarnaConsentClick(); + } else if (isAfterpay()) { + afterpayConsentClick(); } + mConsentSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + checkValidation(); + } + }); + } + + private void klarnaConsentClick() { mConsentText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(KLARNA_CONSENT_URL)); - startActivity(browserIntent); + launchBrowser(Uri.parse(KLARNA_CONSENT_URL)); } }); + } - mConsentSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + private void afterpayConsentClick() { + getPaymentHandler().getPaymentSessionObservable().observe(this, new Observer() { @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - checkValidation(); + public void onChanged(@NonNull PaymentSession paymentSession) { + + String countryCode = paymentSession.getPayment().getCountryCode().toLowerCase(Locale.ROOT); + Locale userLocale = LocaleUtil.getLocale(OpenInvoiceDetailsActivity.this); + + boolean isSameLocaleAndCountry = countryCode.toUpperCase(Locale.ROOT).equals(userLocale.getCountry().toUpperCase(Locale.ROOT)); + + final String url; + if (isSameLocaleAndCountry && "NL".equals(countryCode.toUpperCase(Locale.ROOT))) { + url = AFTERPAY_NL_CONSENT_URL; + } else if (isSameLocaleAndCountry && "BE".equals(countryCode.toUpperCase(Locale.ROOT))) { + url = AFTERPAY_BE_CONSENT_URL; + } else { + url = AFTERPAY_US_CONSENT_URL; + } + + mConsentText.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + launchBrowser(Uri.parse(url)); + } + }); } }); + + } private void setupMoreInformationButton() { //this button only applies for Klarna payment method - if (PaymentMethodTypes.KLARNA.equals(mPaymentMethod.getType())) { + if (isKlarna()) { final Button moreInformationButton = findViewById(R.id.button_more_information); moreInformationButton.setVisibility(View.VISIBLE); @@ -360,7 +422,7 @@ private void setupMoreInformationButton() { @Override public void onChanged(@NonNull PaymentSession paymentSession) { //the binding legal page is based on the country of origin - String countryCode = ((PaymentImpl) paymentSession.getPayment()).getCountryCode().toLowerCase(Locale.ROOT); + String countryCode = paymentSession.getPayment().getCountryCode().toLowerCase(Locale.ROOT); Locale userLocale = LocaleUtil.getLocale(OpenInvoiceDetailsActivity.this); //but we can show an english version if the shopper locale is not the same String klarnaCountryCode; @@ -375,8 +437,7 @@ public void onChanged(@NonNull PaymentSession paymentSession) { moreInformationButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(klarnaUrl)); - startActivity(browserIntent); + launchBrowser(Uri.parse(klarnaUrl)); } }); } @@ -384,6 +445,14 @@ public void onClick(View v) { } } + private void launchBrowser(@NonNull Uri uri) { + try { + startActivity(new Intent(Intent.ACTION_VIEW, uri)); + } catch (ActivityNotFoundException e) { + Toast.makeText(getApplicationContext(), R.string.checkout_error_redirect_failed, Toast.LENGTH_LONG).show(); + } + } + private boolean areAllDetailsValid() { boolean isValid = mPersonalDetailsLayout.isValid() && mBillingAddressDetailsLayout.isValid(); diff --git a/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceHandler.java b/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceHandler.java index 870a47c074..cfddb99c6c 100644 --- a/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceHandler.java +++ b/checkout-ui/src/main/java/com/adyen/checkout/ui/internal/openinvoice/OpenInvoiceHandler.java @@ -26,8 +26,10 @@ public class OpenInvoiceHandler implements PaymentMethodHandler { @Override public boolean supports(@NonNull Application application, @NonNull PaymentMethod paymentMethod) { //fallback to DefaultPaymentMethod for HPP redirect if there are no input details - return PaymentMethodTypes.KLARNA.equals(paymentMethod.getType()) - && paymentMethod.getInputDetails() != null; + boolean isKlarna = PaymentMethodTypes.KLARNA.equals(paymentMethod.getType()); + boolean isAfterpay = PaymentMethodTypes.AFTERPAY.equals(paymentMethod.getType()); + + return (isAfterpay || isKlarna) && paymentMethod.getInputDetails() != null; } @Override diff --git a/checkout-ui/src/main/res/values-da-rDK/strings.xml b/checkout-ui/src/main/res/values-da-rDK/strings.xml index 883ffe149b..ff1388e32b 100644 --- a/checkout-ui/src/main/res/values-da-rDK/strings.xml +++ b/checkout-ui/src/main/res/values-da-rDK/strings.xml @@ -101,6 +101,8 @@ Acceptér vilkårene og betingelserne Jeg giver mit samtykke til, at Klarna kan behandle mine data med henblik på bekræftelse af min identitet og kreditvurdering samt afregning af mit køb. Jeg kan tilbagekalde mit %s til behandling af data og til formål, hvor dette er muligt i henhold til gældende lov. Sælgers generelle vilkår og betingelser gælder. samtykke + Jeg accepterer AfterPays %s + betalingsbetingelser Mere information Obligatorisk felt. Feltet skal udfyldes. diff --git a/checkout-ui/src/main/res/values-de-rDE/strings.xml b/checkout-ui/src/main/res/values-de-rDE/strings.xml index 0286769e79..66d0c015a4 100644 --- a/checkout-ui/src/main/res/values-de-rDE/strings.xml +++ b/checkout-ui/src/main/res/values-de-rDE/strings.xml @@ -101,6 +101,8 @@ Ich stimme den allgemeinen Geschäftsbedingungen zu Mit der Übermittlung der für die Abwicklung des Rechnungskaufes und einer Identitäts- und Bonitätsprüfung erforderlichen Daten an Klarna bin ich einverstanden. Meine %s kann ich jederzeit mit Wirkung für die Zukunft widerrufen. Einwilligung + Ich bin mit den %s von AfterPay einverstanden + Zahlungsbedingungen Weitere Informationen Pflichtfeld, bitte ausfüllen. diff --git a/checkout-ui/src/main/res/values-es-rES/strings.xml b/checkout-ui/src/main/res/values-es-rES/strings.xml index 117010182e..010572fbe8 100644 --- a/checkout-ui/src/main/res/values-es-rES/strings.xml +++ b/checkout-ui/src/main/res/values-es-rES/strings.xml @@ -101,6 +101,8 @@ Aceptar los términos y condiciones Doy mi consentimiento al procesamiento de mis datos por parte de Klarna a los efectos de la evaluación de identidad y crédito y la liquidación de la compra. Puedo revocar mi %s para el procesamiento de datos y para los fines para los que esto sea posible de acuerdo con la ley. Se aplican los términos y condiciones generales del vendedor. consentimiento + Sí, acepto las %s de AfterPay + condiciones de pago Más información Campo obligatorio, por favor complételo. diff --git a/checkout-ui/src/main/res/values-fr-rFR/strings.xml b/checkout-ui/src/main/res/values-fr-rFR/strings.xml index ee65e13ab3..891231fb99 100644 --- a/checkout-ui/src/main/res/values-fr-rFR/strings.xml +++ b/checkout-ui/src/main/res/values-fr-rFR/strings.xml @@ -101,6 +101,8 @@ Accepter les conditions générales J\'accepte que Klarna traite mes données pour vérifier mon identité, connaître ma solvabilité et régler l\'achat. J\'ai le droit de retirer mon %s concernant le traitement des données aux fins admises par la législation en vigueur. Les conditions générales du marchand s\'appliquent. accord + J\'accepte les %s de AfterPay + conditions de paiement Plus d\'informations Ce champ est obligatoire, veuillez le remplir. diff --git a/checkout-ui/src/main/res/values-it-rIT/strings.xml b/checkout-ui/src/main/res/values-it-rIT/strings.xml index 4f9ca0bb13..641dc11561 100644 --- a/checkout-ui/src/main/res/values-it-rIT/strings.xml +++ b/checkout-ui/src/main/res/values-it-rIT/strings.xml @@ -101,6 +101,8 @@ Accetto i termini e le condizioni Autorizzo Klarna a elaborare i miei dati per effettuare verifiche relative a identità e affidabilità finanziaria e alla liquidazione dell\'acquisto. Sono autorizzato a revocare il mio %s per l\'elaborazione dei dati, ai sensi di quanto stabilito dalla legge. Vengono applicati i termini e le condizioni dell\'esercente. consenso + Accetto i %s di AfterPay + termini di pagamento Maggiori informazioni È necessario compilare il campo. diff --git a/checkout-ui/src/main/res/values-ja-rJP/strings.xml b/checkout-ui/src/main/res/values-ja-rJP/strings.xml index 1a07faf66d..53528e456d 100644 --- a/checkout-ui/src/main/res/values-ja-rJP/strings.xml +++ b/checkout-ui/src/main/res/values-ja-rJP/strings.xml @@ -101,6 +101,8 @@ 利用規約に同意したごとになります 私は身元確認、信用評価、購入の清算などの目的のためKlarnaが私の情報を使用する事に同意致します。法律に基づき、データ使用をするための%sを無効にする場合があります。利用規約が適用されます。 同意 + AfterPayの%sで同意 + 支払条件 詳細情報 必須フィールドです。入力してください。 diff --git a/checkout-ui/src/main/res/values-nb-rNO/strings.xml b/checkout-ui/src/main/res/values-nb-rNO/strings.xml index 778e2fdd6a..00e0c067e8 100644 --- a/checkout-ui/src/main/res/values-nb-rNO/strings.xml +++ b/checkout-ui/src/main/res/values-nb-rNO/strings.xml @@ -101,6 +101,8 @@ Godta vilkårene og betingelsene Jeg samtykker til Klarnas behandling av mine data for formålene med identitets- og kredittvurdering, samt oppgjør av kjøpet. Jeg kan oppheve mitt %s for behandling av data for de formålene det er mulig ifølge loven. Forhandlerens generelle vilkår og betingelser gjelder. samtykke + Jeg godtar AfterPays %s + betalingsbetingelser Mer informasjon Obligatorisk felt, vennligst fyll det inn. diff --git a/checkout-ui/src/main/res/values-nl-rNL/strings.xml b/checkout-ui/src/main/res/values-nl-rNL/strings.xml index 98d359897b..01b274d4d8 100644 --- a/checkout-ui/src/main/res/values-nl-rNL/strings.xml +++ b/checkout-ui/src/main/res/values-nl-rNL/strings.xml @@ -101,6 +101,8 @@ Ga akkoord met de algemene voorwaarden Ik geef Klarna toestemming om mijn gegevens te verwerken voor het vaststellen van mijn identiteit, het beoordelen van mijn kredietwaardigheid en het afwikkelen van de aankoop. Ik heb de mogelijkheid om mijn %s in te trekken voor het verwerken van mijn gegevens en voor de doeleinden waarvoor dit wettelijk is toegestaan. De algemene voorwaarden van de winkelier zijn van toepassing. toestemming + Ik ga akkoord met de %s van AfterPay + betalingsvoorwaarden Meer informatie Dit is een verplicht veld. Vul het in. diff --git a/checkout-ui/src/main/res/values-pl-rPL/strings.xml b/checkout-ui/src/main/res/values-pl-rPL/strings.xml index 4cb5ab8c3a..e83b170373 100644 --- a/checkout-ui/src/main/res/values-pl-rPL/strings.xml +++ b/checkout-ui/src/main/res/values-pl-rPL/strings.xml @@ -101,6 +101,8 @@ Zgadzam się na warunki świadczenia usług Wyrażam zgodę na przetwarzanie moich danych przez spółkę Klarna w celu identyfikacji i oceny kredytowej oraz rozliczenia zakupu. Mogę wycofać moją %s na przetwarzanie danych w celach dopuszczonych przez prawo. Obowiązują ogólne warunki Sprzedającego. zgoda + Zgadzam się z dokumentem %s AfterPay + warunki płatności Więcej informacji Pole wymagane, wypełnij. diff --git a/checkout-ui/src/main/res/values-pt-rBR/strings.xml b/checkout-ui/src/main/res/values-pt-rBR/strings.xml index 259f5db343..1e8bfe594d 100644 --- a/checkout-ui/src/main/res/values-pt-rBR/strings.xml +++ b/checkout-ui/src/main/res/values-pt-rBR/strings.xml @@ -101,6 +101,8 @@ Eu concordo com os termos e condições Dou consentimento para o processamento dos meus dados feito pela Klarna para fins de avaliação da identidade e do crédito, além da finalização da compra. Posso revogar o meu %s para o processamento dos dados e para os fins para os quais forem possíveis de acordo com a lei. Termos e condições gerais do comerciante são aplicados. consentimento + Eu concordo com as %s do AfterPay + condições de pagamento Mais informações Campo obrigatório, preencha. diff --git a/checkout-ui/src/main/res/values-ru-rRU/strings.xml b/checkout-ui/src/main/res/values-ru-rRU/strings.xml index ba236993e5..c4cdaeb799 100644 --- a/checkout-ui/src/main/res/values-ru-rRU/strings.xml +++ b/checkout-ui/src/main/res/values-ru-rRU/strings.xml @@ -101,6 +101,8 @@ Я соглашаюсь с условиями Даю согласие на обработку моих данных Klarna в целях идентификации и оценки кредитоспособности, а также расчета за покупку. Я имею право отозвать свое %s на обработку данных и в иных целях, предусмотренных законом. Применяются общие условия продавца. согласие + Я принимаю %s AfterPay + условия оплаты Дополнительная информация Обязательное поле; пожалуйста, заполните его. diff --git a/checkout-ui/src/main/res/values-sv-rSE/strings.xml b/checkout-ui/src/main/res/values-sv-rSE/strings.xml index 6f61f862e7..d2f3bebc1a 100644 --- a/checkout-ui/src/main/res/values-sv-rSE/strings.xml +++ b/checkout-ui/src/main/res/values-sv-rSE/strings.xml @@ -101,6 +101,8 @@ Samtyck till villkoren Jag samtycker till att Klarna bearbetar mina data för identifiering, kreditprövning och köpeavtal. Jag kan återkalla mitt %s för bearbetning av data och för syften där detta möjliggörs av lagen. Allmänna regler och villkor för handlaren tillämpas. samtycke + Jag godkänner AfterPays %s + betalvillkor Mer information Obligatoriskt fält, vänligen fyll i. diff --git a/checkout-ui/src/main/res/values-zh-rCN/strings.xml b/checkout-ui/src/main/res/values-zh-rCN/strings.xml index d3ef75ab4f..03892b8b0b 100644 --- a/checkout-ui/src/main/res/values-zh-rCN/strings.xml +++ b/checkout-ui/src/main/res/values-zh-rCN/strings.xml @@ -101,6 +101,8 @@ 同意条款和条件 我同意由 Klarna 处理我的数据,用于身份和信用评估以及购买结算。我可以撤销对处理数据以及依法可行用途的 %s。商户的一般条款和条件适用。 同意 + 我同意 AfterPay 的 %s + 支付条件 更多信息 必填字段,请填写。 diff --git a/checkout-ui/src/main/res/values-zh-rTW/strings.xml b/checkout-ui/src/main/res/values-zh-rTW/strings.xml index 6d6b7c5605..2c60ac147d 100644 --- a/checkout-ui/src/main/res/values-zh-rTW/strings.xml +++ b/checkout-ui/src/main/res/values-zh-rTW/strings.xml @@ -101,6 +101,8 @@ 同意條款及細則 我同意 Klarna 因身份、信用評估和購物結帳用途而處理我的資料。我可能撤銷對處理資料和法律允許處理資料用途的%s。商家的一般條款及細則適用。 同意 + 我同意 AfterPay 的%s + 付款細則 更多資訊 此為必填欄位,請務必填寫。 diff --git a/checkout-ui/src/main/res/values/strings.xml b/checkout-ui/src/main/res/values/strings.xml index 704116a762..b08daaae22 100644 --- a/checkout-ui/src/main/res/values/strings.xml +++ b/checkout-ui/src/main/res/values/strings.xml @@ -113,6 +113,8 @@ Accept Terms & Conditions I consent to the processing of my data by Klarna for the purposes of identity- and credit assessment and the settlement of the purchase. I may revoke my %s for the processing of data and for the purposes for which this is possible according to law. The general terms and conditions of the merchant apply. consent + I agree with the %s of AfterPay + payment conditions More information Required field, please fill it in. diff --git a/checkout-util/src/main/java/com/adyen/checkout/util/PaymentMethodTypes.java b/checkout-util/src/main/java/com/adyen/checkout/util/PaymentMethodTypes.java index 7fec8ccad0..ac2fbb11c5 100644 --- a/checkout-util/src/main/java/com/adyen/checkout/util/PaymentMethodTypes.java +++ b/checkout-util/src/main/java/com/adyen/checkout/util/PaymentMethodTypes.java @@ -21,6 +21,9 @@ public final class PaymentMethodTypes { @Deprecated public static final String ANDROID_PAY = "androidpay"; + @NonNull + public static final String AFTERPAY = "afterpay_default"; + @NonNull public static final String BCMC = "bcmc";