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