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 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/";

View File

@@ -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" +
"('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
"(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("<html><head></head><body></body></html>", "text/html", "UTF-8");
paymentWebView.clearHistory();
}
});
*/
}
}
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;
public class PostfinancePaymentSuccessModel {
public class PostfinancePaymentDataModel {
private String route;

View File

@@ -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;
}
}