Alipay:添加乘车码链接库;开启蓝牙spp服务,利用海思wrmtapp验证乘车码功能
authorluozheng <1732036298@qq.com>
Thu, 3 Apr 2025 08:27:17 +0000 (16:27 +0800)
committerluozheng <1732036298@qq.com>
Tue, 6 May 2025 06:30:07 +0000 (14:30 +0800)
code/sdk/application/wearable/alipay/service/alipay_bluetooth.c
code/sdk/application/wearable/alipay/service/alipay_feature.h
code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayPresenter.h
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayTrans/AlipayGetTransList.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/lib/rv70_llvm/fwk/device_certificate/lib/libfwk_device_certificate_rv70_llvm.a

index b718cc7..b3bb853 100644 (file)
@@ -52,6 +52,8 @@ static bool g_alipay_ble_init_flag = false;
 static const uint8_t alipay_adv_type[ALIPAY_BLE_ADV_TYPE_LENTH] = {2, 1, 2};\r
 static const uint8_t alipay_adv_uuid[ALIPAY_BLE_ADV_UUID_LENTH] = {0x3, 0x3, 0x02, 0x38};\r
 \r
+#define ALIPAY_PRINT_LOG 0\r
+\r
 static bool svr_alipay_get_adv_start_state(void)\r
 {\r
     return g_alipay_adv_start_state;\r
@@ -194,35 +196,40 @@ static void svr_alipay_ble_adv_stop_cb(uint8_t adv_id, adv_status_t status)
     }\r
 }\r
 \r
+//在服务添加成功后添加特征\r
 static void svr_alipay_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
     errcode_t status)\r
 {\r
+    // 检查UUID是否匹配支付宝服务ID\r
     if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) \r
     {\r
-        \r
-        printf( "BtGattsServiceAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+        // 打印服务添加回调的调试信息\r
+        ALIPAY_PRINT_DEBUG(0, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x 0x%x",\r
                            status, server_id, srv_handle, *((uint16_t *)uuid->uuid));\r
-        uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
-        gatts_add_chara_info_t character;\r
+        uint16_t id = ALIPAYY_CHARACTERISTIC_ID;// 支付宝特征值ID\r
+        gatts_add_chara_info_t character;// 特征值信息结构体\r
         uint16_t value = 0;\r
 \r
+        // 初始化特征值信息结构体\r
         memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
-        character.chara_uuid.uuid_len = sizeof(id);\r
+        character.chara_uuid.uuid_len = sizeof(id); // 设置特征值UUID长度\r
         memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
         character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
         character.properties =\r
             GATT_CHARACTER_PROPERTY_BIT_READ | GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_NOTIFY;\r
-        character.value_len = ALIPAY_CHARACTERISTIC_MAX_LENGTH;\r
-        character.value = g_alipay_character_buf;\r
+        character.value_len = ALIPAY_CHARACTERISTIC_MAX_LENGTH; // 设置特征值最大长度\r
+        character.value = g_alipay_character_buf; // 设置特征值缓冲区\r
 \r
+        // 添加特征值到服务\r
         int ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
         if (ret != ERRCODE_SUCC) {\r
             ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
         }\r
-        g_alipay_svr_handle = srv_handle;\r
+        g_alipay_svr_handle = srv_handle;// 保存服务句柄\r
     }\r
 }\r
 \r
+//在特征添加成功后添加描述符。\r
 static void svr_alipay_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
     gatts_add_character_result_t *result, errcode_t status)\r
 {\r
@@ -235,38 +242,43 @@ static void svr_alipay_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid
             0x00\r
         };\r
         bt_uuid_t ccc_uuid = { 0 };\r
-        bts_data_to_uuid_len2(0x2902, &ccc_uuid);\r
-        gatts_add_desc_info_t descriptor;\r
-        descriptor.desc_uuid = ccc_uuid;\r
-        descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
-        descriptor.value_len = (uint16_t)sizeof(bas_ccc_val);\r
+        bts_data_to_uuid_len2(0x2902, &ccc_uuid); // 将0x2902转换为UUID格式\r
+        gatts_add_desc_info_t descriptor;  \r
+        descriptor.desc_uuid = ccc_uuid;         //设置描述符UUID\r
+        descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; // 设置描述符权限\r
+        descriptor.value_len = (uint16_t)sizeof(bas_ccc_val); // 设置描述符值长度\r
         descriptor.value = bas_ccc_val;\r
         int ret = 0;\r
         ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
         if (ret != ERRCODE_SUCC) {\r
             ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
         }\r
