一、前提条件:后端已经生成了支付链接

  1. 微信是支持H5在非微信内核的浏览器调起支付的,只是流程很麻烦,需要企业账号申请才行,并且周期较长。微信官方开通说明

    申请入口:登录商户平台–>产品中心–>我的产品–>支付产品–>H5支付

  2. 支付宝H5网站支付接入说明,支付宝文档

二、H5和App做交互,将生成的订单传给App

大致流程:在App中使用WebView加载H5页面,H5页面请求接口成功后,将得到支付链接传给App,App再调起支付宝或者微信的支付界面,完成最终的付款操作。

  1. 使用Scheme唤起支付宝的支付界面,
    付款Scheme:“alipays://platformapi/startapp?appId=20000067”
    一定要对支付的**url内容做URLEncoder.encode编码**:不然唤起支付界面失败。

     //跳转支付宝支付val url = "alipays://platformapi/startapp?appId=20000067&url=${URLEncoder.encode(it.data)}"val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))startActivity(intent)
    
  2. 由于微信未开通H5支付功能,但是又不想在App中接入微信支付的SDK,所以就有下面的结局方案。

    1. 将支付链接生成二维码图片显示在界面上;

    2. 用户长按二维码后将其生成图片保存到手机相册中;

    3. 图片保存后打开微信的扫一扫界面

    4. 现在用户只需要在微信的扫一扫选择相册中二维码就可以进行支付了

    关键代码如下,注释已经很详细了

     //二维码中logo
    val logo = BitmapFactory.decodeResource(resources,R.mipmap.ic_wechat_pay_round)
    //生成二维码位图
    val qrCode =  CodeUtils.createQRCode(payUrl,300,logo, Color.BLACK)
    //显示微信支付二维码
    mIvQRCode.setImageBitmap(qrCode)
    
    //长按保存二维码
    mIvQRCode.setOnLongClickListener {val bitmap = ImageUtils.view2Bitmap(mIvQRCode)//保存到相册val file = ImageUtils.save2Album(bitmap, Bitmap.CompressFormat.PNG)file?.let {ToastUtils.showLong("微信付款码已保存到手机相册")openWeChatScan()}return@setOnLongClickListener false
    }
    
      /*** 打开微信扫一扫*/@SuppressLint("WrongConstant")private fun openWeChatScan() {val intent = Intent()intent.component =ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI")intent.putExtra("LauncherUI.From.Scaner.Shortcut", true)intent.flags = 335544320intent.action = "android.intent.action.VIEW"startActivity(intent)}
    

最后附上支付宝的Scheme协议跳转指定页面

"alipayqr://platformapi/startapp?saId=10000003"//手机充值
"alipayqr://platformapi/startapp?saId=10000007"//扫一扫
"alipayqr://platformapi/startapp?saId=10000009"//爱心捐赠
"alipayqr://platformapi/startapp?saId=100000011"//彩票首页
"alipayqr://platformapi/startapp?saId=100000033"//话费卡转让
"alipayqr://platformapi/startapp?saId=10000110"//关于
"alipayqr://platformapi/startapp?saId=10000112"//服务授权
"alipayqr://platformapi/startapp?saId=20000116"//转账
"alipayqr://platformapi/startapp?saId=20000056"//付款码-----210
"alipays://platformapi/startapp?appId=20000003";//账单
"alipays://platformapi/startapp?appId=20000076";//账单
"alipays://platformapi/startapp?appId=20000006"//切换账户
"alipays://platformapi/startapp?appId=20000008"//支付宝登出
"alipays://platformapi/startapp?appId=20000009"//手机号注册
"alipays://platformapi/startapp?appId=20000010"//绑定手机
"alipays://platformapi/startapp?appId=20000011"//客服帮助
"alipays://platformapi/startapp?appId=20000013"//修改支付密码
"alipays://platformapi/startapp?appId=20000014"//我的银行卡
"alipays://platformapi/startapp?appId=20000015"//找回登录密码
"alipays://platformapi/startapp?appId=20000017"//修改登录密码
"alipays://platformapi/startapp?appId=20000019"//余额
"alipays://platformapi/startapp?appId=20000020"//卡包
"alipays://platformapi/startapp?appId=20000024"//支付宝设置
"alipays://platformapi/startapp?appId=20000027"//账号切换
"alipays://platformapi/startapp?appId=20000031"//设置个人头像
"alipays://platformapi/startapp?appId=20000032"//余额宝
"alipays://platformapi/startapp?appId=20000033"//提现
"alipays://platformapi/startapp?appId=20000038"//身份验证
"alipays://platformapi/startapp?appId=20000048"//添加生活好
"alipays://platformapi/startapp?appId=20000049"//意见反馈
"alipays://platformapi/startapp?appId=20000050"//打开地图
"alipays://platformapi/startapp?appId=20000057"//账号管理
"alipays://platformapi/startapp?appId=20000068"//快速挂失
"alipays://platformapi/startapp?appId=20000068"//安全中心
"alipays://platformapi/startapp?appId=20000071"//城市一卡通
"alipays://platformapi/startapp?appId=20000078"//上银汇款
"alipays://platformapi/startapp?appId=20000081"//更多
"alipays://platformapi/startapp?appId=20000122"//首页活动
"alipays://platformapi/startapp?appId=20000123"//收钱
"alipayqr://platformapi/startapp?appId=68687017"//年度账单
"alipayqr://platformapi/startapp?appId=20000101"//生活号
"alipayqr://platformapi/startapp?appId=20000102"//打开nfc
"alipayqr://platformapi/startapp?appId=20000107"//出境
"alipayqr://platformapi/startapp?appId=20000108"//挂号就诊
"alipayqr://platformapi/startapp?appId=20000110"//我的保障
"alipayqr://platformapi/startapp?appId=20000115"//设备管理
"alipayqr://platformapi/startapp?appId=20000119"//阿里游戏
"alipayqr://platformapi/startapp?appId=20000118"//芝麻信用
"alipayqr://platformapi/startapp?appId=20000120"//饿了么
"alipayqr://platformapi/startapp?appId=20000123"//收钱
"alipayqr://platformapi/startapp?appId=20000125"//首页
"alipayqr://platformapi/startapp?appId=20000126"//免费wifi
"alipayqr://platformapi/startapp?appId=20000130"//滴滴
"alipayqr://platformapi/startapp?appId=20000132"//亲情号
"alipayqr://platformapi/startapp?appId=20000134"//股票自选
"alipayqr://platformapi/startapp?appId=20000135"//火车票
"alipayqr://platformapi/startapp?appId=20000136"//游戏充值
"alipayqr://platformapi/startapp?appId=20000139"//酒店搜索
"alipayqr://platformapi/startapp?appId=20000141"//修改昵称
"alipayqr://platformapi/startapp?appId=20000142"//娱乐宝
"alipayqr://platformapi/startapp?appId=20000143"//火车票汽车票预定
"alipayqr://platformapi/startapp?appId=20000146"//我的淘宝
"alipayqr://platformapi/startapp?appId=20000150"//汇率换算
"alipayqr://platformapi/startapp?appId=20000153"//游戏中心
"alipayqr://platformapi/startapp?appId=20000155"//飞猪
"alipayqr://platformapi/startapp?appId=20000157"//国际机票查询
"alipayqr://platformapi/startapp?appId=20000160"//蚂蚁会员
"alipayqr://platformapi/startapp?appId=20000161"//理财小工具
"alipayqr://platformapi/startapp?appId=20000162"//羊城通
"alipayqr://platformapi/startapp?appId=20000165"//定期理财
"alipayqr://platformapi/startapp?appId=20000161"//指纹手势解锁
"alipayqr://platformapi/startapp?appId=20000168"//年度账单
"alipayqr://platformapi/startapp?appId=20000176"//红包
"alipayqr://platformapi/startapp?appId=20000183"//设置手势密码
"alipayqr://platformapi/startapp?appId=20000161"//指纹手势解锁设定界面
"alipayqr://platformapi/startapp?appId=20000186"//通讯录
"alipayqr://platformapi/startapp?appId=20000161"//绑定智能手环
"alipayqr://platformapi/startapp?appId=20000197"//首页-热门游戏
"alipayqr://platformapi/startapp?appId=20000199"//花呗
"alipayqr://platformapi/startapp?appId=20000205"//亲情圈
"alipayqr://platformapi/startapp?appId=20000218"//黄金
"alipayqr://platformapi/startapp?appId=20000225"//借条
"alipayqr://platformapi/startapp?appId=20000227"//卡包
"alipayqr://platformapi/startapp?appId=20000234"//刷脸
"alipayqr://platformapi/startapp?appId=20000235"//服务提醒
"alipayqr://platformapi/startapp?appId=20000241"//车险服务
"alipayqr://platformapi/startapp?appId=20000243"//总资产
"alipayqr://platformapi/startapp?appId=20000248"//个性签名
"alipayqr://platformapi/startapp?appId=20000252"//朋友模块
"alipayqr://platformapi/startapp?appId=20000255"//账户充值
"alipayqr://platformapi/startapp?appId=20000266"//邮箱账单
"alipayqr://platformapi/startapp?appId=20000288"//聊天室
"alipayqr://platformapi/startapp?appId=20000290"//可能认识的人
"alipayqr://platformapi/startapp?appId=20000298"//证书管理
"alipayqr://platformapi/startapp?appId=20000301"//多设备管理
"alipayqr://platformapi/startapp?appId=20000305"//支付宝内付款码声波付

Android H5页面调起微信和支付宝付款相关推荐

  1. 前端如何在H5页面调起微信支付

    在微信服务号开发的时候经常会遇到微信支付的功能实现,通过实际经验自己总结了一下,前端在H5页面调起微信支付有两种办法,一是利用内置对象,二是通过引用微信的js sdk,亲测都能支付成功,从写法上来看用 ...

  2. H5页面中调用微信和支付宝支付

    最近在工作中,有个H5页面需要实现微信支付和支付宝支付的功能,现在已经完成,抽个时间写出来,分享给有需要的人. 第一步:先判断当前环境 判断用户所属环境,根据环境不同,执行不同的支付程序. if (/ ...

  3. Android webview加载H5页面调起微信支付

    场景 一个H5的页面,需要在app内用webview展示,然后涉及到支付,要求能够调用微信支付来付款,页面没有问题,但是写完出现了一些问题. 问题 页面不显示,展示空白 需要设置: webSettin ...

  4. android web打开微信支付功能,Android通过webview调起微信和支付宝app进行支付

    //方法一:调用系统自带浏览器进行显示 mWv_test.getSettings().setJavaScriptEnabled(true); mWv_test.loadUrl("http:/ ...

  5. android 浏览器打开微信支付宝,Android通过webview调起微信和支付宝app进行支付

    extraHeaders = new HashMap(); // extraHeaders.put("Referer", "http://zxpay.fss518.cn& ...

  6. python 调用支付宝微信接口_前端在h5页面调起微信支付接口和支付宝接口(日常笔记)...

    微信支付 微信文档中的例子如下. function onBridgeReady(){ WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "ap ...

  7. h5支付不能打开支付宝 ios_IOS H5支付调起微信支付宝客户端问题总结

    IOS H5支付调起微信支付宝客户端问题总结 很早之前公司的支付功能,通过H5去支付宝和微信支付,开始使用的是UIwebView来加载h5页面,当初只有支付宝网页支付形式,所以没有考虑到那么多,现在新 ...

  8. 使用chrome devtools app(离线包)调试Android H5页面

      在调试Android H5页面的时候时候Chrome自带的"Chrome://inspect"工具调试时,国内用户都面临不可用的问题. 不翻墙,实现chrome浏览器调试工具的 ...

  9. 在H5页面中禁止微信分享转发按钮-mugeda

    在H5页面中禁止微信分享转发按钮(mugeda) 在页面脚本中插入以下代码 方法一: 加一段js代码 document.addEventListener('WeixinJSBridgeReady', ...

最新文章

  1. boost::fusion::fused用法的测试程序
  2. C 标准转换运算符const_cast
  3. vscode + SFTP 传输文件到服务器,从服务器下载文件
  4. 《机器学习实战》学习笔记第二章 —— K-近邻算法
  5. 管理新语:软件工作考评的设计思路
  6. 佳能Canon PIXMA G1010 打印机驱动
  7. json在线解析工具
  8. [现代控制理论]6_稳定性_李雅普诺夫_Lyapunov
  9. Zune无法连接手机的解决办法
  10. 这样的文件操作有点玄——文件流学习 ( 二 )
  11. 想学一门技术,学java有前途吗?
  12. html 下拉框设置提示语,为 Html 的 Select 加一个提示语和输入方法
  13. 帝国CMS Table '***.phome_ecms_news_data_' doesn't exist
  14. 爬虫必备,案例对比 Requests、Selenium、Scrapy 爬虫库!
  15. Html+css怎样实现纯文字和带图标的按钮
  16. 果然,ChatGPT 还是被拿去搞黄色了...
  17. YOLOV5 6.0加入CA注意力机制(看了包会)
  18. 已达到人类水准语音识别模型的whisper,真的有这么厉害吗?
  19. 华为服务器控制口地址修改,修改华为服务器管理口地址
  20. 2019年个人暑期健身计划和执行结果:跑步250公里,体重减少5.5公斤,顺利完成

热门文章

  1. web前端开发工程师的竞争力体现在哪里?
  2. 让电脑键盘L键变成锁定计算机怎么办,教你电脑键盘按键错乱怎么恢复
  3. mysqld: File ‘./binlog.index‘ not found (OS errno 13 - Permission denied)
  4. 什么是域名?域名有哪些种类?
  5. matlab 正负数,matlab判断函数值正负程序
  6. 手把手教你自制U盘重装win10系统专业版(纯净版)+激活【图文教程】
  7. esc键退出全屏 vue_解决了VUE在浏览器全屏下监听不到Esc键盘事件
  8. 爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录
  9. 阿里云 mysql 修改root密码修改_设置及修改MySQL root用户密码 - MySQL中文参考手册...
  10. python青少年编程_机器人Python青少年编程开发实例