705 lines
28 KiB
C++
705 lines
28 KiB
C++
#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<AlipayViewIndex>(reinterpret_cast<intptr_t>(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<void *>(static_cast<intptr_t>(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
|