+        // 获取本地蓝牙地址\r
         bd_addr_t addr_info;\r
         gatts_add_desc_info_t descriptor_ap;\r
         gap_ble_get_local_addr(&addr_info);\r
-        bts_data_to_uuid_len2(0x4b02, &ccc_uuid);\r
-        descriptor_ap.desc_uuid = ccc_uuid;\r
-        descriptor_ap.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
-        descriptor_ap.value_len = BD_ADDR_LEN;\r
+        bts_data_to_uuid_len2(0x4b02, &ccc_uuid); // 将0x4b02转换为UUID格式\r
+        descriptor_ap.desc_uuid = ccc_uuid;       // 设置描述符UUID\r
+        descriptor_ap.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; // 设置描述符权限\r
+        descriptor_ap.value_len = BD_ADDR_LEN;    // 设置描述符值长度\r
         uint8_t ble_data_mac_switch[BD_ADDR_LEN] = {0};\r
         int k = BD_ADDR_LEN;\r
         for (int i = 0; i < BD_ADDR_LEN; i++) {\r
-            ble_data_mac_switch[--k] = addr_info.addr[i];\r
+            ble_data_mac_switch[--k] = addr_info.addr[i]; // 反转蓝牙地址字节顺序\r
         }\r
-        descriptor_ap.value = ble_data_mac_switch;\r
+\r
+        // 添加第二个描述符到特征值\r
+        descriptor_ap.value = ble_data_mac_switch;  // 设置描述符值为蓝牙地址\r
         ret = gatts_add_descriptor(server_id, srv_handle, &descriptor_ap);\r
         if (ret != ERRCODE_SUCC) {\r
             ALIPAY_PRINT_ERR(0, "gatts_add_descriptor second fail, ret:%u.\r\n", ret);\r
         }\r
+        // 启动服务\r
         ret = gatts_start_service(server_id, srv_handle);\r
         if (ret != ERRCODE_SUCC) {\r
             ALIPAY_PRINT_ERR(0, "gatts_start_service fail, ret:%u.\r\n", ret);\r
         }\r
+        // 保存特征值句柄\r
         g_alipay_characteristic_handle = result->value_handle;\r
     }\r
 }\r
@@ -317,15 +329,18 @@ bool is_alipay_handle(uint16_t hande)
         }\r
         return false;\r
 }\r
