根据支付宝乘车码送测提出问题修改
authorluozheng <1732036298@qq.com>
Fri, 27 Jun 2025 07:21:14 +0000 (15:21 +0800)
committerluozheng <1732036298@qq.com>
Fri, 27 Jun 2025 07:21:14 +0000 (15:21 +0800)
code/sdk/application/wearable/alipay/service/alipay_feature.h
code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayModel.h
code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayPresenter.h
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayExitBind.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp
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/AlipayTransTips.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayUnbindFinish.cpp

index 63bfc22..b05b866 100755 (executable)
@@ -99,6 +99,9 @@ typedef struct {
 
 typedef enum {
     ALIPAY_TRANS_SUCCESS = 0,
+    ALIPAY_TRANS_CODE_CREATE_FAIL = 7,                                  //生码失败-更新后再尝试
+    ALIPAY_TRANS_CODE_List_GET_FAIL = 26,                               // 获取特殊卡列表失败,设备已经在手机端解绑,设备端也需要调用解绑接口
+    ALIPAY_TRANS_CODE_SPECIAL_GET_FAIL = 256,                           // 获取乘车码列表失败,,设备已经在手机端解绑,设备端也需要调用解绑接口
     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,                                   // 网络错误
index b6cc00c..024ad93 100644 (file)
@@ -61,6 +61,7 @@ public:
     bool ble_disconnect_AlipayStartBind(void);\r
     void AlipayStopdisconnecTimer(void);\r
     bool AlipayStartBind(void);\r
+    bool AlipayFinishBind(void);\r
     bool AlipayStartSwitchTimer(uint16_t time);\r
     void AlipayStopBindTimer(void);\r
     void AlipayStopSwitchTimer();\r
@@ -94,6 +95,8 @@ public:
 \r
     void AlipayScreenControl(bool turnOnFlag);\r
     void delete_all_files_in_folder(const char *folder_path);\r
+    int AlipayGetSpecificErrorCode(void);\r
+    void AlipaySetSpecificErrorCode(int errorCode);\r
 private:\r
     osTimerId_t bindTimerId = nullptr;\r
     osTimerId_t ble_disconnect_bindTimerId = nullptr;\r
@@ -111,6 +114,7 @@ private:
     uint8_t* transCode_ = nullptr;\r
     uint32_t transCodeLen_;\r
     char cardTitle_[ALIPAY_TRANS_CARD_MEMBER_LEN];\r
+    int specificr_error_code{0};\r
 };\r
 }\r
 \r
index 69bef98..f9d22c7 100644 (file)
@@ -5,8 +5,8 @@
  * Create:\r
  */\r
 \r
-#ifndef ALIPAY_PRESENTER_H\r
-#define ALIPAY_PRESENTER_H\r
+#ifndef __ALIPAY_PRESENTER_H__\r
+#define __ALIPAY_PRESENTER_H__\r
 \r
 #include "Presenter.h"\r
 #include "BaseView.h"\r
@@ -47,6 +47,7 @@ constexpr char *ALIPAY_TRANS_GET_LIST_RETRY = (char *)"alipaytransgetlistre";
 constexpr char *ALIPAY_TRANS_GET_LIST_DETAIL = (char *)"alipaytransgetlistdet";\r
 constexpr char *ALIPAY_TRANS_CERTAIN_BACK_LIST = (char *)"alipaytransbacklist";\r
 constexpr char *ALIPAY_TRANS_CERTAIN_TO_TRANS = (char *)"alipaytranstotranslist";\r
+constexpr char *ALIPAY_TRANS_CERTAIN_TO_BIND = (char *)"alipaytranstoalipaybind";\r
 constexpr char *ALIPAY_TRANS_RETRY_TRANS_CODE = (char *)"alipaytransretrycode";\r
 constexpr char *ALIPAY_TRANS_CODE_RES_DETAIL = (char *)"alipaytranscoderesde";\r
 constexpr char *ALIPAY_TRANS_LIST_RES_DETAIL = (char *)"alipaytranslistresde";\r
