payment methods part 3

This commit is contained in:
cimenmus
2018-06-14 12:35:50 +03:00
parent 71c1911a21
commit 3fb62541ec
8 changed files with 171 additions and 22 deletions

Binary file not shown.

View File

@@ -35,6 +35,7 @@ dependencies {
implementation 'com.google.android.gms:play-services-base:15.0.1'
implementation 'com.google.android.gms:play-services-location:15.0.1'
implementation 'com.google.android.gms:play-services-wallet:15.0.1'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

View File

@@ -5,10 +5,14 @@ import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import com.badoualy.stepperindicator.StepperIndicator;
import com.braintreepayments.api.dropin.utils.PaymentMethodType;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import ch.pizzapp.android.R;
import ch.pizzapp.android.api.ApiConstants;
import ch.pizzapp.android.fragment.createOrder.CreateOrderNoteFragment;
import ch.pizzapp.android.fragment.createOrder.CreateOrderResultFragment;
import ch.pizzapp.android.fragment.createOrder.CreateOrderSummaryFragment;
@@ -35,6 +39,7 @@ public class CreateOrderActivity extends BaseActivity {
private String orderNote;
private String discountAmount;
private String couponCode;
private ArrayList<PaymentMethodModel> paymentMethodList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -185,6 +190,27 @@ public class CreateOrderActivity extends BaseActivity {
this.selectedPaymentMethod = selectedPaymentMethod;
}
public void setSelectedPaymentMethod(PaymentMethodType paymentMethodType){
String paymentMethodCode = "";
switch (paymentMethodType){
case PAYPAL:
paymentMethodCode = ApiConstants.PAYMENT_METHOD_CODE_PAYPAL;
break;
case ANDROID_PAY:
paymentMethodCode = ApiConstants.PAYMENT_METHOD_CODE_ANDROID_PAY;
break;
default:
paymentMethodCode = ApiConstants.PAYMENT_METHOD_CODE_CREDIT_DEBIT_CARD;
break;
}
for(PaymentMethodModel paymentMethodModel : paymentMethodList){
if(paymentMethodModel.getCode().equalsIgnoreCase(paymentMethodCode)){
selectedPaymentMethod = paymentMethodModel;
break;
}
}
}
public String getOrderNote(){
if(orderNote == null)
orderNote = "";
@@ -218,4 +244,8 @@ public class CreateOrderActivity extends BaseActivity {
public void setCouponCode(String couponCode) {
this.couponCode = couponCode;
}
public void setPaymentMethodList(ArrayList<PaymentMethodModel> paymentMethodList) {
this.paymentMethodList = paymentMethodList;
}
}

View File

@@ -39,4 +39,5 @@ public class ApiEndPoints {
public static final String API_CHECK_CAMPAIGN_PIZZAPASS = PREFIX + "detectPizzaPassCampaign" + SUFFIX + "&token=";
public static final String API_CHECK_CAMPAIGN_CHAMPAGNE = PREFIX + "detectChampagneCampaign" + SUFFIX + "&token=";
public static final String API_CHECK_DELIVERY_TIME = PREFIX + "checkDeliveryTimeService" + SUFFIX + "&token=";
public static final String API_CREATE_PAYMENT = PREFIX + "createPayment" + SUFFIX + "&token=";
}

View File

@@ -159,4 +159,8 @@ public interface ApiInterface {
@GET(ApiEndPoints.API_CHECK_DELIVERY_TIME)
Call<ResponseObject<Boolean>> checkDeliveryTime();
@FormUrlEncoded
@POST
Call<ResponseObject<Boolean>> createPayment(@Url String url, @FieldMap HashMap<String, Object> body);
}

View File

@@ -14,16 +14,8 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.braintreepayments.api.dropin.DropInActivity;
import com.braintreepayments.api.dropin.DropInRequest;
import com.braintreepayments.api.dropin.DropInResult;
import com.braintreepayments.api.exceptions.BraintreeError;
import com.braintreepayments.api.exceptions.ErrorWithResponse;
import com.braintreepayments.api.interfaces.BraintreeCancelListener;
import com.braintreepayments.api.interfaces.BraintreeErrorListener;
import com.braintreepayments.api.interfaces.ConfigurationListener;
import com.braintreepayments.api.interfaces.PaymentMethodNonceCallback;
import com.braintreepayments.api.interfaces.PaymentMethodNonceCreatedListener;
import com.braintreepayments.api.interfaces.PaymentMethodNoncesUpdatedListener;
import com.braintreepayments.api.models.Configuration;
import com.braintreepayments.api.models.PaymentMethodNonce;
import com.google.android.gms.wallet.Cart;
import com.google.android.gms.wallet.LineItem;
import java.util.ArrayList;
import java.util.HashMap;
@@ -83,10 +75,12 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
@BindString(R.string.restaurant_out_of_order) String restaurantOutOfOrderText;
@BindString(R.string.something_went_wrong) String genericErrorText;
@BindString(R.string.unknown_payment_method) String unknownPaymentMethodText;
@BindString(R.string.payment_canceled) String paymentCanceledText;
@BindString(R.string.andorid_pay_not_found) String androidPayNotFoundText;
public static final java.lang.String FRAGMENT_NAME = "orderSummaryFragment";
private int REQUEST_CODE_CAMPAIGN_PRODUCT_LIST = 7847;
private final int REQUEST_CODE_PAYMENT = 3784;
private final int REQUEST_CODE_BRAINTREE_PAYMENT = 3784;
private CreateOrderActivity createOrderActivity;
public CreateOrderSummaryFragment() {}
@@ -115,19 +109,20 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
BaseActivity.setCurrentActivity(createOrderActivity);
getCartProducts();
}
else if (requestCode == REQUEST_CODE_PAYMENT) {
else if (requestCode == REQUEST_CODE_BRAINTREE_PAYMENT) {
if (resultCode == Activity.RESULT_OK) {
DropInResult result = data.getParcelableExtra(DropInResult.EXTRA_DROP_IN_RESULT);
Log.i("fjehfhreuf", "vjfjvjfv");
//createOrder();
createOrderActivity.setSelectedPaymentMethod(result.getPaymentMethodType());
createBraintreePayment(result);
// use the result to update your UI and send the payment method nonce to your server
} else if (resultCode == Activity.RESULT_CANCELED) {
// the user canceled
Log.i("fjehfhreuf", "vjfjvjfv");
DialogHelper.showAlertDialog(BaseActivity.currentActivity, paymentCanceledText);
} else {
// handle errors here, an exception may be available in
Exception error = (Exception) data.getSerializableExtra(DropInActivity.EXTRA_ERROR);
Log.i("fjehfhreuf", "vjfjvjfv");
DialogHelper.showAlertDialog(BaseActivity.currentActivity, error.getMessage());
}
}
}
@@ -140,7 +135,6 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
createOrderActivity.onPreviousClicked(FRAGMENT_NAME);
break;
case R.id.nextTextView:
//createOrder();
checkPizzapassCampaign();
break;
}
@@ -359,7 +353,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
}
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.CASH ||
createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TRANSFER){
createOrder();
createOrder(null);
}
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT) {
DialogHelper.hideLoadingDialog();
@@ -387,14 +381,37 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
DialogHelper.hideLoadingDialog();
DialogHelper.showFailedDialog();
/*
// dummy //
if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.UNKNOWN){
DialogHelper.hideLoadingDialog();
DialogHelper.showAlertDialog(BaseActivity.currentActivity, unknownPaymentMethodText);
}
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.CASH ||
createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TRANSFER){
createOrder(null);
}
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT) {
DialogHelper.hideLoadingDialog();
startTwintPayment();
}
else {
DialogHelper.hideLoadingDialog();
startBraintreePayment();
}
*/
}
});
}
private void createOrder(){
private void createOrder(String paymentMethodNonce){
DialogHelper.showLoadingDialog();
Call<ResponseObject<Integer>> call = ApiService.apiInterface.createOrder(
ApiEndPoints.API_CREATE_ORDER + SessionHelper.getCustomerToken().getToken(), getCreateOrderParams());
ApiEndPoints.API_CREATE_ORDER + SessionHelper.getCustomerToken().getToken(), getCreateOrderParams(paymentMethodNonce));
call.enqueue(new Callback<ResponseObject<Integer>>() {
@Override
public void onResponse(Call<ResponseObject<Integer>> call, Response<ResponseObject<Integer>> response) {
@@ -415,7 +432,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
});
}
private HashMap<String, Object> getCreateOrderParams(){
private HashMap<String, Object> getCreateOrderParams(String paymentMethodNonce){
HashMap<String, Object> params = new HashMap<>();
params.put("customer_id", SessionHelper.getUser().getId());
params.put("shipping_method_title", createOrderActivity.getSelectedShippingMethod().getTitle());
@@ -424,6 +441,9 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
params.put("payment_method_title", createOrderActivity.getSelectedPaymentMethod().getTitle());
params.put("payment_method_code", createOrderActivity.getSelectedPaymentMethod().getCode());
params.put("comment", createOrderNote());
if(paymentMethodNonce != null){
params.put("payment_method_nonce", paymentMethodNonce);
}
return params;
}
@@ -512,13 +532,74 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
break;
case ANDROID_PAY:
paymentRequest.disablePayPal();
if(getAndroidPayCart() == null){
DialogHelper.showAlertDialog(BaseActivity.currentActivity, androidPayNotFoundText);
return;
}
else {
paymentRequest.androidPayCart(getAndroidPayCart());
}
break;
}
startActivityForResult(paymentRequest.getIntent(BaseActivity.currentActivity), REQUEST_CODE_PAYMENT);
startActivityForResult(paymentRequest.getIntent(BaseActivity.currentActivity), REQUEST_CODE_BRAINTREE_PAYMENT);
}
private void startTwintPayment(){
}
private void createBraintreePayment(final DropInResult dropInResult){
DialogHelper.showLoadingDialog();
Call<ResponseObject<Boolean>> call = ApiService.apiInterface.createPayment(
ApiEndPoints.API_CREATE_PAYMENT + SessionHelper.getCustomerToken().getToken(),
getBraintreePaymentParams(dropInResult));
call.enqueue(new Callback<ResponseObject<Boolean>>() {
@Override
public void onResponse(Call<ResponseObject<Boolean>> call, final Response<ResponseObject<Boolean>> response) {
DialogHelper.hideLoadingDialog();
if(response.isSuccessful() &&
response.body().getData() != null &&
response.body().isSuccess()){
createOrder(dropInResult.getPaymentMethodNonce().getNonce());
}
else {
ApiErrorUtils.parseError(response);
/*
// dummy //
createOrder(dropInResult.getPaymentMethodNonce().getNonce());
*/
}
}
@Override
public void onFailure(Call<ResponseObject<Boolean>> call, Throwable t) {
DialogHelper.hideLoadingDialog();
DialogHelper.showFailedDialog();
}
});
}
private HashMap<String, Object> getBraintreePaymentParams(DropInResult dropInResult){
HashMap<String, Object> params = new HashMap<>();
params.put("payment_method_nonce", dropInResult.getPaymentMethodNonce().getNonce());
return params;
}
private Cart getAndroidPayCart() {
return Cart.newBuilder()
.setCurrencyCode("CHF")
.setTotalPrice(PriceHelper.removeCurrencyFromPrice(createOrderActivity.getCartInfo().getCartTotalModel().getText()))
/*
.addLineItem(LineItem.newBuilder()
.setCurrencyCode("CHF")
.setDescription("Description")
.setQuantity("1")
.setUnitPrice("1.00")
.setTotalPrice("1.00")
.build())
*/
.build();
}
}

