Commit b6deec5d authored by shiyl's avatar shiyl

在XBridBusiness组件集成ping++,支持H5的支付能力

parent 243423a4
......@@ -15,6 +15,8 @@ class ZapServiceActionConstants {
const val ActionRequestSmsCode = "ActionRequestSmsCode"
// 通过服务清除内存中的认证数据
const val ActionClearAuthenticationData = "ActionClearAuthenticationData"
// 进行支付
const val ActionToPay = "ActionToPay"
}
}
......@@ -15,6 +15,8 @@ class ZapServiceNameConstants {
const val GeneralAbilityService = "GeneralAbilityService"
// BGeneralBusiness组件中给H5提供的通用网络请求服务(名称需要和H5同步的)
const val BNAHttpReq = "BNAHttpReq"
// BOrder组件中给H5提供的支付服务(名称需要和H5同步的)
const val BPayService = "bPayService"
}
......
......@@ -64,6 +64,4 @@ dependencies {
testImplementation rootProject.ext.dependencies.testImplementation
androidTestImplementation rootProject.ext.dependencies.androidTestImplementation
implementation 'com.pingxx:pingpp-android:2.3.5' // (Ping++ 标准版 SDK) 必须添加
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9' // 使用微信支付时添加,具体版本参考微信官方文档
}
\ No newline at end of file
......@@ -3,29 +3,4 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.yidian.shenghuoquan.border">
<!-- ping++权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>-->
<!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>-->
<!-- 银联需要的权限 -->
<!-- <uses-permission android:name="android.permission.NFC"/>-->
<application>
<!-- Ping++ sdk -->
<activity
android:name="com.pingplusplus.android.PaymentActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<!-- 微信支付 sdk ,也是 Ping++ sdk 调用入口 -->
<activity-alias
android:name="${applicationId}.wxapi.WXPayEntryActivity"
android:exported="true"
android:targetActivity="com.pingplusplus.android.PaymentActivity" />
</application>
</manifest>
\ No newline at end of file
package com.yidian.shenghuoquan.border.app
class BOrderApplication {
import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.yac.core.core.YacModuleSpec
@YacModuleSpec
class BOrderApplication: YdBaseApplication() {
}
......@@ -2,11 +2,33 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yidian.shenghuoquan.bxbirdbusiness">
<!-- ping++权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>-->
<!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>-->
<!-- 银联需要的权限 -->
<!-- <uses-permission android:name="android.permission.NFC"/>-->
<application>
<!-- Ping++ sdk -->
<activity
android:name="com.pingplusplus.android.PaymentActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<!-- 微信支付 sdk ,也是 Ping++ sdk 调用入口 -->
<activity-alias
android:name="${applicationId}.wxapi.WXPayEntryActivity"
android:exported="true"
android:targetActivity="com.pingplusplus.android.PaymentActivity" />
<activity
android:name="com.yidian.shenghuoquan.bxbirdbusiness.ui.CommonWebViewActivity"
android:windowSoftInputMode="adjustPan" />
</application>
</manifest>
\ No newline at end of file
......@@ -3,12 +3,15 @@ package com.yidian.shenghuoquan.bxbirdbusiness.app
import android.content.Intent
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.services.ZapServiceNameConstants
import com.yidian.news.util.ProcessUtil
import com.yidian.shenghuoquan.bxbirdbusiness.service.BPayService
import com.yidian.xpage.XPageManager
import com.yidian.xpage.node.XPageHandler
import com.yidian.xpage.node.XPageNode
import com.yidian.xpage.node.XPageNodePageType
import com.yidian.yac.core.core.YacModuleSpec
import com.yidian.yac.core.zap.Zap
import timber.log.Timber
@YacModuleSpec
......@@ -43,6 +46,7 @@ class XBirdBusinessApplication : YdBaseApplication() {
}
private fun initService() {
Zap.addService(ZapServiceNameConstants.BPayService, BPayService())
}
}
package com.yidian.shenghuoquan.border.service
package com.yidian.shenghuoquan.bxbirdbusiness.service
import com.yidian.bcommon.services.ZapServiceActionConstants
import com.yidian.shenghuoquan.bxbirdbusiness.ui.CommonWebViewActivity
import com.yidian.xarc.xrouter.ResultResolver
import com.yidian.yac.core.zap.ZapService
import org.json.JSONObject
......@@ -32,9 +33,8 @@ class BPayService : ZapService() {
private fun transferPayment(params: JSONObject) {
val payChannel = params.optString("payChannel")
val charge = params.optString("data")
// 通过XBrid中的服务,进行调起支付,并返回支付结果
// 进行调起支付,并返回支付结果
CommonWebViewActivity.transferPayment(charge, resolver)
}
}
package com.yidian.shenghuoquan.bxbirdbusiness.ui
import android.content.Intent
import android.webkit.WebChromeClient
import android.webkit.WebView
import androidx.activity.viewModels
import com.pingplusplus.android.Pingpp
import com.pingplusplus.android.Pingpp.REQUEST_CODE_PAYMENT
import com.yidian.bcommon.constant.XBirdPageConstants
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.extensions.initTitleBar
......@@ -13,9 +16,11 @@ import com.yidian.shenghuoquan.bxbirdbusiness.R
import com.yidian.shenghuoquan.bxbirdbusiness.databinding.XbridActivityCommonWebViewBinding
import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView
import com.yidian.xarc.xrouter.ResultResolver
import com.yidian.xpage.XPageManager
import com.yidian.xpage.XPageViewProtocol
import timber.log.Timber
import kotlin.isInitialized as isInitialized1
/**
......@@ -88,7 +93,7 @@ class CommonWebViewActivity : BaseMvvmActivity<XbridActivityCommonWebViewBinding
override fun onDestroy() {
super.onDestroy()
if (::webView.isInitialized) {
if (::webView.isInitialized1) {
XBridManager.backWebView(webView)
}
}
......@@ -113,4 +118,38 @@ class CommonWebViewActivity : BaseMvvmActivity<XbridActivityCommonWebViewBinding
}
}
companion object {
var resolver: ResultResolver? = null
val context by lazy { this }
/**
* 在H5页面调起支付
*/
fun transferPayment(charge: String, resolver: ResultResolver) {
this.resolver = resolver
Pingpp.createPayment(this, charge)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
//支付页面返回处理
if (requestCode == REQUEST_CODE_PAYMENT) {
if (resultCode == RESULT_OK) {
val result = data?.extras?.getString("pay_result")
/* 处理返回值
* "success" - 支付成功
* "fail" - 支付失败
* "cancel" - 取消支付
* "invalid" - 支付插件未安装(一般是微信客户端未安装的情况)
* "unknown" - app进程异常被杀死(一般是低内存状态下,app进程被杀死)
*/
val errorMsg = data?.extras?.getString("error_msg") // 错误信息
val extraMsg = data?.extras?.getString("extra_msg") // 错误信息
resolver?.success(result)
}
}
}
}
......@@ -29,6 +29,8 @@ allprojects {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url "http://dailybuild2.yidian-inc.com:8088/repository/maven-public/" }
google()
mavenCentral()
jcenter()
......
......@@ -66,8 +66,6 @@ ext.dependencies = [
'androidx.lifecycle:lifecycle-livedata-ktx:2.3.0',
'androidx.lifecycle:lifecycle-extensions:2.2.0',
'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0',
'jp.co.cyberagent.android:gpuimage:2.1.0',
'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9',
// 日志 https://github.com/JakeWharton/timber
'com.jakewharton.timber:timber:4.7.1',
......@@ -77,15 +75,9 @@ ext.dependencies = [
'com.scwang.smart:refresh-footer-classics:2.0.1',
"androidx.recyclerview:recyclerview:1.1.0",
'de.hdodenhof:circleimageview:3.1.0',
'com.github.chrisbanes:PhotoView:2.3.0',
// 'com.yidian.android:CommonComponent:0.0.88',
'com.yidian.android:CommonUtil:0.0.88',
'com.yidian.android:nightmode:0.0.88',
'com.yidian.xarc:xevent:0.0.3',
'com.google.zxing:core:3.4.0',
'id.zelory:compressor:3.0.0',
// 风控SDK
'com.yidian.ftcomponents:ftdevicefinger:0.0.14',
// 应用升级SDK
......@@ -128,11 +120,10 @@ ext.dependencies = [
'io.reactivex.rxjava3:rxjava:3.0.9',
'com.yidian.framework.mobile:ydhttp:1.1.3-SNAPSHOT',
'com.yidian.framework.mobile:ydutils:1.0.1-SNAPSHOT',
// 磐石
'com.yidian.framework.mobile:xdiamond:1.0.8',
// 慧眼
'com.yidian.framework.mobile.xinsight:xinsight:1.1.7',
'com.loopj.android:android-async-http:1.4.9',
// 屏幕适配
'me.jessyan:autosize:1.2.1',
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper
......@@ -140,12 +131,16 @@ ext.dependencies = [
// PictureSelector2.0 https://github.com/LuckSiege/PictureSelector
'io.github.lucksiege:pictureselector:v2.7.3-rc05',
// Compressor https://github.com/zetbaitsu/Compressor
'id.zelory:compressor:3.0.1'
'id.zelory:compressor:3.0.1',
// (Ping++ 标准版 SDK) 必须添加
'com.pingxx:pingpp-android:2.3.5',
// 使用微信支付时添加,具体版本参考微信官方文档
'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9'
],
other : [
':CommonLib:BCommon'
],
video : 'com.yidian.framework.mobile:ydvideo:1.0.0-SNAPSHOT',
androidTestImplementation: [
'androidx.test.ext:junit:1.1.2',
'androidx.test.espresso:espresso-core:3.3.0'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment