Android H5页面调起微信和支付宝付款

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

  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 = 335544320
          intent.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"//支付宝内付款码声波付
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
第一届宁波――绍兴少儿信息学联赛(小学组) 主办:宁波市科协、教育局承办:宁波市青少年科技中心、青少年科技辅导员协会 绍兴市科协、教育局绍兴科技馆、市教育教学研究院、市互联网协会 第一届宁波――绍兴少儿信息学联赛 暨第28届宁波市中小学生计算机程序设 计竞赛 第11 届绍兴市少儿信息学竞赛 复赛试题 (2013 年4 月13 日下午1:30-4:00) 一、题目一览 中文题目名称哈夫曼编码立方和智力大奖赛求素数 英文题目名称coding cubsum energy prime 输入文件名coding.in cubsum.in energy.in prime.in 输出文件名coding.out cubsum.out energy.out prime.out 每个测试点时限1 秒1 秒1 秒1 秒 测试点数目10 10 10 10 每个测试点分值10 10 10 10 二、比赛目录结构示例 选手比赛时,需在本机为每题建立对应的题目目录,目录名称与题目英文名称相同。 选手根据题目要求,将自己提交的源程序,放在该题的题目目录下。 每位选手把自己提交的源程序连同要求的目录结构,存入D 盘根目录中。(只递交 源程序,测试时以源程序为准) 例如:假设试卷中有cashier、dune、manhattan 三题,选手sx1001 使用Pascal 答题,其最终提交的文件为cashier.pas、dune.pas、manhattan.pas,则该选手提交的 目录结构如下所示: |---sx1001/ |---cashier/ |---cashier.pas |---dune/ |---dune.pas |---manhattan/ |---manhattan.pas 三、特别提醒 1、务必看清题目,严格按照试题所要求的格式输入、输出。 2、比赛开始前应先检查本机能否正常使用,如有问题可向监考老师提出。比赛结束后应及时离开机房,但注意不要关机。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值