@@ -89,6 +90,7 @@ typedef enum {
     ALIPAY_TRANS_TIPS_SECURE,           //存在安全风险,12小时内不可用,请切换到手机侧使用\r
     ALIPAY_TRANS_TIPS_LIST_UNKNOW,      //未知错误_具体错误码,请联系设备厂商解决\r
     ALIPAY_TRANS_TIPS_NOT_SUPPORT,      //暂不支持,请切换到手机侧使用\r
+    LIPAY_TRANS_TIPS_UNBIND,            //该设备已经在手机端解绑,请用手机支付宝扫码绑定\r
 } alipayTransTipsId;\r
 \r
 typedef enum {\r
@@ -135,6 +137,7 @@ public:
     void ClickBackList(UIView &view);\r
     void ClickUpdateList(UIView &view);\r
     void ClickTransToTransList(UIView &view);\r
+    void ClickTransToAlipayBind(UIView &view);\r
     void ClickRetryTransCode(UIView &view);\r
     void ClickTransJumpHelp(UIView &view);\r
     void ClickTranstBackList(UIView &view);\r
index c24d184..8424125 100644 (file)
@@ -29,7 +29,7 @@ static const int16 EXIT_LABEL_FONT_FIRST = 30;
 static const int16 EXIT_LABEL_FONT_SEC = 30;\r
 \r
 static const char *EXIT_LABEL_TEXT_FIRST = (char *)"未完成绑定";\r
-static const char *EXIT_LABEL_TEXT_SECOND = (char *)"å½\93å\89\8dæ\9cªå®\8cæ\88\90ç»\91å®\9aï¼\8cé\80\80å\87ºå\9c¨进来需要重新扫码绑定";\r
+static const char *EXIT_LABEL_TEXT_SECOND = (char *)"å½\93å\89\8dæ\9cªå®\8cæ\88\90ç»\91å®\9aï¼\8cé\80\80å\87ºå\86\8d进来需要重新扫码绑定";\r
 \r
 static const int16 EXIT_BUTTON_EXIT_X = 58;\r
 static const int16 EXIT_BUTTON_EXIT_Y = 320;\r
index 6a1cef5..9489664 100644 (file)
@@ -814,12 +814,13 @@ void AlipayMainView::DestroyTempView(int16 hideView)
         }\r
     }\r
     if (hideView == ALIPAY_TRANS_TIPS_VIEW) {\r
-\r
+        #if 0\r
         if(AlipayModel::GetInstance()->AlipayGetSwitchIndex() == ALIPAY_TRANS_TIPS_LIST_UNKNOW)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DestroyTempView ALIPAY_TRANS_TIPS_UNKNOW");\r
             AlipayModel::GetInstance()->delete_all_files_in_folder("/user/alipay/");\r
         }\r
+        #endif\r
         delete alipayTransTips;\r
         alipayTransTips = nullptr;\r
     } else if (hideView == ALIPAY_TRANS_RES_VIEW) {\r
index 5144ac3..4bf148d 100644 (file)
@@ -7,7 +7,8 @@
 \r
 #include "UiConfig.h"\r
 #include "alipay_feature.h"\r
-#include "AlipayModel.h"\r
+// #include "AlipayModel.h"\r
+#include "alipay/include/AlipayModel.h"\r
 #include "AlipayMainView.h"\r
 #include "graphic_service.h"\r
 \r
@@ -198,6 +199,13 @@ bool AlipayModel::AlipayStartBind(void)
     return true;\r
 }\r
 \r
