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 | 31 ++++++++++++++++--------------- 1 files changed, 16 insertions(+), 15 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 6d3cfd3..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 @@ -14,7 +14,7 @@ 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) /** @@ -35,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 } @@ -67,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