WebView调用原生微信或支付宝回调:其原理就是在shouldOverrideUrlLoading(final WebView view, String url)方法中进行拦截处理。
由于支付宝的取消支付之后跳转的页面显示不太友好,所以集成支付宝SDK-手机网站支付转APP支付,说明文档参照https://docs.open.alipay.com/204/105695/。按照说明集成aliPaySdk。
初始化WebView:
private void initWebView(){
WebViewUtil.webSettingsApply(mWebView.getSettings());
mWebView.setWebViewClient(new MyWebViewClient());
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
if(!TextUtils.isEmpty(title) && mTitle != null) {
mTitle.setText(title);
}
}
});
mWebView.loadUrl(mUrl);
}
覆写url加载:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
// 微信支付处理
if (url.startsWith("weixin://wap/pay?")){
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
H5PayActivity.this.startActivity(intent);
return true;
}catch (Exception e){ //异常处理
view.goBack(); // 因为会出现有一个weixin空白页面;根据需求自己处理
UIUtil.showToastShort("系统检测未安装微信,请先安装微信或者用支付宝支付");
return true;
}
}
// 支付宝支付处理
final PayTask task = new PayTask(H5PayActivity.this);
