package com.citrus.sample;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import com.citrus.card.Card;
import com.citrus.mobile.CType;
import com.citrus.sdk.Callback;
import com.citrus.sdk.CitrusClient;
import com.citrus.sdk.CitrusUser;
import com.citrus.sdk.TransactionResponse;
import com.citrus.sdk.classes.Amount;
import com.citrus.sdk.classes.CitrusException;
import com.citrus.sdk.classes.Month;
import com.citrus.sdk.classes.Year;
import com.citrus.sdk.payment.CardOption;
import com.citrus.sdk.payment.CreditCardOption;
import com.citrus.sdk.payment.DebitCardOption;
import com.citrus.sdk.payment.PaymentType;
import com.citrus.sdk.response.CitrusError;
import com.citrus.widgets.CardNumberEditText;
import com.citrus.widgets.ExpiryDate;
public class CreditDebitCardFragment extends Fragment implements View.OnClickListener {
private CardNumberEditText editCardNumber = null;
private ExpiryDate editExpiryDate = null;
private EditText editCVV = null, editCardHolderName = null, cardHolderNickName = null, cardHolderNumber = null;
private TextView submitButton = null;
private Card card;
private CType cType = CType.DEBIT;
private Utils.PaymentType paymentType = null;
private Amount amount = null;
public CreditDebitCardFragment() {
}
public static CreditDebitCardFragment newInstance(Utils.PaymentType paymentType, CType cType, Amount amount) {
CreditDebitCardFragment fragment = new CreditDebitCardFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("paymentType", paymentType);
bundle.putSerializable("cType", cType);
bundle.putParcelable("amount", amount);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
Bundle bundle = getArguments();
paymentType = (Utils.PaymentType) bundle.getSerializable("paymentType");
cType = (CType) bundle.getSerializable("cType");
amount = bundle.getParcelable("amount");
}
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View returnView = inflater.inflate(R.layout.fragment_credit_debit_card, container,
false);
editCardNumber = (CardNumberEditText) returnView
.findViewById(R.id.cardHolderNumber);
editExpiryDate = (ExpiryDate) returnView.findViewById(R.id.cardExpiry);
editCardHolderName = (EditText) returnView.findViewById(R.id.cardHolderName);
cardHolderNickName = (EditText) returnView.findViewById(R.id.cardHolderNickName);
editCVV = (EditText) returnView.findViewById(R.id.cardCvv);
submitButton = (TextView) returnView.findViewById(R.id.load);
submitButton.setOnClickListener(this);
switch (paymentType) {
case LOAD_MONEY:
submitButton.setText("Load");
break;
case CITRUS_CASH:
case PG_PAYMENT:
submitButton.setText("Pay");
break;
}
return returnView;
}
@Override
public void onClick(View v) {
String cardHolderName = editCardHolderName.getText().toString();
String cardNumber = editCardNumber.getText().toString();
String cardCVV = editCVV.getText().toString();
Month month = editExpiryDate.getMonth();
Year year = editExpiryDate.getYear();
CardOption cardOption;
if (cType == CType.DEBIT) {
cardOption = new DebitCardOption(cardHolderName, cardNumber, cardCVV, month, year);
} else {
cardOption = new CreditCardOption(cardHolderName, cardNumber, cardCVV, month, year);
}
PaymentType paymentType;
CitrusClient client = CitrusClient.getInstance(getActivity());
Callback<TransactionResponse> callback = new Callback<TransactionResponse>() {
@Override
public void success(TransactionResponse transactionResponse) {
((UIActivity) getActivity()).onPaymentComplete(transactionResponse);
}
@Override
public void error(CitrusError error) {
Utils.showToast(getActivity(), error.getMessage());
}
};
try {
if (this.paymentType == Utils.PaymentType.LOAD_MONEY) {
paymentType = new PaymentType.LoadMoney(amount, Constants.RETURN_URL_LOAD_MONEY, cardOption);
client.loadMoney((PaymentType.LoadMoney) paymentType, callback);
} else if (this.paymentType == Utils.PaymentType.PG_PAYMENT) {
paymentType = new PaymentType.PGPayment(amount, Constants.BILL_URL, cardOption, new CitrusUser(client.getUserEmailId(), client.getUserMobileNumber()));
client.pgPayment((PaymentType.PGPayment) paymentType, callback);
}
} catch (CitrusException e) {
e.printStackTrace();
Utils.showToast(getActivity(), e.getMessage());
}
}
}