Commit b6deec5d authored by shiyl's avatar shiyl

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

parent 243423a4
...@@ -15,6 +15,8 @@ class ZapServiceActionConstants { ...@@ -15,6 +15,8 @@ class ZapServiceActionConstants {
const val ActionRequestSmsCode = "ActionRequestSmsCode" const val ActionRequestSmsCode = "ActionRequestSmsCode"
// 通过服务清除内存中的认证数据 // 通过服务清除内存中的认证数据
const val ActionClearAuthenticationData = "ActionClearAuthenticationData" const val ActionClearAuthenticationData = "ActionClearAuthenticationData"
// 进行支付
const val ActionToPay = "ActionToPay"
} }
} }
...@@ -15,6 +15,8 @@ class ZapServiceNameConstants { ...@@ -15,6 +15,8 @@ class ZapServiceNameConstants {
const val GeneralAbilityService = "GeneralAbilityService" const val GeneralAbilityService = "GeneralAbilityService"
// BGeneralBusiness组件中给H5提供的通用网络请求服务(名称需要和H5同步的) // BGeneralBusiness组件中给H5提供的通用网络请求服务(名称需要和H5同步的)
const val BNAHttpReq = "BNAHttpReq" const val BNAHttpReq = "BNAHttpReq"
// BOrder组件中给H5提供的支付服务(名称需要和H5同步的)
const val BPayService = "bPayService"
} }
......
...@@ -64,6 +64,4 @@ dependencies { ...@@ -64,6 +64,4 @@ dependencies {
testImplementation rootProject.ext.dependencies.testImplementation testImplementation rootProject.ext.dependencies.testImplementation
androidTestImplementation rootProject.ext.dependencies.androidTestImplementation 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 @@ ...@@ -3,29 +3,4 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="com.yidian.shenghuoquan.border"> 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> </manifest>
\ No newline at end of file
package com.yidian.shenghuoquan.border.app 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 @@ ...@@ -2,11 +2,33 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yidian.shenghuoquan.bxbirdbusiness"> 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> <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 <activity
android:name="com.yidian.shenghuoquan.bxbirdbusiness.ui.CommonWebViewActivity" android:name="com.yidian.shenghuoquan.bxbirdbusiness.ui.CommonWebViewActivity"
android:windowSoftInputMode="adjustPan" /> android:windowSoftInputMode="adjustPan" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -3,12 +3,15 @@ package com.yidian.shenghuoquan.bxbirdbusiness.app ...@@ -3,12 +3,15 @@ package com.yidian.shenghuoquan.bxbirdbusiness.app
import android.content.Intent import android.content.Intent
import com.yidian.bcommon.constant.XRouterPathConstants import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.app.YdBaseApplication import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.services.ZapServiceNameConstants
import com.yidian.news.util.ProcessUtil import com.yidian.news.util.ProcessUtil
import com.yidian.shenghuoquan.bxbirdbusiness.service.BPayService
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
import com.yidian.xpage.node.XPageHandler import com.yidian.xpage.node.XPageHandler
import com.yidian.xpage.node.XPageNode import com.yidian.xpage.node.XPageNode
import com.yidian.xpage.node.XPageNodePageType import com.yidian.xpage.node.XPageNodePageType
import com.yidian.yac.core.core.YacModuleSpec import com.yidian.yac.core.core.YacModuleSpec
import com.yidian.yac.core.zap.Zap
import timber.log.Timber import timber.log.Timber
@YacModuleSpec @YacModuleSpec
...@@ -43,6 +46,7 @@ class XBirdBusinessApplication : YdBaseApplication() { ...@@ -43,6 +46,7 @@ class XBirdBusinessApplication : YdBaseApplication() {
} }
private fun initService() { 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.bcommon.services.ZapServiceActionConstants
import com.yidian.shenghuoquan.bxbirdbusiness.ui.CommonWebViewActivity
import com.yidian.xarc.xrouter.ResultResolver import com.yidian.xarc.xrouter.ResultResolver
import com.yidian.yac.core.zap.ZapService import com.yidian.yac.core.zap.ZapService
import org.json.JSONObject import org.json.JSONObject
...@@ -32,9 +33,8 @@ class BPayService : ZapService() { ...@@ -32,9 +33,8 @@ class BPayService : ZapService() {
private fun transferPayment(params: JSONObject) { private fun transferPayment(params: JSONObject) {
val payChannel = params.optString("payChannel") val payChannel = params.optString("payChannel")
val charge = params.optString("data") val charge = params.optString("data")
// 通过XBrid中的服务,进行调起支付,并返回支付结果 // 进行调起支付,并返回支付结果
CommonWebViewActivity.transferPayment(charge, resolver)
} }
} }
package com.yidian.shenghuoquan.bxbirdbusiness.ui package com.yidian.shenghuoquan.bxbirdbusiness.ui
import android.content.Intent
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
import android.webkit.WebView import android.webkit.WebView
import androidx.activity.viewModels 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.XBirdPageConstants
import com.yidian.bcommon.constant.XRouterPathConstants import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.extensions.initTitleBar import com.yidian.bcommon.extensions.initTitleBar
...@@ -13,9 +16,11 @@ import com.yidian.shenghuoquan.bxbirdbusiness.R ...@@ -13,9 +16,11 @@ import com.yidian.shenghuoquan.bxbirdbusiness.R
import com.yidian.shenghuoquan.bxbirdbusiness.databinding.XbridActivityCommonWebViewBinding import com.yidian.shenghuoquan.bxbirdbusiness.databinding.XbridActivityCommonWebViewBinding
import com.yidian.xarc.xbrid.XBridManager import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView import com.yidian.xarc.xbrid.XWebView
import com.yidian.xarc.xrouter.ResultResolver
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
import com.yidian.xpage.XPageViewProtocol import com.yidian.xpage.XPageViewProtocol
import timber.log.Timber import timber.log.Timber
import kotlin.isInitialized as isInitialized1
/** /**
...@@ -88,7 +93,7 @@ class CommonWebViewActivity : BaseMvvmActivity<XbridActivityCommonWebViewBinding ...@@ -88,7 +93,7 @@ class CommonWebViewActivity : BaseMvvmActivity<XbridActivityCommonWebViewBinding
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
if (::webView.isInitialized) { if (::webView.isInitialized1) {
XBridManager.backWebView(webView) XBridManager.backWebView(webView)
} }
} }
...@@ -113,4 +118,38 @@ class CommonWebViewActivity : BaseMvvmActivity<XbridActivityCommonWebViewBinding ...@@ -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 { ...@@ -29,6 +29,8 @@ allprojects {
maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url "http://dailybuild2.yidian-inc.com:8088/repository/maven-public/" }
google() google()
mavenCentral() mavenCentral()
jcenter() jcenter()
......
...@@ -66,8 +66,6 @@ ext.dependencies = [ ...@@ -66,8 +66,6 @@ ext.dependencies = [
'androidx.lifecycle:lifecycle-livedata-ktx:2.3.0', 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.0',
'androidx.lifecycle:lifecycle-extensions:2.2.0', 'androidx.lifecycle:lifecycle-extensions:2.2.0',
'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.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 // 日志 https://github.com/JakeWharton/timber
'com.jakewharton.timber:timber:4.7.1', 'com.jakewharton.timber:timber:4.7.1',
...@@ -77,15 +75,9 @@ ext.dependencies = [ ...@@ -77,15 +75,9 @@ ext.dependencies = [
'com.scwang.smart:refresh-footer-classics:2.0.1', 'com.scwang.smart:refresh-footer-classics:2.0.1',
"androidx.recyclerview:recyclerview:1.1.0", "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:CommonUtil:0.0.88',
'com.yidian.android:nightmode:0.0.88', 'com.yidian.android:nightmode:0.0.88',
'com.yidian.xarc:xevent:0.0.3', 'com.yidian.xarc:xevent:0.0.3',
'com.google.zxing:core:3.4.0',
'id.zelory:compressor:3.0.0',
// 风控SDK // 风控SDK
'com.yidian.ftcomponents:ftdevicefinger:0.0.14', 'com.yidian.ftcomponents:ftdevicefinger:0.0.14',
// 应用升级SDK // 应用升级SDK
...@@ -128,11 +120,10 @@ ext.dependencies = [ ...@@ -128,11 +120,10 @@ ext.dependencies = [
'io.reactivex.rxjava3:rxjava:3.0.9', 'io.reactivex.rxjava3:rxjava:3.0.9',
'com.yidian.framework.mobile:ydhttp:1.1.3-SNAPSHOT', 'com.yidian.framework.mobile:ydhttp:1.1.3-SNAPSHOT',
'com.yidian.framework.mobile:ydutils:1.0.1-SNAPSHOT', 'com.yidian.framework.mobile:ydutils:1.0.1-SNAPSHOT',
// 磐石
'com.yidian.framework.mobile:xdiamond:1.0.8', 'com.yidian.framework.mobile:xdiamond:1.0.8',
// 慧眼 // 慧眼
'com.yidian.framework.mobile.xinsight:xinsight:1.1.7', 'com.yidian.framework.mobile.xinsight:xinsight:1.1.7',
'com.loopj.android:android-async-http:1.4.9',
// 屏幕适配 // 屏幕适配
'me.jessyan:autosize:1.2.1', 'me.jessyan:autosize:1.2.1',
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper //https://github.com/CymChad/BaseRecyclerViewAdapterHelper
...@@ -140,12 +131,16 @@ ext.dependencies = [ ...@@ -140,12 +131,16 @@ ext.dependencies = [
// PictureSelector2.0 https://github.com/LuckSiege/PictureSelector // PictureSelector2.0 https://github.com/LuckSiege/PictureSelector
'io.github.lucksiege:pictureselector:v2.7.3-rc05', 'io.github.lucksiege:pictureselector:v2.7.3-rc05',
// Compressor https://github.com/zetbaitsu/Compressor // 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 : [ other : [
':CommonLib:BCommon' ':CommonLib:BCommon'
], ],
video : 'com.yidian.framework.mobile:ydvideo:1.0.0-SNAPSHOT',
androidTestImplementation: [ androidTestImplementation: [
'androidx.test.ext:junit:1.1.2', 'androidx.test.ext:junit:1.1.2',
'androidx.test.espresso:espresso-core:3.3.0' '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