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