+// 接收手机数据\r
 static void svr_alipay_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
     errcode_t status)\r
 {\r
+    // 检查写入的句柄是否匹配支付宝特征值或描述符的句柄\r
     if ((g_alipay_characteristic_handle == write_cb_para->handle) ||\r
         (g_alipay_descriptor_handle[0] == write_cb_para->handle) ||\r
         (g_alipay_descriptor_handle[1] == write_cb_para->handle)) {\r
         ALIPAY_PRINT_DEBUG(0, "write callback,handle:%u str:%s len:%u",\r
                            write_cb_para->handle, write_cb_para->value, write_cb_para->length);\r
-        uint8_t *msg_data = write_cb_para->value;\r
+        uint8_t *msg_data = write_cb_para->value;  \r
+        // 将数据写入支付宝消息队列\r
         errcode_t ret = svr_alipay_msg_write(ALIPAY_MSG_BT, msg_data, write_cb_para->length, false);\r
         if (ret != ERRCODE_SUCC) {\r
             ALIPAY_PRINT_ERR(0, "svr_alipay_msg_write fail, ret:%u.\r\n", ret);\r
@@ -334,6 +349,7 @@ static void svr_alipay_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id
     return;\r
 }\r
 \r
+//发送数据到手机\r
 void svr_alipay_bt_gatts_noyify(uint8_t *data, uint16_t data_len)\r
 {\r
     gatts_ntf_ind_t data_info;\r
@@ -341,6 +357,16 @@ void svr_alipay_bt_gatts_noyify(uint8_t *data, uint16_t data_len)
     data_info.value = data;\r
     data_info.value_len = data_len;\r
 \r
+    #if ALIPAY_PRINT_LOG\r
+    // 打印 data 数据\r
+    printf("发送数据到手机: ");\r
+    for (uint16_t i = 0; i < data_len; i++) {\r
+        printf("%02x ", data[i]);\r
+    }\r
+    printf("数据长度:%d",data_len);\r
+    printf("\n");\r
+    #endif\r
+\r
     errcode_t ret = gatts_notify_indicate(g_alipay_server_id, g_alipay_conn_id, &data_info);\r
     ALIPAY_PRINT_DEBUG(0, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.", ret, g_alipay_server_id,\r
         g_alipay_conn_id, g_alipay_characteristic_handle);\r
@@ -434,6 +460,7 @@ void svr_alipay_bt_init_gatts(uint8_t server_id )
     return;\r
 }\r
 \r
+//2.Alipay蓝牙模块初始化\r
 void svr_alipay_bluetooth_init(uint8_t server_id)\r
 {\r
 // #ifndef SUPPORT_AT_OHOSFWK\r
index e3f28da..63bfc22 100755 (executable)
@@ -100,27 +100,27 @@ typedef struct {
 typedef enum {
     ALIPAY_TRANS_SUCCESS = 0,
     ALIPAY_TRANS_CARD_LIST_START = ALIPAY_TRANS_CARD_SHIFT << 8,
-    ALIPAY_TRANS_CARD_LIST_UNBIND = ALIPAY_TRANS_CARD_LIST_START, // 设备已经在服务端解绑,设备端也需要调用解绑接口
-    ALIPAY_TRANS_CARD_LIST_NET_ERROR,                             // 网络错误
-    ALIPAY_TRANS_CARD_LIST_OWN_TOO_MANY_CARD,                     // 用户开通了太多乘车码
-    ALIPAY_TRANS_CARD_LIST_FUNC_NOT_SUPPPORT,                     // 不支持该功能
-    ALIPAY_TRANS_CARD_LIST_DEV_ERROR,                             // 不该出现的错误
-    ALIPAY_TRANS_CARD_LIST_BUF_TOO_SHORT,                         // 入参的缓存太小
+    ALIPAY_TRANS_CARD_LIST_UNBIND = ALIPAY_TRANS_CARD_LIST_START,       // 设备已经在服务端解绑,设备端也需要调用解绑接口
+    ALIPAY_TRANS_CARD_LIST_NET_ERROR,                                   // 网络错误
+    ALIPAY_TRANS_CARD_LIST_OWN_TOO_MANY_CARD,                           // 用户开通了太多乘车码
+    ALIPAY_TRANS_CARD_LIST_FUNC_NOT_SUPPPORT,                           // 不支持该功能
+    ALIPAY_TRANS_CARD_LIST_DEV_ERROR,                                   // 不该出现的错误
+    ALIPAY_TRANS_CARD_LIST_BUF_TOO_SHORT,                               // 入参的缓存太小
     ALIPAY_TRANS_CODE_START = ALIPAY_TRANS_CODE_SHIFT << 8,
-    ALIPAY_TRANS_CODE_UNBIND = ALIPAY_TRANS_CODE_START, // 设备已经在服务端解绑,设备端也需要调用解绑接口
-    ALIPAY_TRANS_CODE_NET_ERROR,                        // 网络错误
-    ALIPAY_TRANS_CODE_DATA_LIMIT,                       // 因安全原因限制生码
-    ALIPAY_TRANS_CODE_NOT_SUPPORT,                      // 该乘车码不支持
-    ALIPAY_TRANS_CODE_SERVER_ERROR,                     // 服务端报错
-    ALIPAY_TRANS_CODE_DEV_ERROR,                        // 不该出现的错误
+    ALIPAY_TRANS_CODE_UNBIND = ALIPAY_TRANS_CODE_START,                 // 设备已经在服务端解绑,设备端也需要调用解绑接口
+    ALIPAY_TRANS_CODE_NET_ERROR,                                        // 网络错误
+    ALIPAY_TRANS_CODE_DATA_LIMIT,                                       // 因安全原因限制生码
+    ALIPAY_TRANS_CODE_NOT_SUPPORT,                                      // 该乘车码不支持
+    ALIPAY_TRANS_CODE_SERVER_ERROR,                                     // 服务端报错
+    ALIPAY_TRANS_CODE_DEV_ERROR,                                        // 不该出现的错误
 
 } mc_alipay_trans_errcode_t;
 
 typedef enum {
     ALIPAY_MSG_BT = 0,
-    ALIPAY_MSG_UPDATA_TRANS_LIST,
-    ALIPAY_MSG_UPDATA_SPECIAL_CARD,
-    ALIPAY_MSG_UPDATA_ALL_CARDS,
+    ALIPAY_MSG_UPDATA_TRANS_LIST,                                       // 设备端更新乘车码列表
+    ALIPAY_MSG_UPDATA_SPECIAL_CARD,                                     // 设备端更新特殊卡列表
+    ALIPAY_MSG_UPDATA_ALL_CARDS,                                        // 设备端更新所有卡列表
 
 } mc_alipay_msg_type_t;
 
index 46b90ba..69bef98 100644 (file)
@@ -65,20 +65,20 @@ typedef enum {
     ALIPAY_PAY_VIEW,\r
 \r
     ALIPAY_PAY_BARCODE_VIEW,\r
-    ALIPAY_TRANS_VIEW,\r
+    ALIPAY_TRANS_VIEW,                   //具体的乘车码支付页面\r
     ALIPAY_SETTING_VIEW,\r
     ALIPAY_HELP_VIEW,\r
     ALIPAY_SETTING_UNBIND_VIEW,\r
 \r
     ALIPAY_SETTING_FINISH_VIEW,\r
     ALIPAY_GET_BIND_FAILURE_VIEW,\r
-    ALIPAY_TRANS_LIST_VIEW,\r
+    ALIPAY_TRANS_LIST_VIEW,              //交通卡列表视图\r
     ALIPAY_TRANS_ENABLE_VIEW,\r
     ALIPAY_TRANS_TIPS_VIEW,\r
 \r
-    ALIPAY_TRANS_RES_VIEW,\r
-    ALIPAY_GET_TRANS_LIST_VIEW,\r
-    ALIPAY_TRANS_ANI_VIEW,\r
+    ALIPAY_TRANS_RES_VIEW,               //提示网络异常视图\r
+    ALIPAY_GET_TRANS_LIST_VIEW,          //获取乘车码列表视图\r
+    ALIPAY_TRANS_ANI_VIEW,               //获取乘车码列表动画视图:加载动画\r
 \r
     ALIPAY_INTERFACES_MAX\r
 } alipayInterfacesId;\r
@@ -97,7 +97,7 @@ typedef enum {
 } alipayTransResId;\r
 \r
 typedef enum {\r
-    ALIPAY_TRANS_GET_LIST_FIRST = 0,\r
+    ALIPAY_TRANS_GET_LIST_FIRST = 0,        //首次获取交通卡交易列表索引\r
     ALIPAY_TRANS_GET_LIST_CLICK_DETAIL,\r
     ALIPAY_TRANS_GET_LIST_CODE_DETAIL,\r
 } alipayTransGetListId;\r
index 72b52bc..ad81517 100644 (file)
@@ -191,7 +191,7 @@ bool AlipayModel::AlipayStartBind(void)
         return false;\r
     }\r
 \r
-    alipayApi->bind_start();\r
+    alipayApi->bind_start(); //调用支付宝API开始绑定流程\r
     uint8_t str[ALIPAY_GET_BIND_STR_MAX_LENGTH] = { 0 };\r
     AlipayGetBindCode(str);\r
     return true;\r
@@ -271,12 +271,14 @@ void AlipayModel::AlipayStopSwitchTimer()
     return;\r
 }\r
 \r
+//通过 alipay_get_bind_status 获取绑定状态,判断是否需要跳转绑定页面\r
 bool AlipayModel::AlipayGetBindstate(void)\r
 {\r
     bool state = alipayApi->get_bind_state();\r
     return state;\r
 }\r
 \r
+//通过 alipay_get_bind_str 获取绑定码串生成二维码\r
 int32_t AlipayModel::AlipayGetBindCode(uint8_t *bindStr)\r
 {\r
     int32_t bindStrLen = ALIPAY_GET_BIND_STR_MAX_LENGTH;\r
@@ -285,6 +287,7 @@ int32_t AlipayModel::AlipayGetBindCode(uint8_t *bindStr)
     return ret;\r
 }\r
 \r
+//通过 alipay_get_pay_str 获取支付码串生成二维码\r
 int32_t AlipayModel::AlipayGetPayCode(uint8_t *payStr)\r
 {\r
     uint32_t payStrLen = ALIPAY_GET_PAY_STR_MAX_LENGTH;\r
@@ -293,6 +296,7 @@ int32_t AlipayModel::AlipayGetPayCode(uint8_t *payStr)
     return ret;\r
 }\r
 \r
+//通过 alipay_get_nickname 获取用户昵称\r
 int32_t AlipayModel::AlipayGetNickName(uint8_t *nickName)\r
 {\r
     uint32_t nickNameLen = ALIPAY_GET_NICKNAME_MAX_LENGTH;\r
@@ -301,6 +305,7 @@ int32_t AlipayModel::AlipayGetNickName(uint8_t *nickName)
     return ret;\r
 }\r
 \r
+//通过 alipay_get_logon_id 获取用户登录账号\r
 int32_t AlipayModel::AlipayGetIdName(uint8_t *idStr)\r
 {\r
     uint32_t idStrLen = ALIPAY_GET_ID_STR_MAX_LENGTH;\r
@@ -309,6 +314,7 @@ int32_t AlipayModel::AlipayGetIdName(uint8_t *idStr)
     return ret;\r
 }\r
 \r
+//通过 alipay_get_aid_code 获取帮助码串生成二维码\r
 int32_t AlipayModel::AlipayGetAidCode(int8_t *aidStr)\r
 {\r
     uint32_t aidStrLen = ALIPAY_GET_AID_STR_MAX_LENGTH;\r
@@ -317,6 +323,7 @@ int32_t AlipayModel::AlipayGetAidCode(int8_t *aidStr)
     return ret;\r
 }\r
 \r
+//通过 alipay_remove_bind 解除绑定关系\r
 void AlipayModel::AlipayUnbind(void)\r
 {\r
     int32_t ret = alipayApi->remove_bind();\r
@@ -348,6 +355,7 @@ void AlipayModel::AlipayExitLpm(void)
     return;\r
 }\r
 \r
+/*从支付宝获取最后一次交易的交易码和交易卡标题,并将结果存储在相应的数组中*/\r
 int32_t AlipayModel::AlipayGetLastTranscode()\r
 {\r
     memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN);\r
@@ -355,10 +363,11 @@ int32_t AlipayModel::AlipayGetLastTranscode()
     uint32_t len = ALIPAY_TRANS_CODE_MAX_LEN;\r
 \r
     int32_t ret = alipayApi->get_last_transcode(cardTitle_, transCode_, &len);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:ret:%u,len:%u.", ret, len);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:ret:%u,len:%u.", ret, len);\r
     return ret;\r
 }\r
 \r
