Android H5 ページが WeChat と Alipay 支払いを調整

1. 前提条件: バックエンドが支払いリンクを生成していること

  1. WeChat は非 WeChat コア ブラウザで支払いを開始するための H5 をサポートしていますが、プロセスが煩雑でエンタープライズ アカウント アプリケーションが必要であり、サイクルが長いです。WeChat公式開設手順

    アプリケーションの入り口: マーチャントプラットフォームにログイン –> 製品センター –> 私の製品 –> 支払い製品 –> H5 支払い

  2. Alipay H5 ウェブサイト支払いアクセス手順Alipay ドキュメント

2. H5 とアプリの間で対話し、生成された注文をアプリに渡します

一般的なプロセス: WebView を使用してアプリに H5 ページをロードします。H5 ページがインターフェイスを正常に要求すると、支払いリンクがアプリに送信され、アプリは Alipay または WeChat の支払いインターフェイスを呼び出して、最終的な支払い操作を完了します。

  1. スキームを使用して Alipay の支払いインターフェイスを呼び出すと、
    支払いスキーム: 「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. WeChat は H5 決済機能を有効にしていないが、アプリ内で WeChat 決済の SDK にアクセスしたくないため、次のような終了ソリューションがあります。

    1. 支払いリンクから QR コード画像を生成し、インターフェースに表示します。

    2. ユーザーが QR コードを長押しすると、生成された画像が携帯電話のアルバムに保存されます。

    3. 写真が保存されたら、WeChat のスキャン インターフェイスを開きます

    4. ユーザーは、WeChat 上のフォトアルバムにある QR コードをスキャンするだけで支払いができるようになりました。

    キーコードは次のとおりです。コメントはすでに非常に詳細に記載されています

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

最後に、Alipayの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"//支付宝内付款码声波付

おすすめ

転載: blog.csdn.net/jiabaokang/article/details/126162891