流氓的兔子
2016-11-22 01:47
采纳率: 50%
浏览 3.2k

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里这种方式没有用到,
看到的朋友 可以指点一下吗,第一次集成支付宝 非常迷茫,项目快上线了,这个功能以及纠缠我好多天了,在线等

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • zouyongjin 2016-11-22 02:41
    已采纳

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

    已采纳该答案
    打赏 评论
  • viewgroup 2016-11-22 02:40

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

    打赏 评论
  • 流氓的兔子 2016-11-22 02:57

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

    打赏 评论
  • zouyongjin 2016-11-22 04:59

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

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

    打赏 评论
  • 流氓的兔子 2016-11-22 08:14

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

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

    打赏 评论
  • zouyongjin 2016-11-22 14:03

    To题主:

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

    打赏 评论

相关推荐 更多相似问题