+/*获取本地交易列表*/\r
 int32_t AlipayModel::AlipayGetLocalTranslist()\r
 {\r
     cardInfo_ = AlipayTransGetCardList();\r
@@ -366,7 +375,7 @@ int32_t AlipayModel::AlipayGetLocalTranslist()
         sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH);\r
     uint32_t localListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH;\r
     int32_t ret = alipayApi->get_local_translist(cardInfo_, &localListSize, &cardSum_);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetLastTranscode in:%u.", ret);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "获取本地交易列表 in:%u.", ret);\r
     return ret;\r
 }\r
 \r
@@ -386,7 +395,7 @@ int32_t AlipayModel::AlipayGetOnlineTranslist()
     uint32_t onListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH;\r
     uint32_t onLineNum = 0;\r
     int32_t ret = alipayApi->get_online_translist(onLineList, &onListSize, &onLineNum);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetOnlineTranslist in,ret:%u,num:%u.", ret, onLineNum);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetOnlineTranslist in,ret:%u,num:%u.", ret, onLineNum);\r
 \r
     if (ret == 0) {\r
         memset_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0,\r
@@ -406,28 +415,32 @@ int32_t AlipayModel::AlipayUpdateTransCard(uint32_t index)
     return ret;\r
 }\r
 \r
+// 检查指定索引的交易卡状态\r
 int32_t AlipayModel::AlipayCheckTransCard(uint32_t index)\r
 {\r
     mc_alipay_tans_card_status_t cardStatus = { 0 };\r
+    //检查指定索引的交易卡状态\r
     int32_t ret = alipayApi->check_trans_cartstatus(&cardInfo_[index], &cardStatus);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret);\r
