接入微信支付

This commit is contained in:
fengjignqi
2026-08-09 08:37:09 +08:00
parent 39dbe5f1e4
commit 579e9427c8
23 changed files with 350 additions and 2323 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -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>

View File

@@ -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
}
}
}

View File

@@ -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? = ""
}
}

View File

@@ -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
}
}

View File

@@ -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"
}
}

View File

@@ -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<UploadModel>(data, UploadModel::class.java)
url = model.urls
imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
sendMessage(url)
}

View File

@@ -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\"/>"
}
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<UploadModel>(data, UploadModel::class.java)
url = model.urls
imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
sendMessage(url)
}

View File

@@ -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<UploadModel>(data, UploadModel::class.java)
url = model.urls
imageSendDraft = binding.editMessage.text.toString().replace("$$$$$", "")
sendMessage(url)
}

View File

@@ -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) {

View File

@@ -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("微信支付拉起失败")
}
}
}

View File

@@ -77,7 +77,10 @@ class ViewPetFileActivity: CKBaseActivity() {
}
binding.btnViewPostion.setOnClickListener {
if(homeModel?.collNum == null){
toast("请为您的爱宠绑定项圈")
return@setOnClickListener
}
getData2(model?.id.toString())
}
binding.btnAdreessDetails.setOnClickListener {

View File

@@ -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,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) {

View File

@@ -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"
}

View File

@@ -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"

View File

@@ -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>