所有分类
  • 所有分类
  • 后端开发
支付宝移动网页接口支付在 Android 客户端跳转不稳定,如何解决?

支付宝移动网页接口支付在 Android 客户端跳转不稳定,如何解决?

公司产品使用支付宝移动网页接口支付,当三方商户传入跳转地址,在支付宝页面支付成功后跳转到该地址,如果没传将会自动关闭页面。从这句话中找到了网页在android的支付宝客户端偶尔关闭得了偶尔不行的原因:

真是让人头疼,我们公司的产品在用支付宝移动网页接口支付时,iOS客户端没啥问题,但是到了Android客户端就跳转不稳定了。这不仅影响了用户的使用感受,对我来说也很棘手。今天我就来分享一下如何找出、分析并解决这个问题,希望能帮助到和我一样遇到麻烦的开发者们。

问题的初步发现

我们家产品支付宝就能付款,方便?但有时候用户付完款,商家会给个新地址让你去看看,这种时候就赶紧去吧; 没有给的话,页面就要自动关闭咯。这次测试发现,这个功能在苹果手机(iOS)上挺好用的,但在安卓手机(Android)上就有点小问题:有时候支付成功后能顺利跳转或关闭,有时候却什么反应也没有。

深入分析问题

想要解决这个问题,首先得看看支付宝给咱们的小手册,果不其然,提示说页面打开以后,会冒出个叫做“AlipayJSBridge”的家伙,紧接着还会触发个名叫”AlipayJSBridgeReady”的事儿。琢磨了半天,才恍然大悟原来是咱们还没等这货完全出现,就急匆匆地去调用它上面的功能了,比如像这样`AlipayJSBridge.call(‘closeWebview’)`,结果自然是怎么也关不了页面咯。

解决方案的探索

知道了这个事,我就开始想办法解决。最后我想到,要是能发现那个叫`AlipayJSBridgeReady`的东东响起,那我马上就能把那页给关了。就算`AlipayJSBridge`搞不定,我这儿也能保证操作没问题。

$(function(){  
    if('${code}'=="00")  
    {  
         if('${merUrl}'!="")  
         {  
           window.location.href='${merUrl}';  
         }else{  
             AlipayJSBridge.call('closeWebview');    
        }  
    }else{  
            $("#error_msg").html("支付失败");  
            $("#error").show();  
    }  
  });

解决方案的实施

给手机装了个监听器,要看准时机。等有一个叫`AlipayJSBridgeReady`的玩意出现的时候,咱们就用`AlipayJSBridge.call(‘closeWebview’)`这个功能把网页关掉。简单说,代码大概是这么回事儿

javascript
if (window.AlipayJSBridge) {
阿里小钱包出bug了,得关掉它。
} else {
咱们来把这个准备好的事件处理程序加上去。
想让支付宝页面关闭?很简单,只要调用"closeWebview"方法就好了。
    }, false);
}

支付宝移动网页接口支付在 Android 客户端跳转不稳定,如何解决?

首先得看有没有那个叫AlipayJSBridge的东东,要是有就把它关掉;没了就在加个啥进去,等到收到AlipayJSBridgeReady的信号再说。

测试与验证

搞定代码后,我试试看了几回,还真不赖!安卓手机上的页面跳转和关闭变得正常多了。不论我加上网址链接或是什么都不用加,页面都能顺利打开。这下用户们使用起来肯定更舒服!

经验总结

这回棘手问题让我明白,理解API操作和事件流程能帮我们搞定客户端兼容性大难题此外,正确运用事件监听就可以巧妙地解决同步执行的问题。

对未来的展望

document.addEventListener('AlipayJSBridgeReady', function () {  
    if('${code}'=="00")  
    {  
         if('${merUrl}'!="")  
         {  
             window.location.href='${merUrl}';  
         }else{  
             AlipayJSBridge.call('closeWebview');    
        }  
    }else{  
            $("#error_msg").html("支付失败");  
            $("#error").show();  
    }  
 }, false);

尽管这问题已经解决了,但我深知科技没有尽头,未来肯定还会有新的挑战等着我们。因此,我得把学习和研究当成乐趣,提升能力,才能为大家提供更棒的服务!

结语与互动

聊聊我解决支付宝移动网页支付跳转的妙招儿要是你们也遇到这个烦恼了,或者有啥想法建议,就在评论区留言。觉得这篇文章不错的话,别忘了点赞分享出去哟~

原文链接:https://www.icz.com/technicalinformation/web/javascript/2024/06/16952.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?