接入微信支付
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2289
.idea/caches/deviceStreaming.xml
generated
2289
.idea/caches/deviceStreaming.xml
generated
File diff suppressed because it is too large
Load Diff
@@ -67,6 +67,12 @@
|
||||
android:launchMode="singleTask"
|
||||
android:taskAffinity="com.ck.ckcollar.app"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>
|
||||
<activity
|
||||
android:name=".wxapi.WXPayEntryActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:taskAffinity="com.ck.ckcollar.app"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
||||
<activity
|
||||
android:name=".ui.act.petmanager.PetManagerActivity"
|
||||
android:theme="@style/Theme.CkCollar_app.NoActionBar"></activity>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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? = ""
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
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<UploadModel>(data, UploadModel::class.java)
|
||||
|
||||
url = model.urls
|
||||
|
||||
imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
|
||||
sendMessage(url)
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
"<img src=\"$content\"/>"
|
||||
}
|
||||
|
||||
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<UploadModel>(data, UploadModel::class.java)
|
||||
|
||||
url = model.urls
|
||||
|
||||
imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
|
||||
sendMessage(url)
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
// }
|
||||
|
||||
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<UploadModel>(data, UploadModel::class.java)
|
||||
|
||||
url = model.urls
|
||||
imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
|
||||
sendMessage(url)
|
||||
}
|
||||
|
||||
|
||||
@@ -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<LoginModel>(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) {
|
||||
|
||||
@@ -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<MemberModel>(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() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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("微信支付拉起失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,7 +77,10 @@ class ViewPetFileActivity: CKBaseActivity() {
|
||||
}
|
||||
|
||||
binding.btnViewPostion.setOnClickListener {
|
||||
|
||||
if(homeModel?.collNum == null){
|
||||
toast("请为您的爱宠绑定项圈")
|
||||
return@setOnClickListener
|
||||
}
|
||||
getData2(model?.id.toString())
|
||||
}
|
||||
binding.btnAdreessDetails.setOnClickListener {
|
||||
|
||||
@@ -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<PayOrderModel>(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,19 +363,73 @@ class OrderActivity : CKBaseActivity() {
|
||||
// 判断resultStatus 为9000则代表支付成功
|
||||
if (TextUtils.equals(resultStatus, "9000")) {
|
||||
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
|
||||
handlePaymentSuccess()
|
||||
} else {
|
||||
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()
|
||||
} else {
|
||||
toast(getString(R.string.payment_faild))
|
||||
}
|
||||
|
||||
private fun handlePaymentFailed(cancelled: Boolean) {
|
||||
toast(if (cancelled) "已取消微信支付" else getString(R.string.payment_faild))
|
||||
toActivity(
|
||||
MyOrderActivity::class.java,
|
||||
DataCollection().apply { add(Data("pos", "1")) })
|
||||
DataCollection().apply { add(Data("pos", "1")) }
|
||||
)
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getMemberInfo() {
|
||||
TTHttpClient.get(this, "个人资料", TTRequestParam(), object : ICallback {
|
||||
|
||||
@@ -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"
|
||||
|
||||
}
|
||||
|
||||
@@ -165,6 +165,15 @@
|
||||
android:background="@drawable/bg_login_button"
|
||||
></com.ck.ckcollar.app.widget.CKButton>
|
||||
|
||||
<com.ck.ckcollar.app.widget.CKButton
|
||||
android:id="@+id/btnQuickLogin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/bg_login_button"
|
||||
android:text="临时快捷登录"
|
||||
android:textColor="@color/buttonTextColor" />
|
||||
|
||||
<com.ck.ckcollar.app.widget.CKLinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="30dp"
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
<com.ck.ckcollar.app.widget.CKRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.ck.ckcollar.app.widget.CKImageView
|
||||
<com.makeramen.roundedimageview.RoundedImageView
|
||||
android:id="@+id/image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/color_F0F0F0"
|
||||
android:scaleType="centerInside"
|
||||
></com.ck.ckcollar.app.widget.CKImageView>
|
||||
app:riv_corner_radius="4dp"/>
|
||||
|
||||
<com.ck.ckcollar.app.widget.CKImageView
|
||||
android:id="@+id/imageDelete"
|
||||
@@ -21,5 +21,5 @@
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:visibility="gone"
|
||||
></com.ck.ckcollar.app.widget.CKImageView>
|
||||
/>
|
||||
</com.ck.ckcollar.app.widget.CKRelativeLayout>
|
||||
Reference in New Issue
Block a user