From dd2562d8dc2b01bcdfca3152f82f09efbbd09259 Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期三, 25 六月 2025 19:49:48 +0800 Subject: [PATCH] fix(generallibrary): 优化卡片处理和支付方式获取逻辑- 修复地区卡处理逻辑,增加对"00"类型卡的特殊处理 - 优化用户卡数据解析和显示逻辑,提高容错性 - 改进支付方式获取方法,增加错误处理和日志记录 -调整充值接口调用参数,确保正确传递当前余额等信息- 修复 AreaCard 中 areaNumber 类型,改为字符串处理 --- generallibrary/src/main/java/com/dayu/general/bean/card/AreaCard.kt | 38 ++++++++++++++++++-------------------- 1 files changed, 18 insertions(+), 20 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/bean/card/AreaCard.kt b/generallibrary/src/main/java/com/dayu/general/bean/card/AreaCard.kt index 4684ee3..5da0906 100644 --- a/generallibrary/src/main/java/com/dayu/general/bean/card/AreaCard.kt +++ b/generallibrary/src/main/java/com/dayu/general/bean/card/AreaCard.kt @@ -2,6 +2,7 @@ import com.dayu.baselibrary.tools.BcdUtil import com.dayu.baselibrary.tools.HexUtil +import com.dayu.general.tool.CardCommon import java.io.Serializable /** @@ -10,14 +11,10 @@ */ class AreaCard : BaseCard(), Serializable { companion object { - const val CARD_TYPE = "B0" // 鍗$被鍨嬪浐瀹氫负0xB0 - const val IDENTIFY_CODE_A0 = 0xA0.toByte() // 璇嗗埆鐮丄0 - const val IDENTIFY_CODE_B1 = 0xB1.toByte() // 璇嗗埆鐮丅1 - const val IDENTIFY_CODE_C2 = 0xC2.toByte() // 璇嗗埆鐮丆2 - const val IDENTIFY_CODE_89 = 0x89.toByte() // 璇嗗埆鐮�89 + const val CARD_TYPE = CardCommon.REGION_CARD // 鍗$被鍨嬪浐瀹氫负0xB0 } - var areaNumber: Int = 0 // 鍥藉琛屾斂鍖哄煙鍙�(12浣岯CD,绮剧‘鍒版潙) + var areaNumber: String = "" // 鍥藉琛屾斂鍖哄煙鍙�(12浣岯CD,绮剧‘鍒版潙) var projectCode: Int = 0 // 椤圭洰缂栫爜(HEX 1-255) /** @@ -38,20 +35,21 @@ val areaCard = AreaCard() // 瑙f瀽绗�0鍧� val zero = data[0] - + // 瑙f瀽鍥藉琛屾斂鍖哄煙鍙�(0-5浣�) val areaCodeBytes = zero.copyOfRange(0, 6) - areaCard.areaNumber = BcdUtil.bcdToStr(areaCodeBytes).toInt() - + areaCard.areaNumber = BcdUtil.bcdToStr(areaCodeBytes) + // 瑙f瀽椤圭洰缂栫爜(6浣�) - areaCard.projectCode = HexUtil.get16To10LowHightByBytes(byteArrayOf(zero[6])) - + areaCard.projectCode = HexUtil.get16to10(HexUtil.byteToHex(zero[6])) + // 楠岃瘉鍗$被鍨嬪拰璇嗗埆鐮� if (HexUtil.byteToHex(zero[8]) != CARD_TYPE || zero[9] != IDENTIFY_CODE_A0 || zero[10] != IDENTIFY_CODE_B1 || zero[11] != IDENTIFY_CODE_C2 || - zero[12] != IDENTIFY_CODE_89) { + zero[12] != IDENTIFY_CODE_89 + ) { return null } @@ -70,28 +68,28 @@ val data = ByteArray(16) try { // 璁剧疆鍥藉琛屾斂鍖哄煙鍙�(BCD鏍煎紡锛�6瀛楄妭锛�0-5浣�) - val areaCodeBytes = BcdUtil.strToBcd(String.format("%012d", areaNumber)) + val areaCodeBytes = BcdUtil.strToBcd(areaNumber) System.arraycopy(areaCodeBytes, 0, data, 0, 6) - + // 璁剧疆椤圭洰缂栫爜(6浣�) - data[6] = projectCode.toByte() - + data[6] = HexUtil.hexToByte(HexUtil.get10to16(projectCode)) + // 璁剧疆澶囩敤浣�(7浣�) data[7] = 0x00 - + // 璁剧疆鍗$被鍨�(8浣�) data[8] = HexUtil.hexToByte(CARD_TYPE) - + // 璁剧疆璇嗗埆鐮�(9-12浣�) data[9] = IDENTIFY_CODE_A0 data[10] = IDENTIFY_CODE_B1 data[11] = IDENTIFY_CODE_C2 data[12] = IDENTIFY_CODE_89 - + // 璁剧疆澶囩敤浣�(13-14浣�) data[13] = 0x00 data[14] = 0x00 - + // 璁剧疆鏍¢獙鍜�(15浣�) data[15] = getByteSum(data) } catch (e: Exception) { -- Gitblit v1.8.0