+    // 如果交易卡存在且剩余使用次数大于等于最小有效次数,返回成功\r
     if (cardStatus.card_exits && cardStatus.remain_use_count >= ALIPAY_TRANS_CARD_MIN_VALID_NUM) {\r
         return 0;\r
     }\r
     return -1;\r
 }\r
 \r
+// 获取指定索引的交易码\r
 int32_t AlipayModel::AlipayGetTransCode(uint32_t index)\r
 {\r
-    cardInfo_ = AlipayTransGetCardList();\r
+    cardInfo_ = AlipayTransGetCardList();                                                       //获取交易卡列表\r
     memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN);\r
     memset_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, 0, ALIPAY_TRANS_CARD_MEMBER_LEN);\r
     transCodeLen_ = ALIPAY_TRANS_CODE_MAX_LEN;\r
-    int32_t ret = alipayApi->get_transcode(&cardInfo_[index], transCode_, &transCodeLen_);\r
-    if (ret == 0) {\r
+    int32_t ret = alipayApi->get_transcode(&cardInfo_[index], transCode_, &transCodeLen_);      //获取指定索引的交易码\r
+    if (ret == 0) {                                                                             //如果获取成功,复制卡标题\r
         memcpy_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, cardInfo_[index].title, ALIPAY_TRANS_CARD_MEMBER_LEN);\r
     }\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayCheckTransCard in:%u.", ret);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetTransCode in:%u.", ret);\r
     return ret;\r
 }\r
 \r
