diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml deleted file mode 100644 index cf9fdec..0000000 --- a/.idea/assetWizardSettings.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 3f49bfb..a61cfc6 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index 41dabbe..a155d80 100644 Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..a1757ae --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index f43d428..2996d53 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -8,12 +8,6 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 51fa3e5..37a7509 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,40 +1,5 @@ - - - - diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index cdac042..801d472 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -91,8 +91,8 @@ dependencies { implementation 'com.wdullaer:materialdatetimepicker:3.6.3' implementation 'io.nlopez.smartlocation:library:3.3.3' implementation 'q.rorbin:badgeview:1.1.0' - implementation 'com.braintreepayments.api:braintree:2.13.1' - implementation('com.braintreepayments.api:drop-in:3.1.0') { + implementation 'com.braintreepayments.api:braintree:2.22.0' + implementation('com.braintreepayments.api:drop-in:3.7.1') { exclude group: 'com.braintreepayments.api', module: 'braintree' } implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') { diff --git a/app/src/main/java/ch/pizzapp/android/api/ApiEndPoints.java b/app/src/main/java/ch/pizzapp/android/api/ApiEndPoints.java index 48118d4..3295b26 100644 --- a/app/src/main/java/ch/pizzapp/android/api/ApiEndPoints.java +++ b/app/src/main/java/ch/pizzapp/android/api/ApiEndPoints.java @@ -49,5 +49,6 @@ public class ApiEndPoints { public static final String API_CREATE_PAYMENT = PREFIX + "checkBrainTreePayment" + SUFFIX + "&token="; public static final String API_REPEAT_ORDER = PREFIX + "reOrder" + SUFFIX + "&token="; public static final String API_CHECK_ORDER_PRICE = PREFIX + "checkOrderPrice" + SUFFIX + "&token="; + public static final String API_CREATE_PAYMENT_TOKEN = PREFIX + "createPaymentToken" + SUFFIX + "&token="; } diff --git a/app/src/main/java/ch/pizzapp/android/api/ApiInterface.java b/app/src/main/java/ch/pizzapp/android/api/ApiInterface.java index eb43ed3..8e00c5b 100644 --- a/app/src/main/java/ch/pizzapp/android/api/ApiInterface.java +++ b/app/src/main/java/ch/pizzapp/android/api/ApiInterface.java @@ -11,6 +11,7 @@ import ch.pizzapp.android.model.CheckCouponModel; import ch.pizzapp.android.model.CountryModel; import ch.pizzapp.android.model.DeleteAddressResponseModel; import ch.pizzapp.android.model.PaymentMethodsResponseModel; +import ch.pizzapp.android.model.PaymentTokenModel; import ch.pizzapp.android.model.RemoveProductFromCartResponseModel; import ch.pizzapp.android.model.ShippingMethodModel; import ch.pizzapp.android.model.StoreInfoModel; @@ -229,6 +230,8 @@ public interface ApiInterface { Call checkOrderPrice(@Url String url, @FieldMap HashMap body); + @GET + Call> createPaymentToken(@Url String url); diff --git a/app/src/main/java/ch/pizzapp/android/api/ApiService.java b/app/src/main/java/ch/pizzapp/android/api/ApiService.java index 7179396..ff90680 100644 --- a/app/src/main/java/ch/pizzapp/android/api/ApiService.java +++ b/app/src/main/java/ch/pizzapp/android/api/ApiService.java @@ -50,7 +50,7 @@ public class ApiService { HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); // set your desired log level logging.setLevel(HttpLoggingInterceptor.Level.BODY); - //builder.addInterceptor(logging); + builder.addInterceptor(logging); OkHttpClient client = builder.build(); diff --git a/app/src/main/java/ch/pizzapp/android/fragment/createOrder/CreateOrderSummaryFragment.java b/app/src/main/java/ch/pizzapp/android/fragment/createOrder/CreateOrderSummaryFragment.java index 2673609..ad201e4 100644 --- a/app/src/main/java/ch/pizzapp/android/fragment/createOrder/CreateOrderSummaryFragment.java +++ b/app/src/main/java/ch/pizzapp/android/fragment/createOrder/CreateOrderSummaryFragment.java @@ -44,6 +44,7 @@ import ch.pizzapp.android.helper.PriceHelper; import ch.pizzapp.android.helper.SessionHelper; import ch.pizzapp.android.helper.SharedPrefsHelper; import ch.pizzapp.android.model.PaymentMethodModel; +import ch.pizzapp.android.model.PaymentTokenModel; import ch.pizzapp.android.model.StoreShiftModel; import ch.pizzapp.android.model.StoreWorkDayModel; import ch.pizzapp.android.model.cart.CartInfoModel; @@ -93,6 +94,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { private OrderPriceRecyclerAdapter orderPriceRecyclerAdapter; private ProductOnOrderSummaryRecyclerAdapter productOnOrderSummaryRecyclerAdapter; private StoreShiftModel storeShiftModel; + private PaymentTokenModel braintreePaymentTokenModel; public CreateOrderSummaryFragment() {} @@ -121,7 +123,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { if (resultCode == Activity.RESULT_OK) { DropInResult result = data.getParcelableExtra(DropInResult.EXTRA_DROP_IN_RESULT); createOrderActivity.setSelectedPaymentMethod(result.getPaymentMethodType()); - createBraintreePayment(result); + //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 @@ -689,7 +691,6 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { call.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - DialogHelper.hideLoadingDialog(); if(response.isSuccessful() && response.body().getData() != null && response.body().isSuccess()){ @@ -700,9 +701,12 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { cartTotalList.clear(); cartTotalList.addAll(cartInfoModel.getTotalsList()); orderPriceRecyclerAdapter.notifyDataSetChanged(); + createPaymentToken(); } - else + else { + DialogHelper.hideLoadingDialog(); ApiErrorUtils.parseError(response); + } } @Override @@ -713,19 +717,55 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { }); } + private void createPaymentToken(){ + + Call> call = ApiService.apiInterface.createPaymentToken( + "/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_PAYMENT_TOKEN + SessionHelper.getCustomerToken().getToken()); + + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + DialogHelper.hideLoadingDialog(); + if(response.isSuccessful() && + response.body().getData() != null && + response.body().isSuccess()){ + braintreePaymentTokenModel = response.body().getData(); + Log.i("fuhrfuhruhfr", "fhurhfurfhurfh"); + } + else { + ApiErrorUtils.parseError(response); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + DialogHelper.hideLoadingDialog(); + DialogHelper.showFailedDialog(); + } + }); + } + private void startBraintreePayment(){ // CVV kodu default olarak gozukmuyor. // Gozukmesi için braintree'ye login ol // Go to Settings --> Processing --> CVV --> Click on Edit --> Check option 'CVV not provided(l)', Enable option 'for any transaction' + if(braintreePaymentTokenModel == null ||braintreePaymentTokenModel.getToken().isEmpty()){ + DialogHelper.showAlertDialog(BaseActivity.currentActivity, getString(R.string.something_went_wrong)); + return; + } + String amountStringForBraintree = PriceHelper.removeCurrencyFromPrice(cartTotalList.get(cartTotalList.size() - 1).getText()); DropInRequest paymentRequest = new DropInRequest() //.tokenizationKey(ApiConstants.BRAINTREE_TOKENIZATION_KEY_SANDBOX) - .tokenizationKey(ApiConstants.BRAINTREE_TOKENIZATION_KEY_PRODUCTION) + //.tokenizationKey(ApiConstants.BRAINTREE_TOKENIZATION_KEY_PRODUCTION) //.clientToken("eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiI3NzY2ZmNmNTQ3MDc1YWMzMGZiNmIxMzU3MTI1ZTJmODc5YjM4MmNkOTcwYmYwZmYyNmQzMWJmNGRiYjI1MjQzfGNyZWF0ZWRfYXQ9MjAxOC0wNi0xM1QxODo1Mzo0Mi4wODA4MDc5MDQrMDAwMFx1MDAyNm1lcmNoYW50X2lkPTM0OHBrOWNnZjNiZ3l3MmJcdTAwMjZwdWJsaWNfa2V5PTJuMjQ3ZHY4OWJxOXZtcHIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzM0OHBrOWNnZjNiZ3l3MmIvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vb3JpZ2luLWFuYWx5dGljcy1zYW5kLnNhbmRib3guYnJhaW50cmVlLWFwaS5jb20vMzQ4cGs5Y2dmM2JneXcyYiJ9LCJ0aHJlZURTZWN1cmVFbmFibGVkIjp0cnVlLCJwYXlwYWxFbmFibGVkIjp0cnVlLCJwYXlwYWwiOnsiZGlzcGxheU5hbWUiOiJBY21lIFdpZGdldHMsIEx0ZC4gKFNhbmRib3gpIiwiY2xpZW50SWQiOm51bGwsInByaXZhY3lVcmwiOiJodHRwOi8vZXhhbXBsZS5jb20vcHAiLCJ1c2VyQWdyZWVtZW50VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3RvcyIsImJhc2VVcmwiOiJodHRwczovL2Fzc2V0cy5icmFpbnRyZWVnYXRld2F5LmNvbSIsImFzc2V0c1VybCI6Imh0dHBzOi8vY2hlY2tvdXQucGF5cGFsLmNvbSIsImRpcmVjdEJhc2VVcmwiOm51bGwsImFsbG93SHR0cCI6dHJ1ZSwiZW52aXJvbm1lbnROb05ldHdvcmsiOnRydWUsImVudmlyb25tZW50Ijoib2ZmbGluZSIsInVudmV0dGVkTWVyY2hhbnQiOmZhbHNlLCJicmFpbnRyZWVDbGllbnRJZCI6Im1hc3RlcmNsaWVudDMiLCJiaWxsaW5nQWdyZWVtZW50c0VuYWJsZWQiOnRydWUsIm1lcmNoYW50QWNjb3VudElkIjoiYWNtZXdpZGdldHNsdGRzYW5kYm94IiwiY3VycmVuY3lJc29Db2RlIjoiVVNEIn0sIm1lcmNoYW50SWQiOiIzNDhwazljZ2YzYmd5dzJiIiwidmVubW8iOiJvZmYifQ==") - //.amount("CHF1.0") - //.requestThreeDSecureVerification(true) + .clientToken(braintreePaymentTokenModel.getToken()) + .requestThreeDSecureVerification(true) + .amount(amountStringForBraintree) .disableAndroidPay() + //.amount("1.00") + .requestThreeDSecureVerification(true) .disableVenmo(); diff --git a/app/src/main/java/ch/pizzapp/android/model/PaymentTokenModel.java b/app/src/main/java/ch/pizzapp/android/model/PaymentTokenModel.java new file mode 100644 index 0000000..ee62613 --- /dev/null +++ b/app/src/main/java/ch/pizzapp/android/model/PaymentTokenModel.java @@ -0,0 +1,14 @@ +package ch.pizzapp.android.model; + +public class PaymentTokenModel { + + private String token; + + public String getToken() { + return token != null ? token : ""; + } + + public void setToken(String token) { + this.token = token; + } +} diff --git a/build.gradle b/build.gradle index 5b5bd4f..70acfcf 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { maven { url 'https://maven.fabric.io/public' } } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' + classpath 'com.android.tools.build:gradle:3.3.1' classpath 'io.fabric.tools:gradle:1.+' // NOTE: Do not place your application dependencies here; they belong