+bool AlipayModel::AlipayFinishBind(void)\r
+{\r
+    AlipayStopBindTimer();\r
+    alipayApi->bind_finish();\r
+    return true;\r
+}\r
+\r
 void AlipaySwitchTimerCallBackProc(void *argument)\r
 {\r
     UNUSED(argument);\r
@@ -503,7 +511,7 @@ void AlipayModel::AlipayTransStopGetListsTimer(void)
 \r
 void AlipayMsgTransListCallBackProcFunc(uint32_t actionRes)\r
 {\r
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayMsgTransListCallBackProcFunc in.%d",actionRes);\r
+    WEARABLE_LOGD(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
@@ -523,7 +531,10 @@ void AlipayMsgTransListCallBackProcFunc(uint32_t actionRes)
     } else {\r
         if (actionRes == ALIPAY_TRANS_CARD_LIST_OWN_TOO_MANY_CARD) {\r
             AlipayModel::GetInstance()->AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_TO_MUCH);\r
+        } else if(actionRes == ALIPAY_TRANS_CODE_SPECIAL_GET_FAIL) {\r
+            AlipayModel::GetInstance()->AlipaySetSwitchIndex(LIPAY_TRANS_TIPS_UNBIND);\r
         } else {\r
+            AlipayModel::GetInstance()->AlipaySetSpecificErrorCode(actionRes);\r
             AlipayModel::GetInstance()->AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_UNKNOW);\r
         }\r
         AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_TIPS_VIEW);\r
@@ -546,7 +557,7 @@ void AlipayMsgTransSpeCardCallBackProcFunc(uint32_t actionRes)
         } else {\r
             AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_VIEW);\r
         }\r
-    } else if (actionRes == ALIPAY_TRANS_CODE_NET_ERROR) {\r
+    } else if (actionRes == ALIPAY_TRANS_CODE_NET_ERROR || actionRes == ALIPAY_TRANS_CODE_CREATE_FAIL) {\r
         AlipayModel::GetInstance()->AlipaySetSwitchIndex(ALIPAY_TRANS_RES_CODE);\r
         AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_RES_VIEW);\r
     } else {\r
@@ -554,7 +565,10 @@ void AlipayMsgTransSpeCardCallBackProcFunc(uint32_t actionRes)
             AlipayModel::GetInstance()->AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE);\r
         } else if (actionRes == ALIPAY_TRANS_CODE_NOT_SUPPORT) {\r
             AlipayModel::GetInstance()->AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT);\r
+        } else if (actionRes == ALIPAY_TRANS_CODE_List_GET_FAIL) {\r
+            AlipayModel::GetInstance()->AlipaySetSwitchIndex(LIPAY_TRANS_TIPS_UNBIND);\r
         } else {\r
+            AlipayModel::GetInstance()->AlipaySetSpecificErrorCode(actionRes);\r
             AlipayModel::GetInstance()->AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW);\r
         }\r
         AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_TIPS_VIEW);\r
@@ -692,6 +706,15 @@ char* AlipayModel::AlipayGetCardTitle(void)
     return cardTitle_;\r
 }\r
 \r
+int AlipayModel::AlipayGetSpecificErrorCode(void)\r
+{\r
+    return specificr_error_code;\r
+}\r
+void AlipayModel::AlipaySetSpecificErrorCode(int errorCode)\r
+{\r
+    specificr_error_code = errorCode;\r
+}\r
+\r
 /// @brief 支付宝屏幕控制\r
 /// @param turnOnFlag \r
 void AlipayModel::AlipayScreenControl(bool turnOnFlag)\r
index 396c190..dc46fac 100644 (file)
@@ -153,6 +153,7 @@ void AlipayPresenter::ClickExitAlipay(UIView &view)
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickExitAlipay start");\r
     // uint16 preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
     // NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+    AlipayModel::GetInstance()->AlipayFinishBind();\r
     NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
     return;\r
 }\r
@@ -242,6 +243,14 @@ void AlipayPresenter::ClickTransToTransList(UIView &view)
     view_->ChangeView(currentView, ALIPAY_TRANS_LIST_VIEW);\r
     return;\r
 }\r
