From b6118c263ba4efb6b2c67376a01dd022a23bdae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?mustafa=20ic=CC=A7men?= Date: Sun, 22 Dec 2019 16:08:56 +0300 Subject: [PATCH] processing json response of postfinance canceled --- .../ch/pizzaleu/android/api/ApiConstants.java | 4 +- .../CreateOrderSummaryFragment.java | 89 ++++++++++--------- ....java => PostfinancePaymentDataModel.java} | 2 +- .../PostfinancePaymentResponseModel.java | 6 +- 4 files changed, 55 insertions(+), 46 deletions(-) rename app/src/main/java/ch/pizzaleu/android/model/{PostfinancePaymentSuccessModel.java => PostfinancePaymentDataModel.java} (95%) diff --git a/app/src/main/java/ch/pizzaleu/android/api/ApiConstants.java b/app/src/main/java/ch/pizzaleu/android/api/ApiConstants.java index 6f595c2..09a33ed 100644 --- a/app/src/main/java/ch/pizzaleu/android/api/ApiConstants.java +++ b/app/src/main/java/ch/pizzaleu/android/api/ApiConstants.java @@ -44,8 +44,8 @@ public class ApiConstants { public static final String ONESIGNAL_NOTIFICATION_TAG_VALUE = "true"; public static final String PAYMENT_WEBVIEW_URL_POSTFINANCE_TWINT = "https://pizza-leu.ch/pizzaleu/index.php?route=mobile/service/postFinancePayment&order_id="; - public static final String PAYMENT_WEBVIEW_SUCCESS_POSTFINANCE_TWINT = "postFinancePaymentIsSuccess"; - public static final String PAYMENT_WEBVIEW_FAIL_POSTFINANCE_TWINT = "postFinancePaymentIsFailed"; + public static final String PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_SUCCESS = "postFinancePaymentIsSuccess"; + public static final String PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_FAIL = "postFinancePaymentIsFailed"; public static final String PAYMENT_WEBVIEW_MAIN_PAGE_HTTP = "http://www.pizza-leu.ch/"; public static final String PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS = "https://www.pizza-leu.ch/"; diff --git a/app/src/main/java/ch/pizzaleu/android/fragment/createOrder/CreateOrderSummaryFragment.java b/app/src/main/java/ch/pizzaleu/android/fragment/createOrder/CreateOrderSummaryFragment.java index 1227efd..0ecb348 100644 --- a/app/src/main/java/ch/pizzaleu/android/fragment/createOrder/CreateOrderSummaryFragment.java +++ b/app/src/main/java/ch/pizzaleu/android/fragment/createOrder/CreateOrderSummaryFragment.java @@ -1,11 +1,7 @@ package ch.pizzaleu.android.fragment.createOrder; -import android.annotation.SuppressLint; -import android.annotation.TargetApi; import android.app.Activity; -import android.content.Context; import android.content.Intent; -import android.net.http.SslError; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; @@ -16,7 +12,6 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.webkit.JavascriptInterface; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; @@ -27,16 +22,11 @@ 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.crashlytics.android.Crashlytics; import com.google.android.gms.wallet.Cart; -import com.google.gson.Gson; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import com.wdullaer.materialdatetimepicker.time.TimePickerDialog; import com.wdullaer.materialdatetimepicker.time.Timepoint; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; - import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -64,7 +54,6 @@ import ch.pizzaleu.android.helper.SessionHelper; import ch.pizzaleu.android.helper.SharedPrefsHelper; import ch.pizzaleu.android.model.PaymentMethodModel; import ch.pizzaleu.android.model.PaymentTokenModel; -import ch.pizzaleu.android.model.PostfinancePaymentResponseModel; import ch.pizzaleu.android.model.StoreShiftModel; import ch.pizzaleu.android.model.cart.CartInfoModel; import ch.pizzaleu.android.model.cart.CartProductModel; @@ -1121,48 +1110,78 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { @RequiresApi(Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { - if(request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_SUCCESS_POSTFINANCE_TWINT) || - request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_FAIL_POSTFINANCE_TWINT)){ + /* + // Canceled because response json from PostFinance fr apple Webview is not valid + // payment success or fail. response json will handle at "handlePaymentResponse" method of "PaymentJavaScriptInterface" class below + if(request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_SUCCESS) || + request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_FAIL)){ createOrderActivity.setPaymentWebViewVisibility(false); } - else if(request.getUrl().toString().equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || + */ + + // payment success + if(request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_SUCCESS) || + request.getUrl().toString().equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || request.getUrl().toString().equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){ createOrderActivity.setPaymentWebViewVisibility(false); createOrderActivity.onNextClicked(FRAGMENT_NAME); + return true; } - else if(request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || + // payment fail + else if(request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_FAIL) || + request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){ createOrderActivity.setPaymentWebViewVisibility(false); DialogHelper.showAlertDialog(BaseActivity.currentActivity, getString(R.string.error_message)); + return true; + } + else { + return false; } - return super.shouldOverrideUrlLoading(view, request); } @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { - if(url.contains(ApiConstants.PAYMENT_WEBVIEW_SUCCESS_POSTFINANCE_TWINT) || - url.contains(ApiConstants.PAYMENT_WEBVIEW_FAIL_POSTFINANCE_TWINT)){ + + /* + // Canceled because response json from PostFinance fr apple Webview is not valid + // payment success or fail. response json will handle at "handlePaymentResponse" method of "PaymentJavaScriptInterface" class below + if(url.contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_SUCCESS) || + url.contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_FAIL)){ createOrderActivity.setPaymentWebViewVisibility(false); } - else if(url.equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || + */ + + // payment success + if(url.contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_SUCCESS) || + url.equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || url.equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){ createOrderActivity.setPaymentWebViewVisibility(false); createOrderActivity.onNextClicked(FRAGMENT_NAME); + return true; } - else if(url.contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || + // payment fail + else if(url.contains(ApiConstants.PAYMENT_WEBVIEW_REDIRECT_URL_POSTFINANCE_TWINT_FAIL) || + url.contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTP) || url.contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){ createOrderActivity.setPaymentWebViewVisibility(false); DialogHelper.showAlertDialog(BaseActivity.currentActivity, getString(R.string.error_message)); + return true; + } + else { + return false; } - return super.shouldOverrideUrlLoading(view, url); } + /* + // Canceled because response json from PostFinance fr apple Webview is not valid @Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:PaymentResponseHandler.handlePaymentResponse" + - "(''+document.getElementsByTagName('html')[0].innerHTML+'');"); + "(document.getElementsByTagName('pre')[0].innerHTML);"); } + */ @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { @@ -1172,7 +1191,8 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { }); paymentWebView.loadUrl(ApiConstants.PAYMENT_WEBVIEW_URL_POSTFINANCE_TWINT + orderId); - paymentWebView.addJavascriptInterface(new PaymentJavaScriptInterface(getActivity()), "PaymentResponseHandler"); + // Canceled because response json from PostFinance fr apple Webview is not valid + //paymentWebView.addJavascriptInterface(new PaymentJavaScriptInterface(getActivity()), "PaymentResponseHandler"); } private String fixEndTime(String endTime){ @@ -1203,6 +1223,8 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { } } + /* + // Canceled because response json from PostFinance fr apple Webview is not valid class PaymentJavaScriptInterface { private Context ctx; @@ -1212,13 +1234,11 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { } @JavascriptInterface - public void handlePaymentResponse(String html) { + public void handlePaymentResponse(String jsonString) { try{ - if(html.contains("success") && html.contains("message") && html.contains("error_code") && html.contains("data")){ - Document document = Jsoup.parse(html); - String json = document.getElementsByTag("pre").text(); + if(jsonString.contains("success") && jsonString.contains("message") && jsonString.contains("error_code") && jsonString.contains("data")){ Gson gson = new Gson(); - PostfinancePaymentResponseModel postfinancePaymentResponseModel = gson.fromJson(json, PostfinancePaymentResponseModel.class); + PostfinancePaymentResponseModel postfinancePaymentResponseModel = gson.fromJson(jsonString, PostfinancePaymentResponseModel.class); if(postfinancePaymentResponseModel.isSuccess()){ createOrderActivity.onNextClicked(FRAGMENT_NAME); @@ -1226,18 +1246,6 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { else { DialogHelper.showAlertDialog(BaseActivity.currentActivity, postfinancePaymentResponseModel.getMessage()); } - - /* - final WebView paymentWebView = createOrderActivity.getPaymentWebView(); - paymentWebView.post(new Runnable() { - @Override - public void run() { - paymentWebView.removeJavascriptInterface("PaymentResponseHandler"); - paymentWebView.loadData("", "text/html", "UTF-8"); - paymentWebView.clearHistory(); - } - }); - */ } } catch (Exception e){ @@ -1246,4 +1254,5 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment { } } } + */ } diff --git a/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentSuccessModel.java b/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentDataModel.java similarity index 95% rename from app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentSuccessModel.java rename to app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentDataModel.java index e54f72e..fe81569 100644 --- a/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentSuccessModel.java +++ b/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentDataModel.java @@ -2,7 +2,7 @@ package ch.pizzaleu.android.model; import com.google.gson.annotations.SerializedName; -public class PostfinancePaymentSuccessModel { +public class PostfinancePaymentDataModel { private String route; diff --git a/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentResponseModel.java b/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentResponseModel.java index 50ccdfa..821555a 100644 --- a/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentResponseModel.java +++ b/app/src/main/java/ch/pizzaleu/android/model/PostfinancePaymentResponseModel.java @@ -11,7 +11,7 @@ public class PostfinancePaymentResponseModel { private int errorCode; @SerializedName("data") - private PostfinancePaymentSuccessModel paymentSuccessModel; + private PostfinancePaymentDataModel paymentDataModel; public boolean isSuccess() { return success; @@ -28,7 +28,7 @@ public class PostfinancePaymentResponseModel { return errorCode; } - public PostfinancePaymentSuccessModel getPaymentSuccessModel() { - return paymentSuccessModel; + public PostfinancePaymentDataModel getPaymentDataModel() { + return paymentDataModel; } }