package com.braintreepayments.sample; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import android.view.MenuItem; import android.view.WindowManager; import android.widget.Toast; import com.braintreepayments.cardform.OnCardFormSubmitListener; import com.braintreepayments.cardform.utils.CardType; import com.braintreepayments.cardform.view.CardEditText; import com.braintreepayments.cardform.view.CardForm; import com.braintreepayments.cardform.view.SupportedCardTypesView; public class BaseCardFormActivity extends AppCompatActivity implements OnCardFormSubmitListener, CardEditText.OnCardTypeChangedListener { private static final CardType[] SUPPORTED_CARD_TYPES = { CardType.VISA, CardType.MASTERCARD, CardType.DISCOVER, CardType.AMEX, CardType.DINERS_CLUB, CardType.JCB, CardType.MAESTRO, CardType.UNIONPAY, CardType.HIPER, CardType.HIPERCARD }; private SupportedCardTypesView mSupportedCardTypesView; protected CardForm mCardForm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.card_form); mSupportedCardTypesView = findViewById(R.id.supported_card_types); mSupportedCardTypesView.setSupportedCardTypes(SUPPORTED_CARD_TYPES); mCardForm = findViewById(R.id.card_form); mCardForm.cardRequired(true) .maskCardNumber(true) .maskCvv(true) .expirationRequired(true) .cvvRequired(true) .postalCodeRequired(true) .mobileNumberRequired(true) .saveCardCheckBoxChecked(true) .saveCardCheckBoxVisible(true) .cardholderName(CardForm.FIELD_REQUIRED) .mobileNumberExplanation("Make sure SMS is enabled for this mobile number") .actionLabel(getString(R.string.purchase)) .setup(this); mCardForm.setOnCardFormSubmitListener(this); mCardForm.setOnCardTypeChangedListener(this); // Warning: this is for development purposes only and should never be done outside of this example app. // Failure to set FLAG_SECURE exposes your app to screenshots allowing other apps to steal card information. getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); } @Override public void onCardTypeChanged(CardType cardType) { if (cardType == CardType.EMPTY) { mSupportedCardTypesView.setSupportedCardTypes(SUPPORTED_CARD_TYPES); } else { mSupportedCardTypesView.setSelected(cardType); } } @Override public void onCardFormSubmit() { if (mCardForm.isValid()) { Toast.makeText(this, R.string.valid, Toast.LENGTH_SHORT).show(); } else { mCardForm.validate(); Toast.makeText(this, R.string.invalid, Toast.LENGTH_SHORT).show(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); if (item.getItemId() == R.id.card_io_item) { mCardForm.scanCard(this); return true; } return false; } }