+void AlipayPresenter::ClickTransToAlipayBind(UIView &view)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickTransJumpHelp start");\r
+    AlipayModel::GetInstance()->AlipayUnbind();//调用解绑接口\r
+    int16_t currentView = alipayMode_->GetAlipayInterLis();\r
+    view_->ChangeView(currentView, ALIPAY_BIND_VIEW);\r
+    return;\r
+}\r
 \r
 //点击刷新按钮\r
 void AlipayPresenter::ClickTransToTransCode(UIView &view)\r
@@ -273,6 +282,7 @@ void AlipayPresenter::ClickTransToTransCode(UIView &view)
         } else if (ret == ALIPAY_TRANS_CODE_NOT_SUPPORT) {\r
             AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT);\r
         } else {\r
+            AlipayModel::GetInstance()->AlipaySetSpecificErrorCode(ret);\r
             AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW);\r
         }\r
         view_->ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW);\r
@@ -298,6 +308,7 @@ void AlipayPresenter::ClickRetryTransCode(UIView &view)
         } else if (ret == ALIPAY_TRANS_CODE_NOT_SUPPORT) {\r
             AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT);                    //不支持的错误:设置不支持提示\r
         } else {\r
+            AlipayModel::GetInstance()->AlipaySetSpecificErrorCode(ret);\r
             AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW);                    //未知错误:设置未知错误提示\r
         }\r
         view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW);      //切换到相应的错误提示视图\r
@@ -462,6 +473,7 @@ static const AlipayPresentMapper1 PresentMapper[] = {
     {ALIPAY_TRANS_GET_LIST_DETAIL, &AlipayPresenter::ClickTransJumpHelp},\r
     {ALIPAY_TRANS_CERTAIN_BACK_LIST, &AlipayPresenter::ClickTranstBackList},\r
     {ALIPAY_TRANS_CERTAIN_TO_TRANS, &AlipayPresenter::ClickTransToTransList},\r
+    {ALIPAY_TRANS_CERTAIN_TO_BIND, &AlipayPresenter::ClickTransToAlipayBind},\r
     {ALIPAY_TRANS_LIST_BUTTON, &AlipayPresenter::ClickTransToTransCode},\r
     {ALIPAY_TRANS_RETRY_TRANS_CODE, &AlipayPresenter::ClickRetryTransCode},\r
     {ALIPAY_TRANS_LIST_RES_DETAIL, &AlipayPresenter::ClickTransJumpGetList},\r
index 4aec64d..c456d2a 100644 (file)
@@ -27,6 +27,7 @@ static const char *TIPS_LABEL_TEXT_2 = (char *)"开通的乘车码数量太多
 static const char *TIPS_LABEL_TEXT_3 = (char *)"存在安全风险,12小时内不可用,请切换到手机侧使用";\r
 static const char *TIPS_LABEL_TEXT_4 = (char *)"未知错误_具体错误码,请联系设备厂商解决";\r
 static const char *TIPS_LABEL_TEXT_5 = (char *)"暂不支持,请切换到手机侧使用";\r
+static const char *TIPS_LABEL_TEXT_6 = (char *)"该设备已经在手机端解绑,请用手机支付宝扫码绑定";\r
 \r
 static const int16 RES_IMAGE_X = (HORIZONTAL_RESOLUTION - 112) / 2;\r
 static const int16 RES_IMAGE_Y = 55;\r
@@ -34,6 +35,7 @@ static const int16 RES_IMAGE_WIDTH = 112;
 static const int16 RES_IMAGE_HEIGHT = 112;\r
 \r
 static const char *RECOGNIZE_BUTTON = (char *)"确定";\r
+static const char *RECOGNIZE_BUTTON_BIND = (char *)"开始绑定";\r
 static const int16 RECOGNIZE_BUTTON_FONT = 30;\r
 static const int16 RECOGNIZE_BUTTON_X = (HORIZONTAL_RESOLUTION - 280) / 2;\r
 static const int16 RECOGNIZE_BUTTON_Y = 315;\r
@@ -50,6 +52,7 @@ static const AlipayTransTipsInfo g_AlipayTransTipsMapper[] = {
     {TIPS_LABEL_TEXT_3, ALIPAY_TRANS_CERTAIN_TO_TRANS},\r
     {TIPS_LABEL_TEXT_4, ALIPAY_TRANS_CERTAIN_TO_TRANS},\r
     {TIPS_LABEL_TEXT_5, ALIPAY_TRANS_CERTAIN_TO_TRANS},\r
+    {TIPS_LABEL_TEXT_6, ALIPAY_TRANS_CERTAIN_TO_BIND},\r
 };\r
 \r
 AlipayTransTips::AlipayTransTips(AlipayPresenter *presenter)\r
@@ -137,7 +140,14 @@ bool AlipayTransTips::AlipayInitButton(uint32_t index)
     }\r
     alipayButton->SetPosition(RECOGNIZE_BUTTON_X, RECOGNIZE_BUTTON_Y, RECOGNIZE_BUTTON_WIDTH,\r
         RECOGNIZE_BUTTON_HEIGHT);\r
