#include "TjdUiAppAlipayPresenter.h" #include "NativeAbility.h" #include "TjdUiAppAlipayModel.h" #include "TjdUiAppAlipayView.h" #include "TjdUiRegisterManager.h" #include "TjdUiSettingCenter.h" #include "common/key_code.h" #include "dock/input_device.h" #include "graphic_service.h" #include "power_display_service.h" #include "sys_config.h" #include "ui_screennotify.h" namespace TJD { TJD_REGIST_NATIVE_MENU(TJD_APP_VIEW_ALIPAY, TjdUiAppAlipayView, TjdUiAppAlipayPresenter, IMG_MENU_LIST_MENU_ALIPAY, STR_ID_32); #define ALIPAY_GET_PAY_STR_MAX_LENGTH 20 #define ENABLE_PRINT_INFO 1 #if ENABLE_PRINT_INFO #define static_print_info(...) sys_ui_log_i(__VA_ARGS__) // 一般信息打印宏控制 #define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) // 警告信息打印一般常开 #define static_print_error(...) sys_ui_log_e(__VA_ARGS__) // 错误信息打印一般常开 #define static_print_debug(...) sys_ui_log_d(__VA_ARGS__) // 调试信息打印一般常开 #else #define static_print_info(...) #define static_print_warn(...) #define static_print_error(...) #define static_print_debug(...) #endif static TjdUiAppAlipayPresenter *g_alipayPresenter = nullptr; TjdUiAppAlipayPresenter::TjdUiAppAlipayPresenter() { g_alipayPresenter = this; } TjdUiAppAlipayPresenter::~TjdUiAppAlipayPresenter() { g_alipayPresenter = nullptr; } /* 付款码刷新时间 */ static constexpr uint16_t SWITCH_PAY_CODE_TIME = 60000; TjdUiAppAlipayPresenter *TjdUiAppAlipayPresenter::GetInstance(void) { return g_alipayPresenter; } static void AlipayStatusNotifyCallback(ScreenStatus status) { static bool isScreenOff = false; TjdUiAppAlipayPresenter *presenter = TjdUiAppAlipayPresenter::GetInstance(); if (presenter == nullptr) { return; } if (status == ScreenStatus::SCREEN_STATUS_ON) { if (isScreenOff) { isScreenOff = false; presenter->RefreshPayCodeEvent(); } } else if (status == ScreenStatus::SCREEN_STATUS_OFF) { isScreenOff = true; } } void TjdUiAppAlipayPresenter::OnStart() { TjdUiCommonOnKeyListener::GetInstance()->SetOnKeyActListener(this, KeyModelType::APP_KEY_TYPE); TjdUiAppAlipayView *alipayView = TjdUiAppAlipayView::GetInstance(); if (alipayView == nullptr) { return; } TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); alipayView->ShowView(AlipayViewIndex::ALIPAY_LOGO); uint32_t ret = model.AlipayDriverInit(); if (ret != 0) { alipayView->ShowErrorMsg("支付宝初始化失败", AlipayViewIndex::ALIPAY_UNKNOWN); return; } model.AlipayExitLpm(); if (!model.AlipayInitModel()) { alipayView->ShowErrorMsg("支付宝初始化失败", AlipayViewIndex::ALIPAY_UNKNOWN); return; } if (!StartLogoTimer()) { alipayView->ShowErrorMsg("支付宝初始化失败", AlipayViewIndex::ALIPAY_UNKNOWN); return; } registerNotifyScreenStatus(AlipayStatusNotifyCallback); } void TjdUiAppAlipayPresenter::OnStop() { TjdUiCommonOnKeyListener::GetInstance()->ClearOnKeyActListener(KeyModelType::APP_KEY_TYPE); deregisterNotifyScreenStatus(AlipayStatusNotifyCallback); TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); AlipayStopBindTimer(); AlipayStopSwitchTimer(); AlipayTransStopGetListsTimer(); model.AlipayDeinitModel(); model.AlipayEnterLpm(); model.SetQuickEnterFlag(false); TjdUiAppAlipayPresenter::GetInstance()->ResetScreenBrightness(); } bool TjdUiAppAlipayPresenter::OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event) { std::string viewId = view.GetViewId(); if (viewId.empty()) { return false; } TjdUiAppAlipayView *alipayView = TjdUiAppAlipayView::GetInstance(); if (alipayView == nullptr) { return false; } TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); if (viewId == ALIPAY_PAYCODE_VIEWID) { // List页面按下支付二维码按钮 alipayView->ShowView(AlipayViewIndex::ALIPAY_PAY_QRCODE); AlipayStartSwitchTimer(SWITCH_PAY_CODE_TIME); } else if (viewId == ALIPAY_RIDECODE_VIEWID) { // List页面按下乘车码按钮 OnClickTrans(view); } else if (viewId == ALIPAY_SWITCH_QRCODE_VIEWID) { // 乘车码页面按下切换交通卡文本 alipayView->ShowView(AlipayViewIndex::ALIPAY_RIDE_CODE_LIST); } else if (viewId == ALIPAY_SETTING_VIEWID) { // List页面按下设置按钮 alipayView->ShowView(AlipayViewIndex::ALIPAY_SETTING); } else if (viewId == ALIPAY_HELP_VIEWID) { // List页面按下帮助按钮 alipayView->ShowView(AlipayViewIndex::ALIPAY_HELP); } else if (viewId == ALIPAY_REMOVE_BIND_VIEWID) { // 设置页面按下解绑按钮 alipayView->ShowView(AlipayViewIndex::ALIPAY_UNBIND); } else if (viewId == ALIPAY_UNBIND_ENTER_VIEWID) { // 解绑页面按下确定按钮 model.AlipayUnbind(); alipayView->ShowView(AlipayViewIndex::ALIPAY_UNBIND_SUC); } else if (viewId == ALIPAY_UNBIND_CANCEL_VIEWID) { // 解绑页面按下取消按钮 alipayView->ShowView(AlipayViewIndex::ALIPAY_SETTING); } else if (viewId == ALIPAY_UNBIND_KNOWN_VIEWID) { // 解绑成功页面按下已知按钮 model.AlipayStartBind(); AlipayStartBindTimer(); alipayView->ShowView(AlipayViewIndex::ALIPAY_BIND); } else if (viewId == ALIPAY_HELP_KNOWN_VIEWID) { // 帮助页面按下已知按钮 alipayView->ShowView(AlipayViewIndex::ALIPAY_LIST); } else if (viewId == ALIPAY_EXIT_VIEWID) { // 二维码页面按下退出 alipayView->ShowView(AlipayViewIndex::ALIPAY_LIST); } else if (viewId == ALIPAY_CONSENT_PROTOCOL_VIEWID) { // 同意绑定协议 alipayView->JumpToConsentBindView(); } else if (viewId == ALIPAY_CONSENT_BIND_VIEWID) { // 同意绑定 model.AlipayStartBind(); AlipayStartBindTimer(); alipayView->ShowView(AlipayViewIndex::ALIPAY_BIND); } return false; } void TjdUiAppAlipayPresenter::ViewExitEvent(bool isSwipe) { TjdUiAppAlipayView *alipayView = TjdUiAppAlipayView::GetInstance(); if (alipayView == nullptr) { return; } TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); switch (TjdUiAppAlipayView::currentViewIndex_) { case AlipayViewIndex::ALIPAY_PROTOCOL: if (!isSwipe) { OHOS::NativeAbility::GetInstance().ChangePreSlice(); } break; case AlipayViewIndex::ALIPAY_UNKNOWN: case AlipayViewIndex::ALIPAY_LIST: case AlipayViewIndex::ALIPAY_BIND: OHOS::NativeAbility::GetInstance().ChangePreSlice(); break; case AlipayViewIndex::ALIPAY_PAY_QRCODE: if (!isSwipe) { if (model.GetQuickEnterFlag()) { OHOS::NativeAbility::GetInstance().ChangePreSlice(); } else { alipayView->ShowView(AlipayViewIndex::ALIPAY_LIST); } } break; case AlipayViewIndex::ALIPAY_SETTING: alipayView->ShowView(AlipayViewIndex::ALIPAY_LIST); break; case AlipayViewIndex::ALIPAY_HELP: alipayView->ShowView(AlipayViewIndex::ALIPAY_LIST); break; case AlipayViewIndex::ALIPAY_UNBIND: alipayView->ShowView(AlipayViewIndex::ALIPAY_SETTING); break; case AlipayViewIndex::ALIPAY_RIDE_CODE_LIST: alipayView->ShowView(AlipayViewIndex::ALIPAY_LIST); break; case AlipayViewIndex::ALIPAY_RIDE_QRCODE: alipayView->ShowView(AlipayViewIndex::ALIPAY_RIDE_CODE_LIST); break; default: break; } } /* Logo显示2秒后调用回调 */ void TjdUiAppAlipayPresenter::CompleteLogoEvent(void) { if (osTimerDelete(logoTimerId_) != osOK) { static_print_error("TjdUiAppAlipayPresenter::StartLogoTimer Delete timer fail."); } logoTimerId_ = nullptr; TjdUiAppAlipayView *alipayView = TjdUiAppAlipayView::GetInstance(); TjdUiAppAlipayPresenter *presenter = TjdUiAppAlipayPresenter::GetInstance(); if (alipayView == nullptr || presenter == nullptr) { return; } TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); // 判断是否已经绑定支付宝 if (presenter->IsAlipayBinded()) { AlipayViewIndex showIndex = AlipayViewIndex::ALIPAY_LIST; if (model.GetQuickEnterFlag()) { showIndex = AlipayViewIndex::ALIPAY_PAY_QRCODE; presenter->AlipayStartSwitchTimer(SWITCH_PAY_CODE_TIME); } presenter->RefreshPayCodeEvent(); alipayView->ShowView(showIndex); } else { alipayView->ShowView(AlipayViewIndex::ALIPAY_BIND); } } bool TjdUiAppAlipayPresenter::StartLogoTimer() { if (logoTimerId_ == nullptr) { logoTimerId_ = osTimerNew( [](void *arg) { /* 转发到UI线程 */ GraphicService::GetInstance()->PostGraphicEvent([]() { TjdUiAppAlipayPresenter *presenter = TjdUiAppAlipayPresenter::GetInstance(); if (presenter == nullptr) { return; } presenter->CompleteLogoEvent(); }); }, osTimerOnce, nullptr, nullptr); if (logoTimerId_ == nullptr) { static_print_error("TjdUiAppAlipayPresenter::StartJumpTimer Create timer fail."); return false; } } int32_t ret = osTimerStart(logoTimerId_, 2000); if (ret != 0) { static_print_error("TjdUiAppAlipayPresenter::StartJumpTimer Start timer fail"); return false; } return true; } void TjdUiAppAlipayPresenter::StartJumpTimer(AlipayViewIndex jumpView) { if (jumpTimerId_ == nullptr) { jumpTimerId_ = osTimerNew( [](void *arg) { AlipayViewIndex jumpView = static_cast(reinterpret_cast(arg)); GraphicService::GetInstance()->PostGraphicEvent([jumpView]() { TjdUiAppAlipayView *view = TjdUiAppAlipayView::GetInstance(); TjdUiAppAlipayPresenter *presenter = TjdUiAppAlipayPresenter::GetInstance(); if (view == nullptr) { return; } view->ShowView(jumpView); presenter->DeleteJumpTimer(); }); }, osTimerOnce, reinterpret_cast(static_cast(jumpView)), nullptr); if (jumpTimerId_ == nullptr) { static_print_error("TjdUiAppAlipayPresenter::StartJumpTimer Create timer fail."); return; } } int32_t ret = osTimerStart(jumpTimerId_, 2000); if (ret != 0) { static_print_error("TjdUiAppAlipayPresenter::StartJumpTimer Start timer fail"); return; } } void TjdUiAppAlipayPresenter::RefreshPayCodeEvent() { TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); TjdUiAppAlipayView *alipayView = TjdUiAppAlipayView::GetInstance(); if (alipayView == nullptr) { return; } if (IsAlipayBinded() == false) { return; } uint8_t str[ALIPAY_GET_PAY_STR_MAX_LENGTH] = {0}; int32_t ret = model.AlipayGetPayCode(str); if (ret != 0) { static_print_error("AlipayPresenter::RefreshPayCodeEvent AlipayGetPayCode fail. %d", ret); } alipayView->RefreshPayCode((const char *)str); } void TjdUiAppAlipayPresenter::BindSuccessEvent() { /* 绑定成功后根据进入类型2秒后进入付款码页面或者菜单页面 */ TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); RefreshPayCodeEvent(); if (model.GetQuickEnterFlag()) { StartJumpTimer(AlipayViewIndex::ALIPAY_PAY_QRCODE); AlipayStartSwitchTimer(SWITCH_PAY_CODE_TIME); } else { StartJumpTimer(AlipayViewIndex::ALIPAY_LIST); } } /* 显示付款码和绑定码的时候最大亮度 */ void TjdUiAppAlipayPresenter::SetScreenBrightnessMax() { TjdUiSettingCenter::GetInstance().KeepScreenMaxOn(); } void TjdUiAppAlipayPresenter::ResetScreenBrightness() { TjdUiSettingCenter::GetInstance().KeepScreenMaxOff(); } void TjdUiAppAlipayPresenter::DeleteJumpTimer() { if (jumpTimerId_ != nullptr) { osTimerDelete(jumpTimerId_); jumpTimerId_ = nullptr; } } bool TjdUiAppAlipayPresenter::OnKeyAct(OHOS::UIView &view, const OHOS::KeyEvent &event) { if (!TjdUiCommonOnKeyListener::CheckIsExitEvent(event)) { return true; } ViewExitEvent(false); return true; } // void TjdUiAppAlipayPresenter::ClickRetryTransCode(OHOS::UIView &view) // { // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickRetryTransCode start"); // uint32_t index = AlipayGetCardNum(); // int32_t ret = alipayMode_->AlipayGetTransCode(index); // if (ret == 0) { // 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); // } else { // if (ret == ALIPAY_TRANS_CODE_DATA_LIMIT) { // AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE); // } else if (ret == ALIPAY_TRANS_CODE_NOT_SUPPORT) { // AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT); // } else { // AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW); // } // view_->ChangeView(ALIPAY_GET_TRANS_LIST_VIEW, ALIPAY_TRANS_TIPS_VIEW); // } // return; // } void TjdUiAppAlipayPresenter::OnClickTrans(OHOS::UIView &view) { int32_t ret = TjdUiAppAlipayModel::GetInstance().AlipayGetLocalTranslist(); if (ret != 0) { static_print_error("AlipayPresenter::ClickTransCode AlipayGetLocalTranslist fail. %d", ret); // TjdUiAppAlipayView::GetInstance()->ShowErrorMsg("获取城市列表失败,请打开手机app更新数据后再尝试", // AlipayViewIndex::ALIPAY_LIST); TjdUiAppAlipayView::GetInstance()->ShowView(AlipayViewIndex::ALIPAY_WAITING); AlipayTransStartGetListsTimer(); } else { int32_t get_res = TjdUiAppAlipayModel::GetInstance().AlipayGetLastTranscode(); if (get_res == 0) { uint8_t *qrcode = TjdUiAppAlipayModel::GetInstance().AlipayGetTransCode(); uint32_t qrcodeLen = TjdUiAppAlipayModel::GetInstance().AlipayGetTransCodeLen(); char *name = TjdUiAppAlipayModel::GetInstance().AlipayGetCardTitle(); AlipayRideCodeView::GetInstance()->ShowQrcode(name, (const char *)qrcode, qrcodeLen); TjdUiAppAlipayView::GetInstance()->ShowView(AlipayViewIndex::ALIPAY_RIDE_QRCODE); } else { static_print_error("AlipayPresenter::ClickTransCode AlipayGetLastTranscode fail."); TjdUiAppAlipayView::GetInstance()->ShowView(AlipayViewIndex::ALIPAY_RIDE_CODE_LIST); } } } bool TjdUiAppAlipayPresenter::IsChinese() { return TjdUiAppAlipayModel::GetInstance().IsChinese(); } bool TjdUiAppAlipayPresenter::IsAlipayBinded() { return TjdUiAppAlipayModel::GetInstance().AlipayGetBindState(); } int32_t TjdUiAppAlipayPresenter::AlipayGetBindCode(uint8_t *bindStr) { return TjdUiAppAlipayModel::GetInstance().AlipayGetBindCode(bindStr); } void TjdUiAppAlipayPresenter::AlipayMsgTransListCallBackProcFunc(uint32_t actionRes) { GraphicService::GetInstance()->PostGraphicEvent([actionRes]() { static_print_info("AlipayMsgTransListCallBackProcFunc in."); if (actionRes == 0) { uint32_t cardSum = TjdUiAppAlipayModel::GetInstance().AlipayTransGetCardNum(); TjdUiAppAlipayModel::GetInstance().AlipaySetCardSum(cardSum); if (cardSum == 0) { // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_ENABLE_VIEW); } else { // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_LIST_VIEW); } } else if (actionRes == ALIPAY_TRANS_CARD_LIST_NET_ERROR) { // TjdUiAppAlipayModel::GetInstance().AlipaySetSwitchIndex(ALIPAY_TRANS_RES_LIST); // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_RES_VIEW); } else { if (actionRes == ALIPAY_TRANS_CARD_LIST_OWN_TOO_MANY_CARD) { // TjdUiAppAlipayModel::GetInstance().AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_TO_MUCH); } else { // TjdUiAppAlipayModel::GetInstance().AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_UNKNOW); } // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_TIPS_VIEW); } }); } void TjdUiAppAlipayPresenter::AlipayMsgTransSpeCardCallBackProcFunc(uint32_t actionRes) { GraphicService::GetInstance()->PostGraphicEvent([actionRes]() { static_print_info("AlipayMsgTransSpeCardCallBackProcFunc in."); uint32_t index = TjdUiAppAlipayModel::GetInstance().AlipayGetCardNum(); if (actionRes == 0) { int32_t ret = TjdUiAppAlipayModel::GetInstance().AlipayGetTransCode(index); if (ret != 0) { // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_LIST_VIEW); } else { // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_VIEW); } } else if (actionRes == ALIPAY_TRANS_CODE_NET_ERROR) { // TjdUiAppAlipayModel::GetInstance().AlipaySetSwitchIndex(ALIPAY_TRANS_RES_CODE); // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_RES_VIEW); } else { if (actionRes == ALIPAY_TRANS_CODE_DATA_LIMIT) { // TjdUiAppAlipayModel::GetInstance().AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_SECURE); } else if (actionRes == ALIPAY_TRANS_CODE_NOT_SUPPORT) { // TjdUiAppAlipayModel::GetInstance().AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_NOT_SUPPORT); } else { // TjdUiAppAlipayModel::GetInstance().AlipaySetSwitchIndex(ALIPAY_TRANS_TIPS_LIST_UNKNOW); } // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ANI_VIEW, ALIPAY_TRANS_TIPS_VIEW); } }); } void AlipaySwitchTimerCallBack(void *argument) { GraphicService::GetInstance()->PostGraphicEvent([]() { AlipayViewIndex currentView = TjdUiAppAlipayPresenter::GetInstance()->GetCurrentViewIndex(); if (currentView == AlipayViewIndex::ALIPAY_PAY_QRCODE) { // 支付二维码页面每隔60s刷新一次 static_print_debug("AlipaySwitchTimerCallBack in."); uint8_t payStr[ALIPAY_GET_PAY_STR_MAX_LENGTH] = {0}; TjdUiAppAlipayModel::GetInstance().AlipayGetPayCode(payStr); TjdUiAppAlipayView *view = TjdUiAppAlipayView::GetInstance(); TjdUiAppAlipayPresenter *presenter = TjdUiAppAlipayPresenter::GetInstance(); if (view == nullptr || presenter == nullptr) { return; } view->RefreshPayCode((const char *)payStr); presenter->AlipayStartSwitchTimer(SWITCH_PAY_CODE_TIME); } }); } bool TjdUiAppAlipayPresenter::AlipayStartSwitchTimer(uint16_t time) { if (switchTimerId == nullptr) { switchTimerId = osTimerNew(AlipaySwitchTimerCallBack, osTimerOnce, (void *)0, nullptr); if (switchTimerId == nullptr) { return false; } } int32_t retcode = osTimerStart(switchTimerId, time); if (retcode != 0) { return false; } return true; } void TjdUiAppAlipayPresenter::AlipayStopSwitchTimer() { if (switchTimerId != nullptr) { osTimerStop(switchTimerId); } } int32_t TjdUiAppAlipayPresenter::AlipayGetPayCode(uint8_t *payStr) { return TjdUiAppAlipayModel::GetInstance().AlipayGetPayCode(payStr); } uint32_t TjdUiAppAlipayPresenter::AlipayGetCardSum(void) { return TjdUiAppAlipayModel::GetInstance().AlipayGetCardSum(); } char *TjdUiAppAlipayPresenter::AlipayGetCardTitle(uint32_t index) { return TjdUiAppAlipayModel::GetInstance().AlipayGetCardTitle(index); } char *TjdUiAppAlipayPresenter::AlipayGetCardTitle(void) { return TjdUiAppAlipayModel::GetInstance().AlipayGetCardTitle(); } int32_t TjdUiAppAlipayPresenter::AlipayGetNickName(uint8_t *nickName) { return TjdUiAppAlipayModel::GetInstance().AlipayGetNickName(nickName); } int32_t TjdUiAppAlipayPresenter::AlipayGetIdName(uint8_t *idStr) { return TjdUiAppAlipayModel::GetInstance().AlipayGetIdName(idStr); } void AlipayTransGetListsTimerCallBack(void *arg) { GraphicService::GetInstance()->PostGraphicEvent([]() { static_print_info("AlipayTransGetListsTimerCallBack in."); static uint8_t count = 0; if (count++ > 3) { count = 0; TjdUiAppAlipayPresenter::GetInstance()->AlipayTransStopGetListsTimer(); TjdUiAppAlipayView::GetInstance()->ShowErrorMsg("获取城市列表失败,请打开手机app更新数据后再尝试", AlipayViewIndex::ALIPAY_LIST); return; } int32_t ret = TjdUiAppAlipayModel::GetInstance().AlipayGetOnlineTranslist(); if (ret != 0) { static_print_error("AlipayModel::AlipayTransGetListsTimerCallBack AlipayGetOnlineTranslist fail. %x", ret); TjdUiAppAlipayPresenter::GetInstance()->AlipayTransStartGetListsTimer(); return; } AlipayViewIndex currentView = TjdUiAppAlipayPresenter::GetInstance()->GetCurrentViewIndex(); // if (currentView != ALIPAY_TRANS_ENABLE_VIEW) { // return; // } auto sum = TjdUiAppAlipayModel::GetInstance().AlipayGetCardSum(); if (sum == 0) { static_print_info("AlipayTransGetListsTimerCallBack card sum is 0."); TjdUiAppAlipayPresenter::GetInstance()->AlipayTransStartGetListsTimer(); return; } static_print_info("AlipayTransGetListsTimerCallBack card sum is %d.", sum); TjdUiAppAlipayPresenter::GetInstance()->AlipayTransStopGetListsTimer(); count = 0; // AlipayMainView::GetInstance()->ChangeView(ALIPAY_TRANS_ENABLE_VIEW, ALIPAY_TRANS_LIST_VIEW); }); } bool TjdUiAppAlipayPresenter::AlipayTransStartGetListsTimer(void) { if (transTimerId == nullptr) { transTimerId = osTimerNew(AlipayTransGetListsTimerCallBack, osTimerOnce, (void *)0, nullptr); if (transTimerId == nullptr) { static_print_error("AlipayModel::AlipayTransStartGetLists Create timer fail."); return false; } } int32_t retcode = osTimerStart(transTimerId, 10000); if (retcode != 0) { static_print_error("AlipayModel::AlipayTransStartGetLists Start timer fail"); return false; } return true; } void TjdUiAppAlipayPresenter::AlipayTransStopGetListsTimer(void) { if (transTimerId == nullptr) { return; } int32_t ret = osTimerStop(transTimerId); } /* 绑定状态查询回调函数 */ static void AlipayBindTimerCallBack(void *arg) { // 绑定状态查询 GraphicService::GetInstance()->PostGraphicEvent([]() { static bool isStartBind = false; TjdUiAppAlipayModel &model = TjdUiAppAlipayModel::GetInstance(); TjdUiAppAlipayPresenter *presenter = TjdUiAppAlipayPresenter::GetInstance(); TjdUiAppAlipayView *alipayView = TjdUiAppAlipayView::GetInstance(); if (presenter == nullptr || alipayView == nullptr) { return; } int32_t status = -1; int32_t ret = model.AlipayGetBindStatus(status); if (ret != 0) { static_print_error("AlipayBindCallBackProc AlipayGetBindStatus fail. %x", ret); return; } /* 检测到已经绑定成功则直接跳页面 */ static_print_info("get_bind_status:%d", status); if (model.AlipayGetBindState()) { model.AlipaySetBindFlag(true); model.AlipayBindFinish(); alipayView->ShowBindMsg(AlipayBindStatus::ALIPAY_BIND_SUCCESS); presenter->BindSuccessEvent(); return; } if (status == ALIPAY_INTER_STATUS_START_BINDING) { alipayView->ShowView(AlipayViewIndex::ALIPAY_WAITING); isStartBind = true; } else if (status == ALIPAY_INTER_STATUS_BINDING_OK) { if (isStartBind) { model.AlipaySetBindFlag(true); model.AlipayBindFinish(); alipayView->ShowBindMsg(AlipayBindStatus::ALIPAY_BIND_SUCCESS); presenter->BindSuccessEvent(); isStartBind = false; } return; } else if (status == ALIPAY_INTER_STATUS_BINDING_FAIL) { if (isStartBind) { model.AlipaySetBindFlag(false); alipayView->ShowBindMsg(AlipayBindStatus::ALIPAY_BIND_FAIL); isStartBind = false; } presenter->AlipayDelayStartBindTimer(); return; } presenter->AlipayStartBindTimer(); }); } bool TjdUiAppAlipayPresenter::AlipayStartBindTimer() { if (bindTimerId == nullptr) { bindTimerId = osTimerNew(AlipayBindTimerCallBack, osTimerOnce, (void *)0, nullptr); if (bindTimerId == nullptr) { static_print_error("%s Create timer fail.", __func__); return false; } } int32_t ret = osTimerStart(bindTimerId, 2000); if (ret != 0) { static_print_error("%s Start timer fail", __func__); return false; } return true; } /* 绑定失败后延时重新开始绑定 */ bool TjdUiAppAlipayPresenter::AlipayDelayStartBindTimer() { if (delayStartBindTimerId == nullptr) { delayStartBindTimerId = osTimerNew( [](void *arg) { GraphicService::GetInstance()->PostGraphicEvent([]() { TjdUiAppAlipayView *alipayView = TjdUiAppAlipayView::GetInstance(); TjdUiAppAlipayPresenter *presenter = TjdUiAppAlipayPresenter::GetInstance(); if (presenter == nullptr || alipayView == nullptr) { return; } alipayView->ShowView(AlipayViewIndex::ALIPAY_BIND); presenter->AlipayStartBindTimer(); }); }, osTimerOnce, (void *)0, nullptr); if (delayStartBindTimerId == nullptr) { static_print_error("%s Create timer fail.", __func__); return false; } } int32_t ret = osTimerStart(delayStartBindTimerId, 2000); if (ret != 0) { static_print_error("%s Start timer fail", __func__); return false; } return true; } void TjdUiAppAlipayPresenter::AlipayStopBindTimer(void) { if (bindTimerId == nullptr) { return; } int32_t ret = osTimerStop(bindTimerId); } AlipayViewIndex TjdUiAppAlipayPresenter::GetCurrentViewIndex() { return TjdUiAppAlipayView::currentViewIndex_; } uint8_t *TjdUiAppAlipayPresenter::AlipayGetTransCode(void) { return TjdUiAppAlipayModel::GetInstance().AlipayGetTransCode(); } uint32_t TjdUiAppAlipayPresenter::AlipayGetTransCodeLen(void) { return TjdUiAppAlipayModel::GetInstance().AlipayGetTransCodeLen(); } } // namespace TJD