diff --git a/.gradle/8.13/executionHistory/executionHistory.bin b/.gradle/8.13/executionHistory/executionHistory.bin
index 1d05c8a..d906c06 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 a7ed870..075663f 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 6c98b6e..ed70413 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 b970a1d..33114e1 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 e951736..791c0c0 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 1a76699..4bb5f6d 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 484309e..5ce365f 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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 09ff73e..0ae6b8b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -67,6 +67,12 @@
android:launchMode="singleTask"
android:taskAffinity="com.ck.ckcollar.app"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
+
diff --git a/app/src/main/java/com/ck/ckcollar/app/model/MemberModel.kt b/app/src/main/java/com/ck/ckcollar/app/model/MemberModel.kt
index 87d06dc..dbf99a9 100644
--- a/app/src/main/java/com/ck/ckcollar/app/model/MemberModel.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/model/MemberModel.kt
@@ -10,6 +10,14 @@ class MemberModel {
var amount: Double = 0.0 // 金额
var payType: String? = "" // 支付方式
var orderNo: String? = "" // 订单编号
+ var timeStamp: String? = null // 微信支付时间戳
+ var packageVal: String? = null // 微信支付扩展字段
+ var paySign: String? = null // 微信支付签名
+ var appId: String? = null // 微信 AppID
+ var partnerId: String? = null // 微信支付商户号
+ var prepayId: String? = null // 微信预支付订单号
+ var signType: String? = null // 签名类型
+ var nonceStr: String? = null // 随机字符串
var order: MemberOrder? = null // 订单信息
class MemberOrder {
@@ -33,4 +41,4 @@ class MemberModel {
var updateTime: String? = "" // 更新时间
var userId: Int = 0 // 用户ID
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/model/PayOrderModel.kt b/app/src/main/java/com/ck/ckcollar/app/model/PayOrderModel.kt
index 5f40db5..c296cc6 100644
--- a/app/src/main/java/com/ck/ckcollar/app/model/PayOrderModel.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/model/PayOrderModel.kt
@@ -4,5 +4,13 @@ class PayOrderModel : CkBaseModel(){
var orderStr: String? = "" // 订单字符串
var amount: String? = "" // 金额
var orderNo: String? = "" // 订单编号
+ var timeStamp: String? = null // 微信支付时间戳
+ var packageVal: String? = null // 微信支付扩展字段
+ var paySign: String? = null // 微信支付签名
+ var appId: String? = null // 微信 AppID
+ var partnerId: String? = null // 微信支付商户号
+ var prepayId: String? = null // 微信预支付订单号
+ var signType: String? = null // 签名类型
+ var nonceStr: String? = null // 随机字符串
var info : String? = ""
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/model/RechargeModel.kt b/app/src/main/java/com/ck/ckcollar/app/model/RechargeModel.kt
index 5ef16e9..d6575b4 100644
--- a/app/src/main/java/com/ck/ckcollar/app/model/RechargeModel.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/model/RechargeModel.kt
@@ -1,7 +1,22 @@
package com.ck.ckcollar.app.model
class RechargeModel {
- var orderStr :String? = null
- var amount : Double? = null
+ // Alipay
+ var orderStr: String? = null
+
+ // Common
+ var amount: Double? = null
+ var orderNo: String? = null
+
+ // WeChat Pay
+ var timeStamp: String? = null
+ var packageVal: String? = null
+ var paySign: String? = null
+ var appId: String? = null
+ var partnerId: String? = null
+ var prepayId: String? = null
+ var signType: String? = null
+ var nonceStr: String? = null
+
var RC1782974779440000002 : String? = null
-}
\ No newline at end of file
+}
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 f18651a..44c5291 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
@@ -6,6 +6,7 @@ import android.text.TextUtils
import com.alipay.sdk.app.EnvUtils
import com.alipay.sdk.app.PayTask
import com.ck.ckcollar.app.R
+import com.ck.ckcollar.app.utils.Const
import com.ck.ckcollar.app.databinding.ActivityRechargeBinding
import com.ck.ckcollar.app.model.PayResult
import com.ck.ckcollar.app.model.RechargeModel
@@ -16,7 +17,10 @@ import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
import com.ck.ckcollar.app.utils.networkone.model.TTRequestParam
import com.ck.ckcollar.app.widget.CKEditView
import com.google.gson.Gson
+import com.tencent.mm.opensdk.modelpay.PayReq
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.tt.kit.model.DataCollection
+import com.tt.kit.utils.LiveDataBus
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@@ -37,6 +41,17 @@ class RechargeActivity : CKBaseActivity() {
override fun initView() {
+ LiveDataBus.get().with(WX_PAY_RESULT, Int::class.java).observe(this) { result ->
+ when (result) {
+ 0 -> {
+ toast(getString(R.string.recharge_success))
+ finish(DataCollection(), 1001)
+ }
+ -2 -> toast("已取消微信支付")
+ else -> toast(getString(R.string.recharge_faild))
+ }
+ }
+
binding.btnAli.setOnClickListener {
binding.image1.setImageResource(R.mipmap.image_address_check_select)
binding.image2.setImageResource(R.mipmap.image_address_check_narmal)
@@ -71,6 +86,8 @@ class RechargeActivity : CKBaseActivity() {
if ("1".equals(payType)){
aliPay()
+ }else if("0".equals(payType)){
+ wxPay()
}
}
@@ -112,4 +129,54 @@ class RechargeActivity : CKBaseActivity() {
}
}
-}
\ No newline at end of file
+ private fun wxPay() {
+ val payModel = model ?: return
+ val requiredValues = listOf(
+ payModel.appId,
+ payModel.partnerId,
+ payModel.prepayId,
+ payModel.packageVal,
+ payModel.nonceStr,
+ payModel.timeStamp,
+ payModel.paySign
+ )
+ if (requiredValues.any { it.isNullOrBlank() }) {
+ hiddenProgeassDialog()
+ toast("微信支付参数不完整,请检查商户号等支付参数")
+ return
+ }
+ if (payModel.appId != Const.WX_APP_ID) {
+ hiddenProgeassDialog()
+ toast("微信支付 AppID 不匹配")
+ return
+ }
+
+ val api = WXAPIFactory.createWXAPI(this, Const.WX_APP_ID, true)
+ api.registerApp(Const.WX_APP_ID)
+ if (!api.isWXAppInstalled) {
+ hiddenProgeassDialog()
+ toast("请先安装微信")
+ return
+ }
+
+ val request = PayReq().apply {
+ appId = payModel.appId
+ partnerId = payModel.partnerId
+ prepayId = payModel.prepayId
+ packageValue = payModel.packageVal
+ nonceStr = payModel.nonceStr
+ timeStamp = payModel.timeStamp
+ sign = payModel.paySign
+ extData = payModel.orderNo
+ }
+ hiddenProgeassDialog()
+ if (!api.sendReq(request)) {
+ toast("微信支付拉起失败")
+ }
+ }
+
+ companion object {
+ const val WX_PAY_RESULT = "wx_pay_result"
+ }
+
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt
index d529aa4..2bff4a2 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt
@@ -66,6 +66,7 @@ class MineCustomerActivity : CKBaseActivity() {
var path = ""
var url = ""
+ private var imageSendDraft = ""
var lock = true
var webSocket: WebSocket? = null
@@ -100,6 +101,13 @@ class MineCustomerActivity : CKBaseActivity() {
binding.editMessage.setHorizontallyScrolling(false);
+ binding.editMessage.setOnClickListener {
+ binding.contentBottom.visibility = View.GONE
+ }
+ binding.editMessage.onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus ->
+ if (hasFocus) binding.contentBottom.visibility = View.GONE
+ }
+
binding.editMessage.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(
p0: TextView?,
@@ -122,6 +130,7 @@ class MineCustomerActivity : CKBaseActivity() {
sendMessage(text)
}
}
+ return true
}
return false
}
@@ -159,7 +168,9 @@ class MineCustomerActivity : CKBaseActivity() {
})
binding.btnMore.setOnClickListener {
if (binding.contentBottom.visibility == View.GONE) {
- KeyboardUtils.hideKeyboard(this@MineCustomerActivity)
+ val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as android.view.inputmethod.InputMethodManager
+ inputMethodManager.hideSoftInputFromWindow(binding.editMessage.windowToken, 0)
+ binding.editMessage.clearFocus()
binding.contentBottom.visibility = View.VISIBLE
} else {
binding.contentBottom.visibility = View.GONE
@@ -169,6 +180,7 @@ class MineCustomerActivity : CKBaseActivity() {
}
binding.btnSmile.setOnClickListener {
+ binding.contentBottom.visibility = View.GONE
binding.editMessage.requestFocus()
KeyboardUtils.showKeyboard(binding.editMessage)
}
@@ -302,7 +314,9 @@ class MineCustomerActivity : CKBaseActivity() {
fun sendMessage(content: String) {
- showProgeassDialog(getString(R.string.send))
+ if (!TextUtils.isEmpty(url)) {
+ showProgeassDialog(getString(R.string.send))
+ }
TTHttpClient.postJson(this, "发送人工会话消息", TTRequestParam().apply {
add(TTRequestData("content", content))
add(TTRequestData("chatType", 2))
@@ -331,7 +345,8 @@ class MineCustomerActivity : CKBaseActivity() {
- binding.editMessage.setText("")
+ binding.editMessage.setText(if (!TextUtils.isEmpty(url)) imageSendDraft else "")
+ imageSendDraft = ""
path = ""
url = ""
customerMessageAdapter.data = this@MineCustomerActivity.data
@@ -363,7 +378,7 @@ class MineCustomerActivity : CKBaseActivity() {
var model = Gson().fromJson(data, UploadModel::class.java)
url = model.urls
-
+ imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
sendMessage(url)
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt
index c7730e2..d4b1ac9 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt
@@ -78,6 +78,7 @@ class PeopleCustomerActivity : CKBaseActivity() {
var path = ""
var url = ""
+ private var imageSendDraft = ""
var lock = true
var webSocket: WebSocket? = null
@@ -156,6 +157,7 @@ class PeopleCustomerActivity : CKBaseActivity() {
sendMessage(text)
}
}
+ return true
}
return false
}
@@ -193,7 +195,9 @@ class PeopleCustomerActivity : CKBaseActivity() {
})
binding.btnMore.setOnClickListener {
if (binding.contentBottom.visibility == View.GONE) {
- KeyboardUtils.hideKeyboard(this@PeopleCustomerActivity)
+ val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as android.view.inputmethod.InputMethodManager
+ inputMethodManager.hideSoftInputFromWindow(binding.editMessage.windowToken, 0)
+ binding.editMessage.clearFocus()
binding.contentBottom.visibility = View.VISIBLE
} else {
binding.contentBottom.visibility = View.GONE
@@ -205,6 +209,7 @@ class PeopleCustomerActivity : CKBaseActivity() {
}
binding.btnSmile.setOnClickListener {
+ binding.contentBottom.visibility = View.GONE
binding.editMessage.requestFocus()
KeyboardUtils.showKeyboard(binding.editMessage)
handler2.sendEmptyMessageDelayed(0,300)
@@ -407,7 +412,9 @@ class PeopleCustomerActivity : CKBaseActivity() {
"
"
}
- showProgeassDialog(getString(R.string.send))
+ if (!TextUtils.isEmpty(url)) {
+ showProgeassDialog(getString(R.string.send))
+ }
TTHttpClient.postJson(this, "发送人工会话消息", TTRequestParam().apply {
add(TTRequestData("content", sendContent))
add(TTRequestData("chatType", chatType))
@@ -435,7 +442,8 @@ class PeopleCustomerActivity : CKBaseActivity() {
- binding.editMessage.setText("")
+ binding.editMessage.setText(if (!TextUtils.isEmpty(url)) imageSendDraft else "")
+ imageSendDraft = ""
path = ""
url = ""
customerMessageAdapter.data = this@PeopleCustomerActivity.data
@@ -467,7 +475,7 @@ class PeopleCustomerActivity : CKBaseActivity() {
var model = Gson().fromJson(data, UploadModel::class.java)
url = model.urls
-
+ imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
sendMessage(url)
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt
index 9e0144a..d268a86 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt
@@ -68,6 +68,7 @@ class ShopCustomerActivity : CKBaseActivity() {
var path = ""
var url = ""
+ private var imageSendDraft = ""
var lock = true
var webSocket: WebSocket? = null
@@ -101,6 +102,13 @@ class ShopCustomerActivity : CKBaseActivity() {
binding.editMessage.setHorizontallyScrolling(false);
+ binding.editMessage.setOnClickListener {
+ binding.contentBottom.visibility = View.GONE
+ }
+ binding.editMessage.onFocusChangeListener = View.OnFocusChangeListener { _, hasFocus ->
+ if (hasFocus) binding.contentBottom.visibility = View.GONE
+ }
+
binding.editMessage.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(
p0: TextView?,
@@ -123,6 +131,7 @@ class ShopCustomerActivity : CKBaseActivity() {
sendMessage(text)
}
}
+ return true
}
return false
}
@@ -160,7 +169,9 @@ class ShopCustomerActivity : CKBaseActivity() {
})
binding.btnMore.setOnClickListener {
if (binding.contentBottom.visibility == View.GONE) {
- KeyboardUtils.hideKeyboard(this@ShopCustomerActivity)
+ val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as android.view.inputmethod.InputMethodManager
+ inputMethodManager.hideSoftInputFromWindow(binding.editMessage.windowToken, 0)
+ binding.editMessage.clearFocus()
binding.contentBottom.visibility = View.VISIBLE
} else {
binding.contentBottom.visibility = View.GONE
@@ -170,6 +181,7 @@ class ShopCustomerActivity : CKBaseActivity() {
}
binding.btnSmile.setOnClickListener {
+ binding.contentBottom.visibility = View.GONE
binding.editMessage.requestFocus()
KeyboardUtils.showKeyboard(binding.editMessage)
}
@@ -316,7 +328,9 @@ class ShopCustomerActivity : CKBaseActivity() {
// e.printStackTrace()
// }
- showProgeassDialog(getString(R.string.send))
+ if (!TextUtils.isEmpty(url)) {
+ showProgeassDialog(getString(R.string.send))
+ }
TTHttpClient.postJson(this, "发送人工会话消息", TTRequestParam().apply {
add(TTRequestData("content", content))
add(TTRequestData("chatType", 1))
@@ -344,7 +358,8 @@ class ShopCustomerActivity : CKBaseActivity() {
- binding.editMessage.setText("")
+ binding.editMessage.setText(if (!TextUtils.isEmpty(url)) imageSendDraft else "")
+ imageSendDraft = ""
path = ""
url = ""
customerMessageAdapter.data = this@ShopCustomerActivity.data
@@ -376,6 +391,7 @@ class ShopCustomerActivity : CKBaseActivity() {
var model = Gson().fromJson(data, UploadModel::class.java)
url = model.urls
+ imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
sendMessage(url)
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt
index e06c452..7ab6b92 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt
@@ -69,6 +69,9 @@ class LoginActivity : CKBaseActivity() {
binding.btnLogin.setOnClickListener {
login()
}
+ binding.btnQuickLogin.setOnClickListener {
+ quickLogin()
+ }
binding.btnCodeLogin.setOnClickListener {
binding.btnCodeLogin.setTextColor(getColor2(R.attr.appTextColor))
@@ -285,6 +288,32 @@ class LoginActivity : CKBaseActivity() {
}
+ private fun quickLogin() {
+ showProgeassDialog(getString(R.string.login))
+ TTHttpClient.postJson(this, "登录", TTRequestParam().apply {
+ add(TTRequestData("username", "13305376054"))
+ add(TTRequestData("password", "000000"))
+ add(TTRequestData("code", ""))
+ add(TTRequestData("uuid", TTUtils.getDeviceId(this@LoginActivity).toString()))
+ }, object : ICallback {
+ override fun onSuccess(data: String) {
+ try {
+ val model = Gson().fromJson(data, LoginModel::class.java)
+ CKApp.app.setLoginToken(model.token.orEmpty())
+ getUserInfo()
+ } catch (e: Exception) {
+ hiddenProgeassDialog()
+ toast(e.message.orEmpty())
+ }
+ }
+
+ override fun onFailed(code: String, msg: String) {
+ hiddenProgeassDialog()
+ toast(msg)
+ }
+ })
+ }
+
fun getUserInfo(){
TTHttpClient.get(this,"个人资料", TTRequestParam(),object : ICallback{
override fun onSuccess(data: String) {
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 14b6638..f506378 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
@@ -21,14 +21,19 @@ import com.ck.ckcollar.app.model.PayResult
import com.ck.ckcollar.app.ui.act.shop.PayPasswordBottomFragment
import com.ck.ckcollar.app.ui.base.CKBaseActivity
import com.ck.ckcollar.app.ui.base.CKLHBaseActionBarActivity
+import com.ck.ckcollar.app.ui.act.balance.RechargeActivity
+import com.ck.ckcollar.app.utils.Const
import com.ck.ckcollar.app.utils.networkone.ICallback
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
import com.ck.ckcollar.app.utils.networkone.model.TTRequestParam
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
+import com.tencent.mm.opensdk.modelpay.PayReq
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.gyf.immersionbar.ImmersionBar
import com.tt.kit.utils.TTUtils
+import com.tt.kit.utils.LiveDataBus
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@@ -55,6 +60,17 @@ class OpenMemberActivity : CKLHBaseActionBarActivity() {
override fun initView() {
+ LiveDataBus.get().with(RechargeActivity.WX_PAY_RESULT, Int::class.java).observe(this) { result ->
+ when (result) {
+ 0 -> {
+ toast(getString(R.string.payment_success))
+ finish()
+ }
+ -2 -> toast("已取消微信支付")
+ else -> toast(getString(R.string.payment_faild))
+ }
+ }
+
//setPriceUI()
binding.btnAli.setOnClickListener {
@@ -136,6 +152,8 @@ class OpenMemberActivity : CKLHBaseActionBarActivity() {
var model = Gson().fromJson(data, MemberModel::class.java)
if ("1".equals(payType)){
aliPay(model.orderStr!!)
+ }else if ("0".equals(payType)) {
+ wxPay(model)
}else{
toast(getString(R.string.payment_success))
finish()
@@ -244,4 +262,49 @@ class OpenMemberActivity : CKLHBaseActionBarActivity() {
}
}
}
-}
\ No newline at end of file
+
+ private fun wxPay(model: MemberModel) {
+ val requiredValues = listOf(
+ model.appId,
+ model.partnerId,
+ model.prepayId,
+ model.packageVal,
+ model.nonceStr,
+ model.timeStamp,
+ model.paySign
+ )
+ if (requiredValues.any { it.isNullOrBlank() }) {
+ hiddenProgeassDialog()
+ toast("微信支付参数不完整,请检查商户号等支付参数")
+ return
+ }
+ if (model.appId != Const.WX_APP_ID) {
+ hiddenProgeassDialog()
+ toast("微信支付 AppID 不匹配")
+ return
+ }
+
+ val api = WXAPIFactory.createWXAPI(this, Const.WX_APP_ID, true)
+ api.registerApp(Const.WX_APP_ID)
+ if (!api.isWXAppInstalled) {
+ hiddenProgeassDialog()
+ toast("请先安装微信")
+ return
+ }
+
+ val request = PayReq().apply {
+ appId = model.appId
+ partnerId = model.partnerId
+ prepayId = model.prepayId
+ packageValue = model.packageVal
+ nonceStr = model.nonceStr
+ timeStamp = model.timeStamp
+ sign = model.paySign
+ extData = model.orderNo
+ }
+ hiddenProgeassDialog()
+ if (!api.sendReq(request)) {
+ toast("微信支付拉起失败")
+ }
+ }
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ViewPetFileActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ViewPetFileActivity.kt
index da14cbb..e743f68 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ViewPetFileActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ViewPetFileActivity.kt
@@ -77,7 +77,10 @@ class ViewPetFileActivity: CKBaseActivity() {
}
binding.btnViewPostion.setOnClickListener {
-
+ if(homeModel?.collNum == null){
+ toast("请为您的爱宠绑定项圈")
+ return@setOnClickListener
+ }
getData2(model?.id.toString())
}
binding.btnAdreessDetails.setOnClickListener {
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 6818710..48ddf6f 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
@@ -30,20 +30,25 @@ import com.ck.ckcollar.app.model.ShopCarModel
import com.ck.ckcollar.app.model.ShopProductModel
import com.ck.ckcollar.app.model.UserInfoModel
import com.ck.ckcollar.app.ui.act.order.MyOrderActivity
+import com.ck.ckcollar.app.ui.act.balance.RechargeActivity
import com.ck.ckcollar.app.ui.act.setting.AddAddressActivity
import com.ck.ckcollar.app.ui.act.setting.AddressActivity
import com.ck.ckcollar.app.ui.act.setting.PayPsswordActivity
import com.ck.ckcollar.app.ui.act.shop.ShopCarActivity.ShopCarAdapter
import com.ck.ckcollar.app.ui.base.CKBaseActivity
+import com.ck.ckcollar.app.utils.Const
import com.ck.ckcollar.app.utils.networkone.ICallback
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
import com.ck.ckcollar.app.utils.networkone.model.TTRequestParam
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
+import com.tencent.mm.opensdk.modelpay.PayReq
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.tt.kit.base.TTBaseActivity
import com.tt.kit.model.Data
import com.tt.kit.model.DataCollection
+import com.tt.kit.utils.LiveDataBus
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@@ -82,6 +87,14 @@ class OrderActivity : CKBaseActivity() {
}
override fun initView() {
+ LiveDataBus.get().with(RechargeActivity.WX_PAY_RESULT, Int::class.java).observe(this) { result ->
+ if (result == 0) {
+ handlePaymentSuccess()
+ } else {
+ handlePaymentFailed(result == -2)
+ }
+ }
+
productAdapter =
ProductAdapter(this@OrderActivity, productDatas, object : OnItemClickListenner {
override fun onClick(pos: Int, model: Any) {
@@ -301,7 +314,7 @@ class OrderActivity : CKBaseActivity() {
override fun onSuccess(data: String) {
var model = Gson().fromJson(data, PayOrderModel::class.java)
if ("0".equals(this@OrderActivity.payType)) {
- //微信
+ wxPay(model)
}else if ("1".equals(this@OrderActivity.payType)) {
if (TextUtils.isEmpty(model.orderStr)){
toActivity(OrderSuccessActivity::class.java, DataCollection())
@@ -322,7 +335,8 @@ class OrderActivity : CKBaseActivity() {
override fun onFailed(code: String, msg: String) {
toast(msg)
- if (msg.indexOf("不足")>=0){
+ //原有【不足】的字符串判断条件
+ if (code.equals("502")){
toActivity(
MyOrderActivity::class.java,
DataCollection().apply { add(Data("pos", "1")) })
@@ -349,20 +363,74 @@ class OrderActivity : CKBaseActivity() {
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
- toast(getString(R.string.payment_success))
- toActivity(OrderSuccessActivity::class.java, DataCollection())
- finish()
+ handlePaymentSuccess()
} else {
- toast(getString(R.string.payment_faild))
- toActivity(
- MyOrderActivity::class.java,
- DataCollection().apply { add(Data("pos", "1")) })
- finish()
+ handlePaymentFailed(false)
}
}
}
}
+ private fun wxPay(model: PayOrderModel) {
+ val requiredValues = listOf(
+ model.appId,
+ model.partnerId,
+ model.prepayId,
+ model.packageVal,
+ model.nonceStr,
+ model.timeStamp,
+ model.paySign
+ )
+ if (requiredValues.any { it.isNullOrBlank() }) {
+ hiddenProgeassDialog()
+ toast("微信支付参数不完整,请检查商户号等支付参数")
+ return
+ }
+ if (model.appId != Const.WX_APP_ID) {
+ hiddenProgeassDialog()
+ toast("微信支付 AppID 不匹配")
+ return
+ }
+
+ val api = WXAPIFactory.createWXAPI(this, Const.WX_APP_ID, true)
+ api.registerApp(Const.WX_APP_ID)
+ if (!api.isWXAppInstalled) {
+ hiddenProgeassDialog()
+ toast("请先安装微信")
+ return
+ }
+
+ val request = PayReq().apply {
+ appId = model.appId
+ partnerId = model.partnerId
+ prepayId = model.prepayId
+ packageValue = model.packageVal
+ nonceStr = model.nonceStr
+ timeStamp = model.timeStamp
+ sign = model.paySign
+ extData = model.orderNo
+ }
+ hiddenProgeassDialog()
+ if (!api.sendReq(request)) {
+ toast("微信支付拉起失败")
+ }
+ }
+
+ private fun handlePaymentSuccess() {
+ toast(getString(R.string.payment_success))
+ toActivity(OrderSuccessActivity::class.java, DataCollection())
+ finish()
+ }
+
+ private fun handlePaymentFailed(cancelled: Boolean) {
+ toast(if (cancelled) "已取消微信支付" else getString(R.string.payment_faild))
+ toActivity(
+ MyOrderActivity::class.java,
+ DataCollection().apply { add(Data("pos", "1")) }
+ )
+ finish()
+ }
+
fun getMemberInfo() {
TTHttpClient.get(this, "个人资料", TTRequestParam(), object : ICallback {
override fun onSuccess(data: String) {
diff --git a/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt b/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt
index 4f9e379..09ab8f4 100644
--- a/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt
@@ -14,6 +14,7 @@ object Const {
const val TOKEN = "token"
const val MEMBER_PRICE = "member_price"
const val MEMBER_PRICE_CACHE_TIME = "member_price_cache_time"
+ //微信app-id
const val WX_APP_ID = "wx7681e74df7d88ddc"
}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 6f313f4..28ce210 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -165,6 +165,15 @@
android:background="@drawable/bg_login_button"
>
+
+
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:orientation="vertical">
-
+ app:riv_corner_radius="4dp"/>
+ />
\ No newline at end of file