android和ios移动端开发,经常与碰到一些需要在移动端H5页面跳转打开微信、支付宝、QQ钱包、京东钱包等支付APP,H5页面很简单,需要预先设置好需要支付的金额和商户id之类,而剩下的就需要移动端来完成。
webview在加载网页的时候会默认调起手机自带的浏览器加载网页,用户体验不好。但当设置(setWebViewClient)设置这样的监听事件之后,当请求url的时候就不会打开手机自带的浏览器.
1.首先移动端需要拦截到H5的点击之后发出的指令,这就需要WebView的
setWebViewClient(WebViewClient client)方法。
|
在上面WebView可以看出,WebViewClient用于接收H5页面发出的各种通知和请求。
|
webview.loadUrl("H5");
但发起请求的时候后,webview的连续动作是先后请求两个url
1.https://mobilecodec.alipay.com/client_download.htm?qrcode=bax05351pgjhc4yegd2y2084
2.https://ds.alipay.com/from=mobilecodec&scheme=alipayqr%3A%2F%2Fplatformapi%2Fstartapp%3FsaId%3D10000007%26clientVersion%3D3.7.0.0718%26qrcode%3Dhttps%253A%252F%252Fqr.alipay.com%252Fbax05351pgjhc4yegd2y2084%253F_s%253Dweb-other
`
之后返回一个意图,也是用这个意图来打开支付宝app
intent://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https%3A%2F%2Fqr.alipay.com%2Fbax05351pgjhc4yegd2y2084%3F_s%3Dwebother&_t=1474448799004#Intent;scheme=alipayqr;package=com.eg.Android.AlipayGphone;end
支付宝支付
|
上面”android.intent.category.BROWSABLE”
具体含义参考http://blog.csdn.net/gf771115/article/details/7827833
微信支付
调用微信支付基本和上面同理,只需将(url.contains("platformapi/startapp"))中的“platformapi/startapp”改成微信的“weixin://wap/pay?”即可
QQ钱包支付
Scheme=关键词“qqapi”