如果在正常的form表单中唤醒不了支付宝app只能用网页进行支付请参考如下:
商家在网页中调用支付宝提供的网页支付接口调起支付宝客户端内的支付模块,商家网页会跳转到支付宝中完成支付,支付完后跳回到商家网页内,最后展示支付结果。若无法唤起支付宝客户端,则在一定的时间后会自动进入网页支付流程。
注意:
若接入的是新版本手机网站支付接口(alipay.trade.wap.pay),用户在安装支付宝钱包的情况下,调用手机网站支付接口默认会唤起钱包支付;若接入的是手机网站支付老版本(alipay.wap.create.direct.pay.by.user ),那么需要在请求参数中加入app_pay参数并赋值为Y,详情参见 手机网站支付老版本文档;
开发者需要关注安装了支付宝和未安装支付宝的两种测试场景,对于在手机浏览器唤起H5页面的模式下,如果安装了支付宝却没有唤起,大部分原因是当前浏览器不在支付宝配置的白名单内;
对于商户app内嵌webview中的支付场景,建议集成支付宝App支付产品。或者您可以使用手机网站支付转Native支付的方案,不建议在您的APP中直接接入手机网站支付。
目前在手机网站支付时,通过唤起支付宝app收银台的方式去支付,可以大大提高支付成功率,故不建议禁止唤起支付宝app,目前对外也没有提供禁止唤起支付宝app的方法。
如果在iframe拉不起支付宝app进行支付,只能网页支付参考如下解决:
支付宝手机网站的sdk原理是在后台构造出一个form表单然后可以用post或者get的方法提交到支付宝进行支付的拉起的。
然而一般在H5游戏或者手机网站中进行支付的跳转的话,唤醒了app支付完成以后要手动切回原来的页面所以体验会特别差。
这时候我们就会把支付宝的链接塞到一个iframe中,在iframe中进行支付,完成以后将这个iframe移除,这样用户体验就会很好。
在安卓中拉起支付效果如下图
然后支付完成以后点击返回游戏就可以关闭这个iframe,然后可以返回自己的H5游戏或者网站