package me.pagar; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.text.Editable; import android.text.TextWatcher; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; import android.widget.Toast; import java.io.InputStream; import me.pagar.card.CardHashView; import me.pagar.interfaces.CheckoutListener; import me.pagar.model.CreditCard; public class PagarMeActivity extends AppCompatActivity { private Toolbar toolbar; private CardHashView cardHashView; private LinearLayout containerInfo; private EditTextShadow cardNumber; private EditTextShadow cardValidThru; private EditTextShadow cardCvv; private EditTextShadow cardName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pagarme); toolbar = (Toolbar) findViewById(R.id.toolbar); cardHashView = (CardHashView) findViewById(R.id.card_hash_view); containerInfo = (LinearLayout) findViewById(R.id.container_info); cardNumber = (EditTextShadow) findViewById(R.id.card_number_shadow); cardValidThru = (EditTextShadow) findViewById(R.id.valid_thru); cardCvv = (EditTextShadow) findViewById(R.id.cvv_shadow); cardName = (EditTextShadow) findViewById(R.id.card_name_shadow); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); cardNumber.addTextChangedListener(cardNumberTextWatcher); cardValidThru.addTextChangedListener(cardValidThruTextWatcher); cardCvv.addTextChangedListener(cardCvvTextWatcher); cardName.addTextChangedListener(cardNameTextWatcher); cardHashView.setOnClickListener(onCardHashViewClick); cardNumber.setOnFocusChangeListener(onFocusChangeListener); cardValidThru.setOnFocusChangeListener(onFocusChangeListener); cardCvv.setOnFocusChangeListener(onFocusChangeListener); cardName.setOnFocusChangeListener(onFocusChangeListener); configToolbar(); configCardHash(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.checkout, menu); MenuItem inboxMenuItem = menu.findItem(R.id.action_checkout); inboxMenuItem.setActionView(R.layout.checkout_button); return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean isCreated = super.onPrepareOptionsMenu(menu); new Handler().post(new Runnable() { @Override public void run() { findViewById(R.id.icon_title).setOnClickListener(onClickListener); } }); return isCreated; } private View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { cardHashView.setTilt(hasFocus ? 1 : 0); } }; private View.OnClickListener onCardHashViewClick = new View.OnClickListener() { @Override public void onClick(View v) { if(cardHashView.isHorizontalRotated()) { cardHashView.showCard(); } else { cardHashView.showBack(); } } }; private View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { onCheckoutClick(); } }; private void onCheckoutClick() { CreditCard creditCard = new CreditCard(); PagarMe.with(this).checkout(creditCard).callback(checkoutListener).execute(); } private void configToolbar() { setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if(actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); } } private void configCardHash() { cardHashView.setBottomView(containerInfo); } private CheckoutListener checkoutListener = new CheckoutListener() { @Override public void onCheckoutSuccess(InputStream inputStream) { Toast.makeText(getApplicationContext(), "SUCCESS", Toast.LENGTH_LONG).show(); } @Override public void onCheckoutFail() { Toast.makeText(getApplicationContext(), "FAIL", Toast.LENGTH_LONG).show(); } }; private TextWatcher cardNumberTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { cardHashView.getCreditCard().setCardNumber(s.toString()); } }; private TextWatcher cardValidThruTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { cardHashView.getCreditCard().setExpiryDate(s.toString()); } }; private TextWatcher cardCvvTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { cardHashView.getBackCreditCardView().setCvv(s.toString()); } }; private TextWatcher cardNameTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { cardHashView.getCreditCard().setCardName(s.toString()); } }; }