Android webview里调用 支付宝接口

做的程序是Android框架嵌套js 用webview来加载这些页面,现在在webview里面点击支付时的时候,
会跳转到一个PC版的页面进行支付,这个功能在PC上是正常的。
现在嵌套在Android里的时候 ,经常出现无法登陆,扫码支付后不能返回的现象。
所以决定用支付宝的接口。
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.t8Z1SV&treeId=59&articleId=104669&docType=1
就是这种介入方式,里面有个方法接口fetchOrderInfoFromH5PayUrl

接口功能

从拦截的URL中获取支付请求相关信息,封装成新的订单信息字符串作为返回值。如果该URL不是有效的支付宝支付URL,则返回空字符串。

但是现在这个我总是不能拦截到自己支付地址,还是会跳转到PC版的页面,想要的结果是可以直接底部弹出来支付框(有安装支付宝APP的时候),没有装的话是转到H5的页面中。

这个接入需要申请什么权限吗,我看官方demo里这种方式没有用到,
看到的朋友 可以指点一下吗,第一次集成支付宝 非常迷茫,项目快上线了,这个功能以及纠缠我好多天了,在线等

webview会有权限问题,既然你是android程序,那么最好用native接入方式,接起来也很简单,而且基本能保证运行正常。体验也好。

可以通过JS和Android的通信,来吧网页的请求转化为Android应用的请求,这样就能拉起手机上的支付宝APP了。

二楼你好,我想请问一下:我现在就是用native的方式去接入,当页面跳转到PC版网页的时候 如果我安装的有支付宝APP 现在确实会跳转到APP里面支付,
但是有两个问题,
1.支付完成后不会自己跳转,手动返回后确实可以在webview里面接受到返回信息 然后页面进行正常跳转,怎么才可以自动跳
2.当手机上没有装支付宝APP的时候,它只是跳转到SDK里面的一个Activity里的一个webview 然后载入的还是PC版页面

1.支付完成后不会自己跳转,手动返回后确实可以在webview里面接受到返回信息 然后页面进行正常跳转,怎么才可以自动跳
2.当手机上没有装支付宝APP的时候,它只是跳转到SDK里面的一个Activity里的一个webview 然后载入的还是PC版页面

第一个问题,应该是设置问题,支付宝是可以自动跳转到调用者的。
第二个问题,对于没有安装支付宝app的情况,这是正常表现,它只能调用网页了。我不知道你是不是说不应该弹PC网页而是移动端网页。
如果你是这个意思,那么你应该看一下你的webview请求参数是不是让它作为移动端的浏览器标识。

感谢zouyongjin 你的回答,还想再问一下 第二个问题 你说的“webview请求参数是不是让它作为移动端的浏览器标识”
不太明白是什么意思,网上 查了是这个东西吗User-Agent?
意思就是让网站识别浏览器 然后把PC版的返回成手机版的?那么该怎么设置呢,网上查的都看不太明白
比如找到的这个:
// 修改ua使得web端正确判断
String ua = webview.getSettings().getUserAgentString();
webview.getSettings().setUserAgentString(ua+"; HFWSH /"+appversion);

后面的"; HFWSH /"+appversion 是干嘛用的呢

To题主:

webview.getSettings().setUserAgentString(ua+"; HFWSH /"+appversion);
这个就是在默认的user-agent字符串后面添加一个尾部标示而已。HFWSH /这个只是浏览器的标识。可以理解为版本代号。
不同的android系统可能webview的UA也不一样,比如android4.4就改了webview,性能有很大提升,同事UA也变更了。你可以自己动手试试看取出来的UA值是什么。

https://mclient.alipay.com/cashier/mobilepay.htm?alipay_exterface_invoke_assign_target=invoke_0d601cbd382bee685f048d0e7b2f3755&alipay_exterface_invoke_assign_sign=_hreog_w_oa_p_yv_x_e_cz_gau_a%2F%2Fx_t_rk_gi_bym61_zc_d_s_hye%2B3bi_ub%2B_k5_o_l_e_p_jg%3D%3D