700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android端 支付宝微信H5支付调用

Android端 支付宝微信H5支付调用

时间:2019-12-07 15:04:50

相关推荐

Android端 支付宝微信H5支付调用

一、支付宝H5支付调用

支付宝H5支付官方开发文档

代码示例:

step1://传入支付宝支付所需url,跳转到webview页面ali_pay.setOnClickListener {val aliUrl = "https://secure./pay/pay/prepayAlipay"startActivity(Intent(this, TestPayActivity::class.java).putExtra("url", aliUrl))}

step2:【Webview页面】@SuppressLint("SetJavaScriptEnabled")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_test_pay)btn_back.setOnClickListener { finish() }webview.settings.apply {javaScriptEnabled = truelayoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMNallowFileAccess = truedomStorageEnabled = trueloadsImagesAutomatically = true}webview.webChromeClient = WebChromeClient()var platformapiUrl = "" //记录支付宝startApp的url信息,用以点击“继续支付”时再次唤起//在webview的webViewClient中做如下配置webview.webViewClient = object : WebViewClient() {override fun shouldOverrideUrlLoading(view: WebView?, reloadUrl: String?): Boolean {Log.e(TAG, "reloadUrl======$reloadUrl")//*******************test ali pay************************************************************/*此处应添加支付宝是否安装的验证,不然跳转会引发崩溃*///唤起支付宝appif (reloadUrl.startsWith("alipays://platformapi/startApp")) {platformapiUrl = reloadUrlval intent = Intent(Intent.ACTION_VIEW, Uri.parse(reloadUrl))startActivity(intent)}//网页上点击了"继续支付"if (reloadUrl.startsWith("/h5Continue.htm?")) {val intent = Intent(Intent.ACTION_VIEW, Uri.parse(platformapiUrl))startActivity(intent)}//*******************test ali pay************************************************************return false}override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {//处理数字证书,为方便调试设置为全部允许handler!!.proceed()}}//first loadval url = intent.getStringExtra("url")Log.e(TAG, "url======$url")webview.loadUrl(url)}

二、微信H5支付调用

微信H5支付官方开发文档

代码示例:

step1://传入微信支付所需url,跳转到webview页面wx_pay.setOnClickListener {val wxUrl = "https://secure./pay/pay/prepayWx"startActivity(Intent(this, TestPayActivity::class.java).putExtra("url", wxUrl))}

step2:【Webview页面】@SuppressLint("SetJavaScriptEnabled")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_test_pay)btn_back.setOnClickListener { finish() }webview.settings.apply {javaScriptEnabled = truelayoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMNallowFileAccess = truedomStorageEnabled = trueloadsImagesAutomatically = true}webview.webChromeClient = WebChromeClient()var num = 0 //控制wxUrl加载的次数webview.webViewClient = object : WebViewClient() {override fun shouldOverrideUrlLoading(view: WebView?, reloadUrl: String?): Boolean {Log.e(TAG, "reloadUrl======$reloadUrl")//*******************test wx pay*************************************************************/*此处应添加微信是否安装的验证*///唤起微信appif (reloadUrl!!.startsWith("weixin://wap/pay")) {val intent = Intent(Intent.ACTION_VIEW, Uri.parse(reloadUrl))startActivity(intent)}//微信支付信息url加上Referer并重新加载获取唤起urlif (reloadUrl.startsWith("")) {if (("4.4.3" == android.os.Build.VERSION.RELEASE) ||("4.4.4" == android.os.Build.VERSION.RELEASE)) {//兼容这两个版本设置referer无效的问题if (num < 1) {view!!.loadDataWithBaseURL("","<script>window.location.href=\"$reloadUrl\";</script>","text/html", "utf-8", null)num++}} else {val extraHeaders = HashMap<String, String>()extraHeaders["Referer"] = ""if (num < 1) {//second reloadview!!.loadUrl(reloadUrl, extraHeaders)Log.e(TAG, "extraHeaders======${extraHeaders.size}")num++}}}//*******************test wx pay*************************************************************return false}override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {handler!!.proceed()}}//first loadval url = intent.getStringExtra("url")Log.e(TAG, "url======$url")webview.loadUrl(url)}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。