View File

@@ -7,6 +7,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.common.api.Api;
import java.util.ArrayList;
import butterknife.BindString;
@@ -17,6 +19,7 @@ import ch.pizzapp.android.R;
import ch.pizzapp.android.activity.BaseActivity;
import ch.pizzapp.android.activity.CreateOrderActivity;
import ch.pizzapp.android.adapter.recycler.PaymentMethodsRecyclerAdapter;
import ch.pizzapp.android.api.ApiConstants;
import ch.pizzapp.android.api.ApiEndPoints;
import ch.pizzapp.android.api.ApiErrorUtils;
import ch.pizzapp.android.api.ApiService;
@@ -140,12 +143,38 @@ public class PaymentMethodFragment extends CreateOrderBaseFragment {
private void fillAndNotifyAdapter(ArrayList<PaymentMethodModel> paymentMethodModels){
PaymentMethodModel.checkNull(paymentMethodModels);
for(PaymentMethodModel paymentMethodModel : paymentMethodModels){
if(paymentMethodModel.getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.APPLE_PAY){
paymentMethodModels.remove(paymentMethodModel);
}
}
/*
// dummy //
PaymentMethodModel paypal = new PaymentMethodModel();
paypal.setCode(ApiConstants.PAYMENT_METHOD_CODE_PAYPAL);
paypal.setTitle("PAYPAL");
paypal.setSortOrder("0");
paymentMethodModels.add(paypal);
*/
/*
// dummy //
PaymentMethodModel androidPay = new PaymentMethodModel();
androidPay.setCode(ApiConstants.PAYMENT_METHOD_CODE_ANDROID_PAY);
androidPay.setTitle("Android Pay");
androidPay.setSortOrder("0");
paymentMethodModels.add(androidPay);
*/
PaymentMethodModel.sort(paymentMethodModels);
paymentMethodList.clear();
paymentMethodList.addAll(paymentMethodModels);
CreateOrderActivity createOrderActivity = (CreateOrderActivity) getActivity();
if(paymentMethodList.size() != 0){
CreateOrderActivity createOrderActivity = (CreateOrderActivity) getActivity();
if(createOrderActivity.getSelectedPaymentMethod() == null){
paymentMethodList.get(0).setSelected(true);
selectedPaymentMethod = paymentMethodList.get(0);
@@ -161,6 +190,7 @@ public class PaymentMethodFragment extends CreateOrderBaseFragment {
}
}
createOrderActivity.setPaymentMethodList(paymentMethodList);
paymentMethodsRecyclerAdapter.notifyDataSetChanged();
}

View File

@@ -173,6 +173,8 @@
<string name="order_notee">NACHRICHT</string>
<!--tr-->
<string name="unknown_payment_method">Bilinmeyen ödeme yöntemi.</string>
<string name="payment_canceled">Ödeme işlemi iptal edildi.</string>
<string name="andorid_pay_not_found">Android Pay Card not found.</string>
<!-- CreateOrderSummaryFragment-->
<!-- CreateOrderResultFragment-->