一、申请各种账号
1、申请公司的商户号
2、商户名称
3、H5支付的域名(可申请多个 5个上限)
二、核心代码
class WXPayByWebViewActivity : BaseActivity() {
var payUrl: String? = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_wxpay_by_web_view)
payUrl = intent.getStringExtra("payUrl")
initView()
}
var urlJump: String? = ""
@SuppressLint("SetJavaScriptEnabled")
private fun initView() {
val map = HashMap<String, String>()
map.put("Referer", ServerConfig.NEW_HOST)
val settings = webview.settings
settings.javaScriptEnabled = true
settings.defaultTextEncodingName = "UTF-8"
settings.javaScriptCanOpenWindowsAutomatically = true
webview.webChromeClient = WebChromeClient()
val webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, request: String): Boolean {
urlJump = request
// XLog.i("--", request)
if (request.startsWith("weixin://wap/pay?") || request.startsWith("gree://t_new.yunfanfamily.com")) {
EventBus.getDefault().post(PullOrderActivityEvent())
val intent = Intent()
intent.action = Intent.ACTION_VIEW
intent.data = Uri.parse(request)
startActivity(intent)
return true
} else {
val extraHeaders = HashMap<String, String>()
extraHeaders.put("Referer", ServerConfig.NEW_HOST)
view!!.loadUrl(request, extraHeaders)
}
return true
}
override fun onPageFinished(view: WebView?, url: String?) {
}
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
handler!!.proceed()
}
}
webview.webViewClient = webViewClient
webview.loadUrl(payUrl, map)
}
/**
* 网页回退
*/
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//不作处理
return true
}
return super.onKeyDown(keyCode, event)
}
override fun onDestroy() {
webview.destroy()
super.onDestroy()
}
}
后台返回的url并且拼接的支付失败成功的链接