diff --git a/.gradle/8.13/executionHistory/executionHistory.bin b/.gradle/8.13/executionHistory/executionHistory.bin
index fddc89e..eb4f153 100644
Binary files a/.gradle/8.13/executionHistory/executionHistory.bin and b/.gradle/8.13/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.13/executionHistory/executionHistory.lock b/.gradle/8.13/executionHistory/executionHistory.lock
index f172ccf..96791ab 100644
Binary files a/.gradle/8.13/executionHistory/executionHistory.lock and b/.gradle/8.13/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.13/fileHashes/fileHashes.bin b/.gradle/8.13/fileHashes/fileHashes.bin
index dd35c72..3c9fc3d 100644
Binary files a/.gradle/8.13/fileHashes/fileHashes.bin and b/.gradle/8.13/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.13/fileHashes/fileHashes.lock b/.gradle/8.13/fileHashes/fileHashes.lock
index cba1220..ffa1c49 100644
Binary files a/.gradle/8.13/fileHashes/fileHashes.lock and b/.gradle/8.13/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.13/fileHashes/resourceHashesCache.bin b/.gradle/8.13/fileHashes/resourceHashesCache.bin
index e548c24..e0a32d9 100644
Binary files a/.gradle/8.13/fileHashes/resourceHashesCache.bin and b/.gradle/8.13/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 9d70a37..ee47643 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 66076b4..3795851 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
deleted file mode 100644
index 4d3d6d9..0000000
--- a/.idea/caches/deviceStreaming.xml
+++ /dev/null
@@ -1,2289 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/ck/ckcollar/app/action/ActionCode.kt b/app/src/main/java/com/ck/ckcollar/app/action/ActionCode.kt
index 83e0bc2..b83aca7 100644
--- a/app/src/main/java/com/ck/ckcollar/app/action/ActionCode.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/action/ActionCode.kt
@@ -155,6 +155,7 @@ object ActionCode {
"找回支付密码" -> url = "/app/setting/payPassword/reset"
"查询支付密码状态" -> url = "/app/setting/payPassword/status"
"订单支付" -> url = "/app/order/pay"
+ "取消待支付订单" -> url = "/app/order/cancelPending"
"修改个人信息" -> url = "/app/profile/update"
@@ -178,6 +179,7 @@ object ActionCode {
"绑定微信" -> url = "/app/profile/wx/bind"
+
}
TTLog.e(url)
return url;
diff --git a/app/src/main/java/com/ck/ckcollar/app/model/WithDrawModel.kt b/app/src/main/java/com/ck/ckcollar/app/model/WithDrawModel.kt
index 5471368..8c82f44 100644
--- a/app/src/main/java/com/ck/ckcollar/app/model/WithDrawModel.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/model/WithDrawModel.kt
@@ -4,4 +4,10 @@ class WithDrawModel {
var amount :String? = ""
var payMethod :String? = ""
-}
\ No newline at end of file
+ var authPackageInfo :String? = null
+ var thirdOrderNo :String? = null
+ var outBillNo :String? = null
+ var mchId :String? = null
+ var appId :String? = null
+ var needConfirm :Boolean = false
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/RechargeActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/RechargeActivity.kt
index 44c5291..93ad7e8 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/RechargeActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/RechargeActivity.kt
@@ -108,7 +108,7 @@ class RechargeActivity : CKBaseActivity() {
GlobalScope.launch(Dispatchers.IO){
// [支付宝沙箱测试] 仅 Debug 包启用,Release 包继续使用正式环境。
if (applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE != 0) {
- EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
+// EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
}
val alipay = PayTask(this@RechargeActivity)
val result = alipay.payV2(model?.orderStr, true)
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt
index e05e146..c12a4fb 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/WithDrawActivity.kt
@@ -20,11 +20,17 @@ import com.google.gson.Gson
import com.gyf.immersionbar.ImmersionBar
import com.tt.kit.model.Data
import com.tt.kit.model.DataCollection
+import com.tt.kit.utils.LiveDataBus
+import com.tencent.mm.opensdk.modelbiz.WXOpenBusinessView
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
+import com.ck.ckcollar.app.utils.Const
+import java.net.URLEncoder
import java.math.BigDecimal
class WithDrawActivity : CKLHBaseActionBarActivity() {
lateinit var binding: ActivityWithdrawBinding
var model : BalanceModle? = null
+ private var pendingWithdraw: WithDrawModel? = null
var payType = "0"
override fun onCreate(savedInstanceState: Bundle?) {
@@ -39,6 +45,14 @@ class WithDrawActivity : CKLHBaseActionBarActivity() {
}
override fun initView() {
+ LiveDataBus.get().with(WX_WITHDRAW_RESULT, Int::class.java).observe(this) { resultCode ->
+ val withdraw = pendingWithdraw ?: return@observe
+ if (resultCode == 0) {
+ showWithdrawSuccess(withdraw)
+ } else {
+ toast(if (resultCode == -2) "已取消微信收款确认" else "微信提现确认失败")
+ }
+ }
binding.btnAli.setOnClickListener {
binding.image1.setImageResource(R.mipmap.image_address_check_select)
@@ -91,14 +105,13 @@ class WithDrawActivity : CKLHBaseActionBarActivity() {
add(TTRequestData("payType", payType))
}, object : ICallback {
override fun onSuccess(data: String) {
-
- var model = Gson().fromJson(data, WithDrawModel::class.java)
- toActivity(WithDrawSuccessActivity::class.java, DataCollection().apply {
- add(Data("data", Gson().toJson(model)))
-
- })
-
- finish()
+ val withdraw = Gson().fromJson(data, WithDrawModel::class.java)
+ pendingWithdraw = withdraw
+ if (withdraw.needConfirm && "0" == payType) {
+ openWeChatTransferConfirm(withdraw)
+ } else {
+ showWithdrawSuccess(withdraw)
+ }
}
@@ -110,6 +123,52 @@ class WithDrawActivity : CKLHBaseActionBarActivity() {
}
+ private fun openWeChatTransferConfirm(withdraw: WithDrawModel) {
+ val mchId = withdraw.mchId
+ val appId = withdraw.appId
+ val packageInfo = withdraw.authPackageInfo
+ if (mchId.isNullOrBlank() || appId.isNullOrBlank() || packageInfo.isNullOrBlank()) {
+ toast("微信收款确认参数不完整")
+ return
+ }
+ if (appId != Const.WX_APP_ID) {
+ toast("微信支付 AppID 不匹配")
+ return
+ }
+
+ val api = WXAPIFactory.createWXAPI(this, Const.WX_APP_ID, true)
+ api.registerApp(Const.WX_APP_ID)
+ if (!api.isWXAppInstalled) {
+ toast("请先安装微信")
+ return
+ }
+ if (api.wxAppSupportAPI < 0x28002d33) {
+ toast("当前微信版本过低,请升级微信")
+ return
+ }
+
+ val request = WXOpenBusinessView.Req().apply {
+ businessType = "requestMerchantTransfer"
+ query = "mchId=${URLEncoder.encode(mchId, "UTF-8")}" +
+ "&appId=${URLEncoder.encode(appId, "UTF-8")}" +
+ "&package=${URLEncoder.encode(packageInfo, "UTF-8")}"
+ }
+ if (!api.sendReq(request)) {
+ toast("微信收款确认页拉起失败")
+ }
+ }
+
+ private fun showWithdrawSuccess(withdraw: WithDrawModel) {
+ toActivity(WithDrawSuccessActivity::class.java, DataCollection().apply {
+ add(Data("data", Gson().toJson(withdraw)))
+ })
+ finish()
+ }
+
+ companion object {
+ const val WX_WITHDRAW_RESULT = "wx_withdraw_result"
+ }
+
fun getBalanceInfo(){
TTHttpClient.get(this,"余额", TTRequestParam(),object : ICallback{
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/member/OpenMemberActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/member/OpenMemberActivity.kt
index f506378..62a22a2 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/member/OpenMemberActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/member/OpenMemberActivity.kt
@@ -242,7 +242,7 @@ class OpenMemberActivity : CKLHBaseActionBarActivity() {
GlobalScope.launch(Dispatchers.IO){
// [支付宝沙箱测试] 仅 Debug 包启用,Release 包继续使用正式环境。
if (applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE != 0) {
- EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
+// EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
}
val alipay = PayTask(this@OpenMemberActivity)
val result = alipay.payV2(orderStr, true)
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt
index 1f8c627..fe47b80 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/order/PayOrderActivity.kt
@@ -411,7 +411,7 @@ class PayOrderActivity : CKBaseActivity() {
GlobalScope.launch(Dispatchers.IO) {
// [支付宝沙箱测试] 仅 Debug 包启用,Release 包继续使用正式环境。
if (applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE != 0) {
- EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
+// EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
}
val alipay = PayTask(this@PayOrderActivity)
val result = alipay.payV2(orderStr, true)
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt
index 0729fe8..0b5904b 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/OrderActivity.kt
@@ -337,6 +337,7 @@ class OrderActivity : CKBaseActivity() {
toActivity(OrderSuccessActivity::class.java, DataCollection())
finish()
+
}
@@ -361,7 +362,7 @@ class OrderActivity : CKBaseActivity() {
// [支付宝沙箱测试] 仅 Debug 包启用,Release 包继续使用正式环境。
if (applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE != 0) {
- EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
+// EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX)
}
val alipay = PayTask(this@OrderActivity)
val result = alipay.payV2(orderStr, true)
diff --git a/app/src/main/java/com/ck/ckcollar/app/utils/networkone/TTHttpClient.kt b/app/src/main/java/com/ck/ckcollar/app/utils/networkone/TTHttpClient.kt
index 19928fd..5c9aea7 100644
--- a/app/src/main/java/com/ck/ckcollar/app/utils/networkone/TTHttpClient.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/utils/networkone/TTHttpClient.kt
@@ -78,7 +78,9 @@ object TTHttpClient {
val string = response.body?.string()
string?.let { TTLog.e("response", actionCode + "====" + it) }
var model = JSONObject(string)
- if (isSusscee(model)) {
+ // A withdrawal code of 201 means the transfer bill was created
+ // and the client must continue with WeChat confirmation.
+ if (isSusscee(model) || (actionCode == "提现" && getCode(model) == "201")) {
activity.runOnUiThread {
activity.hiddenProgeassDialog()
iCallback.onSuccess(getData(model))
@@ -137,7 +139,10 @@ object TTHttpClient {
val string = response.body?.string()
string?.let { TTLog.e("response", actionCode + "====" + it) }
var model = JSONObject(string)
- if (isSusscee(model)) {
+ // code 201 means the withdrawal bill was created and the
+ // client must continue with WeChat confirmation. Keep the
+ // response data available to the withdrawal screen.
+ if (isSusscee(model) || (actionCode == "提现" && getCode(model) == "201")) {
activity.runOnUiThread {
activity.hiddenProgeassDialog()
iCallback.onSuccess(getData(model))
diff --git a/app/src/main/java/com/ck/ckcollar/app/wxapi/WXEntryActivity.kt b/app/src/main/java/com/ck/ckcollar/app/wxapi/WXEntryActivity.kt
index 92f5272..9bfac87 100644
--- a/app/src/main/java/com/ck/ckcollar/app/wxapi/WXEntryActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/wxapi/WXEntryActivity.kt
@@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Intent
import android.os.Bundle
import com.ck.ckcollar.app.CKApp
+import com.ck.ckcollar.app.ui.act.balance.WithDrawActivity
import com.ck.ckcollar.app.ui.act.login.LoginActivity
import com.ck.ckcollar.app.ui.act.user.UserInfoActivity
import com.ck.ckcollar.app.utils.Const
@@ -15,6 +16,7 @@ import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.tt.kit.utils.TTLog
+import com.tt.kit.utils.LiveDataBus
class WXEntryActivity : Activity(), IWXAPIEventHandler {
@@ -43,6 +45,13 @@ class WXEntryActivity : Activity(), IWXAPIEventHandler {
}
override fun onResp(resp: BaseResp?) {
+ if (resp?.type == ConstantsAPI.COMMAND_OPEN_BUSINESS_VIEW) {
+ LiveDataBus.get()
+ .with(WithDrawActivity.WX_WITHDRAW_RESULT)
+ .value = resp.errCode
+ finish()
+ return
+ }
if (resp!!.getType() === ConstantsAPI.COMMAND_SENDAUTH) {
val authResp = resp as SendAuth.Resp
val code = authResp.code
@@ -59,4 +68,4 @@ class WXEntryActivity : Activity(), IWXAPIEventHandler {
}
finish()
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/wxapi/WXPayEntryActivity.kt b/app/src/main/java/com/ck/ckcollar/app/wxapi/WXPayEntryActivity.kt
index 83fc80b..10e8e54 100644
--- a/app/src/main/java/com/ck/ckcollar/app/wxapi/WXPayEntryActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/wxapi/WXPayEntryActivity.kt
@@ -8,6 +8,8 @@ import com.ck.ckcollar.app.ui.act.balance.RechargeActivity
import com.ck.ckcollar.app.utils.Const
import com.tencent.mm.opensdk.modelbase.BaseReq
import com.tencent.mm.opensdk.modelbase.BaseResp
+import com.tencent.mm.opensdk.constants.ConstantsAPI
+import com.ck.ckcollar.app.ui.act.balance.WithDrawActivity
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler
import com.tencent.mm.opensdk.openapi.WXAPIFactory
@@ -32,6 +34,11 @@ class WXPayEntryActivity : Activity(), IWXAPIEventHandler {
override fun onResp(resp: BaseResp?) {
val resultCode = resp?.errCode ?: -1
+ if (resp?.type == ConstantsAPI.COMMAND_OPEN_BUSINESS_VIEW) {
+ LiveDataBus.get().with(WithDrawActivity.WX_WITHDRAW_RESULT).value = resultCode
+ finish()
+ return
+ }
val message = when (resultCode) {
BaseResp.ErrCode.ERR_OK -> "微信支付成功"
BaseResp.ErrCode.ERR_USER_CANCEL -> "已取消微信支付"
diff --git a/app/src/main/res/layout/activity_withdraw.xml b/app/src/main/res/layout/activity_withdraw.xml
index 385fcc7..a6e0c4f 100644
--- a/app/src/main/res/layout/activity_withdraw.xml
+++ b/app/src/main/res/layout/activity_withdraw.xml
@@ -183,7 +183,7 @@
android:layout_marginTop="50dp"
android:background="@drawable/bg_login_button"
android:text="@string/apply_withdraw"
- android:textColor="@color/buttonTextColor">
+ android:textColor="@color/buttonTextColor"/>
diff --git a/app/src/main/res/layout/include_no_result_layout.xml b/app/src/main/res/layout/include_no_result_layout.xml
index 3e54bc1..95a5665 100644
--- a/app/src/main/res/layout/include_no_result_layout.xml
+++ b/app/src/main/res/layout/include_no_result_layout.xml
@@ -9,19 +9,19 @@
android:layout_marginTop="200dp">
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/icon_no_result.png b/app/src/main/res/mipmap-hdpi/icon_no_result.png
deleted file mode 100644
index d48c042..0000000
Binary files a/app/src/main/res/mipmap-hdpi/icon_no_result.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_no_result.png b/app/src/main/res/mipmap-xxhdpi/icon_no_result.png
new file mode 100644
index 0000000..78afa8f
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_no_result.png differ