@@ -489,7 +502,7 @@ void AlipayModel::AlipayTransStopGetListsTimer(void)
 \r
 void AlipayMsgTransListCallBackProcFunc(uint32_t actionRes)\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMsgTransListCallBackProcFunc in.");\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMsgTransListCallBackProcFunc in.%d",actionRes);\r
     if (AlipayMainView::GetInstance() == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::GetInstance is null, do nothing.");\r
         return;\r
@@ -550,6 +563,7 @@ void AlipayMsgTransSpeCardCallBackProcFunc(uint32_t actionRes)
 \r
 void AlipayMsgCallBack(uint32_t msgId, uint32_t actionRes)\r
 {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMsgCallBack in,msgId:%u,actionRes:%u.", msgId, actionRes);\r
     if (msgId == ALIPAY_MSG_UPDATA_TRANS_LIST) {\r
         GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlipayMsgTransListCallBackProcFunc, actionRes));\r
     } else if (msgId == ALIPAY_MSG_UPDATA_SPECIAL_CARD) {\r
@@ -618,6 +632,7 @@ void AlipayModel::AlipaySetBindFlag(bool bindFlag)
 \r
 uint32_t AlipayModel::AlipayGetSwitchIndex(void)\r
 {\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayModel::AlipayGetSwitchIndex = %d",switchIndex_);\r
     return switchIndex_;\r
 }\r
 \r
index f2c9398..402be8c 100644 (file)
@@ -5,8 +5,10 @@
  * Create:\r
  */\r
 \r
-#include "AlipayPresenter.h"\r
-#include "AlipayMainView.h"\r
+// #include "AlipayPresenter.h"\r
+// #include "AlipayMainView.h"\r
+#include "alipay/include/AlipayPresenter.h"\r
+#include "alipay/include/AlipayMainView.h"\r
 #include "ChangeSliceListener.h"\r
 #include "graphic_service.h"\r
 #include "string"\r
 #include "sstream"\r
 #include "errcode.h"\r
 #include "pm_definition.h"\r
-#include "AlipayListView.h"\r
-#include "AlipayListItemView.h"\r
-#include "AlipayTransListItemView.h"\r
-#include "AlipayTransListView.h"\r
+// #include "AlipayListView.h"\r
+// #include "AlipayListItemView.h"\r
+// #include "AlipayTransListItemView.h"\r
+// #include "AlipayTransListView.h"\r
+#include "alipay/include/AlipayList/AlipayListView.h"\r
+#include "alipay/include/AlipayList/AlipayListItemView.h"\r
+#include "alipay/include/AlipayTrans/AlipayTransListItemView.h"\r
+#include "alipay/include/AlipayTrans/AlipayTransListView.h"\r
 #include "custom_utils.h"\r
 #include "common/key_code.h"\r
 #include "gfx_utils/mem_check.h"\r
@@ -125,15 +131,25 @@ void AlipayPresenter::ClickJumpPay(UIView &view)
     return;\r
 }\r
 \r