-    alipayButton->SetText(RECOGNIZE_BUTTON);\r
+    if(index == LIPAY_TRANS_TIPS_UNBIND)\r
+    {\r
+        alipayButton->SetText(RECOGNIZE_BUTTON_BIND);\r
+    }\r
+    else\r
+    {\r
+        alipayButton->SetText(RECOGNIZE_BUTTON);\r
+    }\r
     alipayButton->SetAlign(TEXT_ALIGNMENT_CENTER);\r
     alipayButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, RECOGNIZE_BUTTON_FONT);\r
     alipayButton->SetViewId(g_AlipayTransTipsMapper[index].button);\r
@@ -156,9 +166,21 @@ bool AlipayTransTips::InitTipsView(uint32_t index)
     SetOnDragListener(presenter_);\r
     SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
 \r
-    if (!AlipayInitLabel(g_AlipayTransTipsMapper[index].str)) {\r
+    if(index == ALIPAY_TRANS_TIPS_UNKNOW || index == ALIPAY_TRANS_TIPS_LIST_UNKNOW)\r
+    {\r
+        std::string error_code_str;\r
+        error_code_str = "未知错误_错误码:"+ std::to_string(AlipayModel::GetInstance()->AlipayGetSpecificErrorCode())+",请联系设备厂商解决";\r
+        if (!AlipayInitLabel(error_code_str.c_str())) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayTransTips::InitView AlipayInitLabel() false");\r
         return false;\r
+        }\r
+    }\r
+    else\r
+    {\r
+        if (!AlipayInitLabel(g_AlipayTransTipsMapper[index].str)) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayTransTips::InitView AlipayInitLabel() false");\r
+            return false;\r
+        }\r
     }\r
     if (!AlipayInitImage(PNG_ALIPAY_BIND_FAILURE)) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayTransTips::InitView AlipayInitImage() false");\r
index 9a3c629..df9f2a5 100644 (file)
@@ -15,7 +15,7 @@ static AlipayUnbindFinish *g_alipayUnbindFinish = nullptr;
 \r
 static const char *UNBIND_FINISH_TITLE = (char *)"解绑成功";\r
 static const char *UNBIND_FINISH_TEXT =\r
-    (char *)"设备侧已解绑,请到手机支付宝搜索进入“智能设备”小程序查看,若手机侧未解绑,则需要操作解绑";\r
+    (char *)"手表侧已解绑,请到手机支付宝搜索进入“智能设备”小程序查看,若手机侧未解绑,则需要操作解绑";\r
 \r
 static const char *UNBIND_FINISH_BUTTON = (char *)"确认";\r
 \r