package com.citrus.prepaid;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import com.citrus.asynch.CashOutAsynch;
import com.citrus.asynch.SendMoneyAsync;
import com.citrus.card.Card;
import com.citrus.cash.LoadMoney;
import com.citrus.cash.Prepaid;
import com.citrus.cash.PrepaidPg;
import com.citrus.mobile.Callback;
import com.citrus.mobile.Config;
import com.citrus.mobile.User;
import com.citrus.netbank.Bank;
import com.citrus.netbank.BankPaymentType;
import com.citrus.payment.Bill;
import com.citrus.payment.PG;
import com.citrus.payment.UserDetails;
import com.citrus.sample.GetBill;
import com.citrus.sample.R;
import com.citrus.sample.Utils;
import com.citrus.sample.WebPage;
import com.citrus.sdk.CitrusActivity;
import com.citrus.sdk.CitrusClient;
import com.citrus.sdk.CitrusUser;
import com.citrus.sdk.Constants;
import com.citrus.sdk.Environment;
import com.citrus.sdk.PaymentParams;
import com.citrus.sdk.TransactionResponse;
import com.citrus.sdk.classes.Amount;
import com.citrus.sdk.classes.BillGeneratorPOJO;
import com.citrus.sdk.classes.CitrusException;
import com.citrus.sdk.classes.Month;
import com.citrus.sdk.classes.Year;
import com.citrus.sdk.payment.DebitCardOption;
import com.citrus.sdk.payment.PaymentType;
import com.citrus.sdk.response.CitrusError;
import com.citrus.sdk.response.CitrusLogger;
import com.citrus.sdk.response.CitrusResponse;
import com.orhanobut.logger.Logger;
import org.json.JSONException;
import org.json.JSONObject;
import static com.citrus.sdk.CitrusClient.getInstance;
public class PrepaidWallet extends Activity {
private static final String bill_url = "https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php?amount=3.0";
Button isSignedin, linkuser, setpass, forgot, signin, getbalance, card_load, card_loadWebView, token_load, bank_load, token_bank_Load, citrus_cashpay, citruscashWebView, get_prepaidToken, withdrawMoney, sendMoneyByEmail, sendMoneyByMobile, getMerchantPaymentOptions, getWallet;
Button btnlogoutUser;
Callback callback;
String prepaid_bill;
JSONObject customer;
CitrusClient citrusClient;
private final String emailID = "developercitrus@mailinator.com";
private final String mobileNo = "9769507476";
private final String password = "Citrus@123";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prepaid);
isSignedin = (Button) this.findViewById(R.id.issignedin);
linkuser = (Button) this.findViewById(R.id.linkuser);
setpass = (Button) this.findViewById(R.id.setpassword);
forgot = (Button) this.findViewById(R.id.forgot);
signin = (Button) this.findViewById(R.id.signin);
getbalance = (Button) this.findViewById(R.id.getbalance);
card_load = (Button) this.findViewById(R.id.cardload);
card_loadWebView = (Button) this.findViewById(R.id.cardloadWebView);
token_load = (Button) this.findViewById(R.id.tokenload);
bank_load = (Button) this.findViewById(R.id.bankload);
token_bank_Load = (Button) this.findViewById(R.id.tokenbankload);
citrus_cashpay = (Button) this.findViewById(R.id.citruscash);
citruscashWebView = (Button) this.findViewById(R.id.citruscashWebView);
withdrawMoney = (Button) this.findViewById(R.id.withdraw_money);
sendMoneyByEmail = (Button) this.findViewById(R.id.send_money_by_email);
sendMoneyByMobile = (Button) this.findViewById(R.id.send_money_by_mobile);
// getMerchantPaymentOptions = (Button) this.findViewById(R.id.get_merchant_payment_options);
// getWallet = (Button) this.findViewById(R.id.get_wallet);
btnlogoutUser = (Button) this.findViewById(R.id.logoutUser);
customer = new JSONObject();
citrusClient = getInstance(this);
callback = new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
showToast(success, error);
}
};
init();
initconfig();
initcustdetails();
}
private void init() {
isSignedin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
citrusClient.isUserSignedIn(new com.citrus.sdk.Callback<Boolean>() {
@Override
public void success(Boolean aBoolean) {
Logger.d("USER SIGIN IN*****" + aBoolean);
}
@Override
public void error(CitrusError error) {
Logger.d("USER SIGNIN FAIL RESPONSE ***" + error.getMessage());
}
});
}
});
linkuser.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
citrusClient.isCitrusMember(emailID, mobileNo, new com.citrus.sdk.Callback<Boolean>() {
@Override
public void success(Boolean aBoolean) {
Logger.d("isUSER LINKED ****" + String.valueOf(aBoolean));
}
@Override
public void error(CitrusError error) {
}
});
}
});
setpass.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
citrusClient.signUp(emailID, mobileNo, password, new com.citrus.sdk.Callback<CitrusResponse>() {
@Override
public void success(CitrusResponse citrusResponse) {
Logger.d("SignUp Response ****" + citrusResponse.getMessage());
}
@Override
public void error(CitrusError error) {
Logger.d("SignUp Fail Response ****" + error.getMessage());
}
});
}
});
forgot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
citrusClient.resetPassword(emailID, new com.citrus.sdk.Callback<CitrusResponse>() {
@Override
public void success(CitrusResponse citrusResponse) {
Logger.d("Reset Password Response ****" + citrusResponse.getMessage());
}
@Override
public void error(CitrusError error) {
Logger.d("Reset Password Fail Response ****" + error.getMessage());
}
});
}
});
signin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/* new SignIn(PrepaidWallet.this, callback)
.execute(new String[]{emailID, password});*/
citrusClient.signIn(emailID, password, new com.citrus.sdk.Callback<CitrusResponse>() {
@Override
public void success(CitrusResponse citrusResponse) {
Logger.d("SIGNIN SUCCESSFUL *** " + citrusResponse.getMessage());
}
@Override
public void error(CitrusError error) {
Logger.d("SIGNIN Fail Response *** " + error.getMessage());
}
});
}
});
getbalance.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
citrusClient.getBalance(new com.citrus.sdk.Callback<Amount>() {
@Override
public void success(Amount amount) {
Logger.d("Get Balance Success Response **" + amount.toString());
}
@Override
public void error(CitrusError error) {
Logger.d("Get Balance Faile Response **" + error.getMessage());
}
});
}
});
card_load.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Card card = new Card("4111111111111111", "04", "21", "778", "Bruce Banner", "debit");
LoadMoney load = new LoadMoney("5", "https://salty-plateau-1529.herokuapp.com/redirectUrlLoadCash.php");
UserDetails userDetails = new UserDetails(customer);
PG paymentgateway = new PG(card, load, userDetails);
paymentgateway.load(PrepaidWallet.this, new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
processresponse(success, error);
}
});
}
});
card_loadWebView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CitrusUser citrusUser = new CitrusUser("mangesh.kadam@citruspay.com", "8692862420");
Amount amount = new Amount("5");
PaymentType paymentType = null;
try {
paymentType = new PaymentType.LoadMoney(amount, "https://salty-plateau-1529.herokuapp.com/redirectUrlLoadCash.php");
} catch (CitrusException e) {
e.printStackTrace();
Utils.showToast(PrepaidWallet.this, e.getMessage());
}
DebitCardOption debitCardOption = new DebitCardOption("My Debit Card", "4111111111111111", "123", Month.getMonth("05"), Year.getYear("17"));
PaymentParams paymentParams = PaymentParams.builder(amount, paymentType, debitCardOption)
.environment(PaymentParams.Environment.SANDBOX)
.user(citrusUser)
.build();
startCitrusActivity(paymentParams);
}
});
token_load.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Card card = new Card("94a4def03fdac35749bfd2746e5cd6f9", "808");
LoadMoney load = new LoadMoney("5", "https://salty-plateau-1529.herokuapp.com/redirectUrlLoadCash.php");
UserDetails userDetails = new UserDetails(customer);
PG paymentgateway = new PG(card, load, userDetails);
paymentgateway.load(PrepaidWallet.this, new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
processresponse(success, error);
}
});
}
});
bank_load.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bank netbank = new Bank("CID002");
LoadMoney load = new LoadMoney("5", "https://salty-plateau-1529.herokuapp.com/redirectUrlLoadCash.php");
UserDetails userDetails = new UserDetails(customer);
PG paymentgateway = new PG(netbank, load, userDetails);
paymentgateway.load(PrepaidWallet.this, new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
processresponse(success, error);
}
});
}
});
token_bank_Load.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bank netbank = new Bank("b66352b2d465699d6fa7cfb520ba27b5", BankPaymentType.TOKEN);
LoadMoney load = new LoadMoney("1", "https://salty-plateau-1529.herokuapp.com/redirectUrlLoadCash.php");
UserDetails userDetails = new UserDetails(customer);
PG paymentgateway = new PG(netbank, load, userDetails);
paymentgateway.load(PrepaidWallet.this, new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
processresponse(success, error);
}
});
}
});
citrus_cashpay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new GetBill(bill_url, new Callback() {
@Override
public void onTaskexecuted(String bill, String error) {
if (!TextUtils.isEmpty(bill))
walletpay(bill);
showToast(bill, error);
}
})
.execute();
}
});
citruscashWebView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CitrusUser citrusUser = new CitrusUser(emailID, "");
Amount amount = new Amount("5");
PaymentType paymentType = null;
try {
paymentType = new PaymentType.CitrusCash(amount, "https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php?" + "amount=" + amount.getValue());
} catch (CitrusException e) {
e.printStackTrace();
Utils.showToast(PrepaidWallet.this, e.getMessage());
}
PaymentParams paymentParams = PaymentParams.builder(amount, paymentType, null)
.environment(PaymentParams.Environment.SANDBOX)
.user(citrusUser)
.build();
startCitrusActivity(paymentParams);
}
});
withdrawMoney.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new CashOutAsynch(PrepaidWallet.this, 10, "Salil Godbole", "042401523201", "ICIC0000424", callback).execute();
}
});
sendMoneyByEmail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Amount amount = new Amount("37");
CitrusUser user = new CitrusUser("salil.godbole@citruspay.com", "");
new SendMoneyAsync(PrepaidWallet.this, amount, user, "My contribution", callback).execute();
}
}
);
sendMoneyByMobile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Amount amount = new Amount("30");
CitrusUser user = new CitrusUser("", "9970950374");
new SendMoneyAsync(PrepaidWallet.this, amount, user, "My contribution", callback).execute();
}
}
);
btnlogoutUser.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (User.logoutUser(PrepaidWallet.this))
Toast.makeText(getApplicationContext(), Constants.LOGOUT_SUCCESS_MESSAGE, Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(), Constants.LOGOUT_FAIL_MESSAGE, Toast.LENGTH_LONG).show();
}
});
}
private void processresponse(String response, String error) {
if (!TextUtils.isEmpty(response)) {
try {
JSONObject redirect = new JSONObject(response);
Intent i = new Intent(PrepaidWallet.this, WebPage.class);
if (!TextUtils.isEmpty(redirect.getString("redirectUrl"))) {
i.putExtra("url", redirect.getString("redirectUrl"));
startActivity(i);
} else {
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Toast.makeText(getApplicationContext(), error, Toast.LENGTH_LONG).show();
}
}
private void initconfig() {
Config.setEnv("sandbox"); //replace it with "production" when you are ready
/*Replace following details with oauth details provided to you*/
Config.setupSignupId("test-signup");
Config.setupSignupSecret("c78ec84e389814a05d3ae46546d16d2e");
Config.setSigninId("test-signin");
Config.setSigninSecret("52f7e15efd4208cf5345dd554443fd99");
CitrusLogger.enableLogs();
citrusClient.init("test-signup", "c78ec84e389814a05d3ae46546d16d2e", "test-signin", "52f7e15efd4208cf5345dd554443fd99", "prepaid", Environment.SANDBOX);
}
private void initcustdetails() {
/*All the below mentioned parameters are mandatory - missing anyone of them may create errors
* Do not change the key in the json below - only change the values*/
try {
customer.put("firstName", "Tester");
customer.put("lastName", "Citrus");
customer.put("email", emailID);
customer.put("mobileNo", mobileNo);
customer.put("street1", "streetone");
customer.put("street2", "streettwo");
customer.put("city", "Mumbai");
customer.put("state", "Maharashtra");
customer.put("country", "India");
customer.put("zip", "400052");
} catch (JSONException e) {
e.printStackTrace();
}
}
private void walletpay(String bill_string) {
Bill bill = new Bill(bill_string);
Prepaid prepaid = new Prepaid(emailID);
UserDetails userDetails = new UserDetails(customer);
PG paymentgateway = new PG(prepaid, bill, userDetails);
paymentgateway.charge(new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
prepaidPayment(success, error);
}
});
}
private void walletpay(BillGeneratorPOJO billGeneratorPOJO) {
Bill bill = new Bill(billGeneratorPOJO);
Prepaid prepaid = new Prepaid(emailID);
UserDetails userDetails = new UserDetails(customer);
PG paymentgateway = new PG(prepaid, bill, userDetails);
paymentgateway.charge(new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
prepaidPayment(success, error);
}
});
}
private void prepaidPayment(String response, String error) {
if (TextUtils.isEmpty(response.toString())) {
return;
}
Callback prepaidCb = new Callback() {
@Override
public void onTaskexecuted(String success, String error) {
showToast(success, error);
}
};
PrepaidPg paymentPg = new PrepaidPg(PrepaidWallet.this);
paymentPg.pay(prepaidCb, response, error);
}
private void showToast(String message, String error) {
if (!TextUtils.isEmpty(message))
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
if (!TextUtils.isEmpty(error))
Toast.makeText(getApplicationContext(), error, Toast.LENGTH_LONG).show();
}
private void startCitrusActivity(PaymentParams paymentParams) {
Intent intent = new Intent(PrepaidWallet.this, CitrusActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_PAYMENT_PARAMS, paymentParams);
startActivityForResult(intent, Constants.REQUEST_CODE_PAYMENT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
TransactionResponse transactionResponse = data.getParcelableExtra(Constants.INTENT_EXTRA_TRANSACTION_RESPONSE);
if (transactionResponse != null) {
Toast.makeText(getApplicationContext(), transactionResponse.getMessage(), Toast.LENGTH_LONG).show();
}
}
/* citrus_cashpay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new GetJSONBill("https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php", "3.0", new retrofit.Callback<BillGeneratorPOJO>() {
@Override
public void success(BillGeneratorPOJO billGeneratorPOJO, Response response) {
Log.d("BILLPOJO**", billGeneratorPOJO.getAmount().getValue());
walletpay(billGeneratorPOJO);
}
@Override
public void failure(RetrofitError error) {
}
}).getJSONBill();
}
});*/
/*public void onEvent(CookieEvents cookieEvents) {
// Logger.d("COOKIE IN CITRUS CLIENT ****" + cookieEvents.getCookie());
// prepaidCookie = cookieEvents.getCookie();
}*/
}