+/**\r
+ * @brief 点击跳转到交通卡相关视图的处理函数\r
+ * \r
+ * 当用户点击跳转到交通卡相关视图的按钮时,此函数会被调用。\r
+ * 它会尝试获取本地交通卡交易列表,根据获取结果决定跳转到不同的视图。\r
+ * \r
+ * @param view 被点击的视图对象\r
+ */\r
 void AlipayPresenter::ClickJumpTrans(UIView &view)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickJumpTrans start");\r
-    int32_t ret = alipayMode_->AlipayGetLocalTranslist();\r
-    if (ret != 0) {\r
-        AlipaySetSwitchIndex(ALIPAY_TRANS_GET_LIST_FIRST);\r
-        view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_GET_TRANS_LIST_VIEW);\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "点击跳转到交通卡相关视图的操作开始");\r
+    int32_t ret = alipayMode_->AlipayGetLocalTranslist();                   //获取本地交通卡交易列表\r
+    if (ret != 0) {                                                         //获取本地交通卡交易列表失败\r
+        AlipaySetSwitchIndex(ALIPAY_TRANS_GET_LIST_FIRST);                  //设置切换索引为首次获取交通卡交易列表\r
+        view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_GET_TRANS_LIST_VIEW);    //将当前视图从列表视图切换到获取交通卡交易列表视图\r
     } else if (ret == 0) {\r
-        int32_t get_res = alipayMode_->AlipayGetLastTranscode();\r
+        int32_t get_res = alipayMode_->AlipayGetLastTranscode();            //从支付宝获取最后一次交易的交易码\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickJumpTrans get_res:%d", get_res);\r
         if (get_res == 0) {\r
             view_->ChangeView(ALIPAY_LIST_VIEW, ALIPAY_TRANS_VIEW);\r
         } else {\r
@@ -145,6 +161,7 @@ void AlipayPresenter::ClickJumpTrans(UIView &view)
 \r
 void AlipayPresenter::ClickRefreshList(UIView &view)\r
 {\r
+    //刷新交通卡列表\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickRefreshList start");\r
     alipayMode_->AlipaySendMsg(ALIPAY_MSG_UPDATA_TRANS_LIST);\r
     view_->ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_TRANS_ANI_VIEW);\r
@@ -153,6 +170,7 @@ void AlipayPresenter::ClickRefreshList(UIView &view)
 \r
 void AlipayPresenter::ClickBackList(UIView &view)\r
 {\r
+    //获取乘车码列表视图退回到列表视图\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickBackList start");\r
     view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW);\r
     return;\r
@@ -160,8 +178,11 @@ void AlipayPresenter::ClickBackList(UIView &view)
 \r
 void AlipayPresenter::ClickUpdateList(UIView &view)\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickUpdateList start");\r
+    //获取交通卡列表\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickUpdateList start");\r
+    // 发送更新交通卡列表的消息\r
     alipayMode_->AlipaySendMsg(ALIPAY_MSG_UPDATA_TRANS_LIST);\r
+    // 从获取交通卡列表视图切换到交通卡动画视图\r
     view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_ANI_VIEW);\r
     return;\r
 }\r
@@ -189,6 +210,7 @@ void AlipayPresenter::ClickTransToTransList(UIView &view)
     return;\r
 }\r
 \r
+//点击刷新按钮\r
 void AlipayPresenter::ClickTransToTransCode(UIView &view)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickTransToTransCode start");\r
