package com.xiaomi.xms.sales.ui;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.xiaomi.xms.sales.R;
import com.xiaomi.xms.sales.activity.PaymentActivity;
import com.xiaomi.xms.sales.request.HostManager;
import com.xiaomi.xms.sales.request.HostManager.Parameters;
import com.xiaomi.xms.sales.util.Constants;
import com.xiaomi.xms.sales.util.LogUtil;
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import java.util.ArrayList;
import java.util.List;
public class PaymentWebFragment extends BaseWebFragment {
private static final String TAG = "PaymentWebFragment";
private String mUrl;
private String mOrderId;
private double mFee;
private String mPayType;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = super.onCreateView(inflater, container, savedInstanceState);
Bundle bundle = getArguments();
mUrl = bundle.getString(Constants.Intent.EXTRA_PAYMENT_URL);
mOrderId = bundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_ID);
mFee = bundle.getDouble(Constants.Intent.EXTRA_PAYMENT_FEE);
mPayType = bundle.getString(Constants.Intent.EXTRA_PAYMENT_TYPE);
mWebView.requestFocus();
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
LogUtil.d(TAG, "shouldOverrideUrlLoading:" + url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
LogUtil.d(TAG, "onPageFinished:" + url);
Uri uri = Uri.parse(url);
if (uri != null && TextUtils.equals(uri.getPath(), HostManager.URL_PAY_RESULT_PATH)) {
onWebPayFinished();
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
LogUtil.d(TAG, "onPageStarted:" + url);
}
});
if (!TextUtils.isEmpty(mUrl) && !TextUtils.isEmpty(mOrderId)) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair(Parameters.Keys.CLIENT_ID,
Parameters.Values.CLIENT_ID));
params.add(new BasicNameValuePair(Parameters.Keys.ORDER_ID, mOrderId));
params.add(new BasicNameValuePair(Parameters.Keys.PAY_ONLINE_BANK, mPayType));
mWebView.loadUrl(String.format("%s?%s", mUrl,
URLEncodedUtils.format(params, HTTP.UTF_8)));
}
return v;
}
private void onWebPayFinished() {
LogUtil.d(TAG, "onPayFinished");
Bundle bundle = new Bundle();
bundle.putString(Constants.Intent.EXTRA_PAYMENT_ORDER_ID, mOrderId);
bundle.putDouble(Constants.Intent.EXTRA_PAYMENT_FEE, mFee);
((PaymentActivity)getActivity()).showPaymentConfirmDialog(bundle);
}
@Override
public boolean handleBackPressed() {
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
onWebPayFinished();
}
return true;
}
@Override
protected int getLayoutId() {
return R.layout.payment_web;
}
}