Android H5 page adjusts WeChat and Alipay payment

1. Precondition: The backend has generated a payment link

  1. WeChat supports H5 to initiate payment in non-WeChat core browsers, but the process is cumbersome and requires an enterprise account application, and the cycle is long. WeChat Official Opening Instructions

    Application entrance: log in to the merchant platform –> product center –> my product –> payment product –> H5 payment

  2. Alipay H5 website payment access instructions , Alipay documents

2. Interact between H5 and App, and pass the generated order to App

General process: Use WebView to load the H5 page in the App. After the H5 page requests the interface successfully, the payment link will be sent to the App, and the App will call the payment interface of Alipay or WeChat to complete the final payment operation.

  1. Use the Scheme to evoke Alipay’s payment interface, and
    the payment Scheme: “alipays://platformapi/startapp?appId=20000067”
    must be the ** of the paymentThe url content is URLEncoder.encode encoded**: Otherwise, it fails to invoke the payment interface.

     //跳转支付宝支付
     val url = "alipays://platformapi/startapp?appId=20000067&url=${
            
            URLEncoder.encode(it.data)}"
     val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
     startActivity(intent)
    
  2. Since WeChat has not enabled the H5 payment function, but does not want to access the SDK of WeChat payment in the app, so there is the following ending solution.

    1. Generate a QR code image from the payment link and display it on the interface;

    2. After the user presses the QR code for a long time, the generated picture is saved in the mobile phone album;

    3. After the picture is saved, open the scanning interface of WeChat

    4. Now users only need to scan the QR code in the photo album on WeChat to make payment

    The key code is as follows, the comments are already very detailed

     //二维码中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)
      }
    

Finally, attach Alipay’s Scheme protocol to jump to the specified page

"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"//支付宝内付款码声波付

Guess you like

Origin blog.csdn.net/jiabaokang/article/details/126162891