@@ -225,25 +247,27 @@ void AlipayPresenter::ClickTransToTransCode(UIView &view)
     return;\r
 }\r
 \r
+/// @brief 处理用户点击重试获取支付宝交易码\r
+/// @param view \r
 void AlipayPresenter::ClickRetryTransCode(UIView &view)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickRetryTransCode start");\r
-    uint32_t index = AlipayGetCardNum();\r
-    int32_t ret = alipayMode_->AlipayGetTransCode(index);\r
+    uint32_t index = AlipayGetCardNum();                                            //获取当前选中的交通卡索引\r
+    int32_t ret = alipayMode_->AlipayGetTransCode(index);                           //尝试重新获取交易码\r
     if (ret == 0) {\r
-        view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_VIEW);\r
+        view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_VIEW);           //成功获取交易码,跳转到交易码视图\r
     } else if (ret == ALIPAY_TRANS_CODE_NET_ERROR) {\r
         AlipaySetSwitchIndex(ALIPAY_TRANS_RES_CODE);\r
-        view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_RES_VIEW);\r
+        view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_RES_VIEW);      //网络错误,跳转到交易码获取失败视图\r
     } else {\r
         if (ret == ALIPAY_TRANS_CODE_DATA_LIMIT) {\r
-            AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE);\r
+            AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE);                         //数据限制错误:设置安全提示\r
         } else if (ret == ALIPAY_TRANS_CODE_NOT_SUPPORT) {\r
-            AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT);\r
+            AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT);                    //不支持的错误:设置不支持提示\r
         } else {\r
-            AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW);\r
+            AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW);                    //未知错误:设置未知错误提示\r
         }\r
-        view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW);\r
+        view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW);      //切换到相应的错误提示视图\r
     }\r
     return;\r
 }\r
@@ -476,6 +500,7 @@ int32_t AlipayPresenter::AlipayGetIdName(uint8_t *idStr)
     return alipayMode_->AlipayGetIdName(idStr);\r
 }\r
 \r
+//通过获取帮助码串生成二维码\r
 int32_t AlipayPresenter::AlipayGetAidCode(int8_t *aidStr)\r
 {\r
     return alipayMode_->AlipayGetAidCode(aidStr);\r
@@ -500,6 +525,7 @@ void AlipayPresenter::AlipaySetSwitchIndex(uint32_t switchIndex)
     alipayMode_->AlipaySetSwitchIndex(switchIndex);\r
 }\r
 \r
+//获取\r
 uint32_t AlipayPresenter::AlipayGetCardNum(void)\r
 {\r
     return alipayMode_->AlipayGetCardNum();\r
index 0bdadd0..ec161aa 100644 (file)
@@ -10,7 +10,8 @@
 #include "font/ui_font.h"\r
 #include <string>\r
 #include "cmsis_os.h"\r
-#include "AlipayGetTransList.h"\r
+// #include "AlipayGetTransList.h"\r
+#include "alipay/include/AlipayTrans/AlipayGetTransList.h"\r
 \r
 namespace OHOS {\r
 static const int16 EXIT_LABEL_X_FIRST = 60;\r
index 96e50c9..c9d126c 100644 (file)
@@ -180,6 +180,9 @@ static int bluetooth_init_all(void)
     PhoneServiceInit();\r
     InitBtHeadsetEvent(); // 蓝牙ct和tg适配初始化\r
 \r
+    BtInitSpp();\r
+\r
+    #if 0 // 安全模式\r
     if(uapi_dev_runtime_get_safemode_flag())\r
     {\r
 \r
@@ -189,6 +192,7 @@ static int bluetooth_init_all(void)
 \r
         BtInitSpp();\r
     }\r
+    #endif\r
    \r
     /*******************ble init ****************/\r
     wrapper_ble_register();\r
index f22a6bb..3db4102 100644 (file)
Binary files a/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/lib/rv70_llvm/fwk/device_certificate/lib/libfwk_device_certificate_rv70_llvm.a and b/code/sdk/vendor/alipay_sdk/alipay_sec_sdk_v3.0.0/lib/rv70_llvm/fwk/device_certificate/lib/libfwk_device_certificate_rv70_llvm.a differ