processing json response of postfinance canceled

This commit is contained in:
2019-12-22 16:08:56 +03:00
parent aa47f096da
commit b6118c263b
4 changed files with 55 additions and 46 deletions

View File

@@ -44,8 +44,8 @@ public class ApiConstants {
public static final String ONESIGNAL_NOTIFICATION_TAG_VALUE = "true"; 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_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_REDIRECT_URL_POSTFINANCE_TWINT_SUCCESS = "postFinancePaymentIsSuccess";
public static final String PAYMENT_WEBVIEW_FAIL_POSTFINANCE_TWINT = "postFinancePaymentIsFailed"; 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_HTTP = "http://www.pizza-leu.ch/";
public static final String PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS = "https://www.pizza-leu.ch/"; public static final String PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS = "https://www.pizza-leu.ch/";

View File

@@ -1,11 +1,7 @@
package ch.pizzaleu.android.fragment.createOrder; package ch.pizzaleu.android.fragment.createOrder;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.http.SslError;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -16,7 +12,6 @@ import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
import android.webkit.WebResourceError; import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest; import android.webkit.WebResourceRequest;
import android.webkit.WebView; import android.webkit.WebView;
@@ -27,16 +22,11 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.braintreepayments.api.dropin.DropInActivity; import com.braintreepayments.api.dropin.DropInActivity;
import com.braintreepayments.api.dropin.DropInRequest; import com.braintreepayments.api.dropin.DropInRequest;
import com.braintreepayments.api.dropin.DropInResult; import com.braintreepayments.api.dropin.DropInResult;
import com.crashlytics.android.Crashlytics;
import com.google.android.gms.wallet.Cart; import com.google.android.gms.wallet.Cart;
import com.google.gson.Gson;
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import com.wdullaer.materialdatetimepicker.time.TimePickerDialog; import com.wdullaer.materialdatetimepicker.time.TimePickerDialog;
import com.wdullaer.materialdatetimepicker.time.Timepoint; import com.wdullaer.materialdatetimepicker.time.Timepoint;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
@@ -64,7 +54,6 @@ import ch.pizzaleu.android.helper.SessionHelper;
import ch.pizzaleu.android.helper.SharedPrefsHelper; import ch.pizzaleu.android.helper.SharedPrefsHelper;
import ch.pizzaleu.android.model.PaymentMethodModel; import ch.pizzaleu.android.model.PaymentMethodModel;
import ch.pizzaleu.android.model.PaymentTokenModel; import ch.pizzaleu.android.model.PaymentTokenModel;
import ch.pizzaleu.android.model.PostfinancePaymentResponseModel;
import ch.pizzaleu.android.model.StoreShiftModel; import ch.pizzaleu.android.model.StoreShiftModel;
import ch.pizzaleu.android.model.cart.CartInfoModel; import ch.pizzaleu.android.model.cart.CartInfoModel;
import ch.pizzaleu.android.model.cart.CartProductModel; import ch.pizzaleu.android.model.cart.CartProductModel;
@@ -1121,48 +1110,78 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
@RequiresApi(Build.VERSION_CODES.N) @RequiresApi(Build.VERSION_CODES.N)
@Override @Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 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); 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)){ request.getUrl().toString().equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){
createOrderActivity.setPaymentWebViewVisibility(false); createOrderActivity.setPaymentWebViewVisibility(false);
createOrderActivity.onNextClicked(FRAGMENT_NAME); 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)){ request.getUrl().toString().contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){
createOrderActivity.setPaymentWebViewVisibility(false); createOrderActivity.setPaymentWebViewVisibility(false);
DialogHelper.showAlertDialog(BaseActivity.currentActivity, getString(R.string.error_message)); DialogHelper.showAlertDialog(BaseActivity.currentActivity, getString(R.string.error_message));
return true;
}
else {
return false;
} }
return super.shouldOverrideUrlLoading(view, request);
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Override @Override
public boolean shouldOverrideUrlLoading(WebView view, String url) { 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); 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)){ url.equals(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){
createOrderActivity.setPaymentWebViewVisibility(false); createOrderActivity.setPaymentWebViewVisibility(false);
createOrderActivity.onNextClicked(FRAGMENT_NAME); 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)){ url.contains(ApiConstants.PAYMENT_WEBVIEW_MAIN_PAGE_HTTPS)){
createOrderActivity.setPaymentWebViewVisibility(false); createOrderActivity.setPaymentWebViewVisibility(false);
DialogHelper.showAlertDialog(BaseActivity.currentActivity, getString(R.string.error_message)); 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 @Override
public void onPageFinished(WebView view, String url) { public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:PaymentResponseHandler.handlePaymentResponse" + view.loadUrl("javascript:PaymentResponseHandler.handlePaymentResponse" +
"('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); "(document.getElementsByTagName('pre')[0].innerHTML);");
} }
*/
@Override @Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 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.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){ 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 { class PaymentJavaScriptInterface {
private Context ctx; private Context ctx;
@@ -1212,13 +1234,11 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
} }
@JavascriptInterface @JavascriptInterface
public void handlePaymentResponse(String html) { public void handlePaymentResponse(String jsonString) {
try{ try{
if(html.contains("success") && html.contains("message") && html.contains("error_code") && html.contains("data")){ if(jsonString.contains("success") && jsonString.contains("message") && jsonString.contains("error_code") && jsonString.contains("data")){
Document document = Jsoup.parse(html);
String json = document.getElementsByTag("pre").text();
Gson gson = new Gson(); Gson gson = new Gson();
PostfinancePaymentResponseModel postfinancePaymentResponseModel = gson.fromJson(json, PostfinancePaymentResponseModel.class); PostfinancePaymentResponseModel postfinancePaymentResponseModel = gson.fromJson(jsonString, PostfinancePaymentResponseModel.class);
if(postfinancePaymentResponseModel.isSuccess()){ if(postfinancePaymentResponseModel.isSuccess()){
createOrderActivity.onNextClicked(FRAGMENT_NAME); createOrderActivity.onNextClicked(FRAGMENT_NAME);
@@ -1226,18 +1246,6 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
else { else {
DialogHelper.showAlertDialog(BaseActivity.currentActivity, postfinancePaymentResponseModel.getMessage()); DialogHelper.showAlertDialog(BaseActivity.currentActivity, postfinancePaymentResponseModel.getMessage());
} }
/*
final WebView paymentWebView = createOrderActivity.getPaymentWebView();
paymentWebView.post(new Runnable() {
@Override
public void run() {
paymentWebView.removeJavascriptInterface("PaymentResponseHandler");
paymentWebView.loadData("<html><head></head><body></body></html>", "text/html", "UTF-8");
paymentWebView.clearHistory();
}
});
*/
} }
} }
catch (Exception e){ catch (Exception e){
@@ -1246,4 +1254,5 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
} }
} }
} }
*/
} }

View File

@@ -2,7 +2,7 @@ package ch.pizzaleu.android.model;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
public class PostfinancePaymentSuccessModel { public class PostfinancePaymentDataModel {
private String route; private String route;

View File

@@ -11,7 +11,7 @@ public class PostfinancePaymentResponseModel {
private int errorCode; private int errorCode;
@SerializedName("data") @SerializedName("data")
private PostfinancePaymentSuccessModel paymentSuccessModel; private PostfinancePaymentDataModel paymentDataModel;
public boolean isSuccess() { public boolean isSuccess() {
return success; return success;
@@ -28,7 +28,7 @@ public class PostfinancePaymentResponseModel {
return errorCode; return errorCode;
} }
public PostfinancePaymentSuccessModel getPaymentSuccessModel() { public PostfinancePaymentDataModel getPaymentDataModel() {
return paymentSuccessModel; return paymentDataModel;
} }
} }