#include "TjdUiAppAlipayModel.h" #include "TjdUiAppAlipayPresenter.h" #include "sql_setting.h" #include "sys_config.h" namespace TJD { #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 #define ALIPAY_GET_BIND_STR_LENGTH 256 TjdUiAppAlipayModel::TjdUiAppAlipayModel() : alipayApi(alipay_svr_get_api()) {} void AlipayMsgCallBack(uint32_t msgId, uint32_t actionRes) { if (msgId == ALIPAY_MSG_UPDATA_TRANS_LIST) { TjdUiAppAlipayPresenter::AlipayMsgTransListCallBackProcFunc(actionRes); } else if (msgId == ALIPAY_MSG_UPDATA_SPECIAL_CARD) { TjdUiAppAlipayPresenter::AlipayMsgTransSpeCardCallBackProcFunc(actionRes); } return; } uint32_t TjdUiAppAlipayModel::AlipayDriverInit(void) { uint32_t ret = uapi_alipay_svr_init(); if (ret != 0) { static_print_error("AlipayDriverInit uapi_alipay_svr_init failure."); return ret; } return 0; } bool TjdUiAppAlipayModel::AlipayInitModel(void) { transCode_ = (uint8_t *)malloc(ALIPAY_TRANS_CODE_MAX_LEN); if (transCode_ == nullptr) { static_print_info("AlipayModel::AlipayInitModel transCode_ alloc failure."); return false; } uint32_t retCode = svr_alipay_init_trans_context(); if (retCode != 0) { free(transCode_); static_print_info("AlipayModel::AlipayInitModel svr_alipay_init_trans_context failure."); return false; } svr_alipay_register_cb(AlipayMsgCallBack); svr_alipay_create_task(); return true; } void TjdUiAppAlipayModel::AlipayEnterLpm(void) { alipayApi->enter_lpm(); } void TjdUiAppAlipayModel::AlipayExitLpm(void) { alipayApi->exit_lpm(); } void TjdUiAppAlipayModel::AlipayDeinitModel(void) { static_print_info("AlipayModel::AlipayDeinitModel in."); if (transCode_ != nullptr) { free(transCode_); transCode_ = nullptr; } svr_alipay_deinit_trans_context(); svr_alipay_destroy_task(); return; } int32_t TjdUiAppAlipayModel::AlipayGetBindCode(uint8_t *bindStr) { int32_t bindStrLen = ALIPAY_GET_BIND_STR_LENGTH; return alipayApi->get_bind_str(bindStr, &bindStrLen); } void TjdUiAppAlipayModel::AlipayStartBind(void) { alipayApi->bind_start(); } void TjdUiAppAlipayModel::AlipayBindFinish(void) { alipayApi->bind_finish(); } void TjdUiAppAlipayModel::AlipayUnbind(void) { int32_t ret = alipayApi->remove_bind(); if (ret == 0) { bindFlag_ = false; }; } bool TjdUiAppAlipayModel::AlipayGetBindState(void) { return alipayApi->get_bind_state(); } int32_t TjdUiAppAlipayModel::AlipayGetBindStatus(int32_t &bindStatus) { return alipayApi->get_bind_status(&bindStatus); } void TjdUiAppAlipayModel::AlipaySetBindFlag(bool bindFlag) { bindFlag_ = bindFlag; } int32_t TjdUiAppAlipayModel::AlipayTransGetCardNum(void) { mc_alipay_trans_context_t *alipayTransContext = svr_alipay_get_trans_context(); return alipayTransContext->card_len; } uint32_t TjdUiAppAlipayModel::AlipayGetCardNum(void) { return cardNum_; } void TjdUiAppAlipayModel::AlipaySetCardSum(uint32_t cardSum) { cardSum_ = cardSum; } uint32_t TjdUiAppAlipayModel::AlipayGetCardSum(void) { return cardSum_; } void TjdUiAppAlipayModel::AlipaySetSwitchIndex(uint32_t switchIndex) { switchIndex_ = switchIndex; } mc_alipay_trans_card_info_t *TjdUiAppAlipayModel::AlipayTransGetCardList(void) { mc_alipay_trans_context_t *alipayTransContext = svr_alipay_get_trans_context(); return alipayTransContext->card_info; } int32_t TjdUiAppAlipayModel::AlipayGetTransCode(uint32_t index) { 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) { memcpy_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, cardInfo_[index].title, ALIPAY_TRANS_CARD_MEMBER_LEN); } return ret; } int32_t TjdUiAppAlipayModel::AlipayGetPayCode(uint8_t *payStr) { uint32_t payStrLen = 20; return alipayApi->get_pay_str(payStr, &payStrLen); } int32_t TjdUiAppAlipayModel::AlipayGetOnlineTranslist() { cardInfo_ = AlipayTransGetCardList(); mc_alipay_trans_card_info_t *onLineList = nullptr; onLineList = (mc_alipay_trans_card_info_t *)malloc(sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH); if (onLineList == nullptr) { static_print_error("AlipayModel::AlipayGetOnlineTranslist alloc fail."); return -1; } memset_s(onLineList, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH); 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); static_print_debug("AlipayModel::AlipayGetOnlineTranslist 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, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH); memcpy_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, onLineList, onListSize); cardSum_ = onLineNum; } free(onLineList); onLineList = nullptr; return ret; } int32_t TjdUiAppAlipayModel::AlipayUpdateTransCard(uint32_t index) { int32_t ret = alipayApi->update_trans_cardinfo(&cardInfo_[index]); static_print_debug("AlipayModel::AlipayUpdateTransCard in:%u.", ret); return ret; } int32_t TjdUiAppAlipayModel::AlipayCheckTransCard(uint32_t index) { mc_alipay_tans_card_status_t cardStatus = {}; int32_t ret = alipayApi->check_trans_cartstatus(&cardInfo_[index], &cardStatus); static_print_debug("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 TjdUiAppAlipayModel::AlipayGetLocalTranslist() { cardInfo_ = AlipayTransGetCardList(); memset_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0, 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; return alipayApi->get_local_translist(cardInfo_, &localListSize, &cardSum_); } int32_t TjdUiAppAlipayModel::AlipayGetLastTranscode() { 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); uint32_t len = ALIPAY_TRANS_CODE_MAX_LEN; return alipayApi->get_last_transcode(cardTitle_, transCode_, &len); } uint8_t *TjdUiAppAlipayModel::AlipayGetTransCode(void) { return transCode_; } uint32_t TjdUiAppAlipayModel::AlipayGetTransCodeLen(void) { return transCodeLen_; } char *TjdUiAppAlipayModel::AlipayGetCardTitle(uint32_t index) { return cardInfo_[index].title; } char *TjdUiAppAlipayModel::AlipayGetCardTitle(void) { return cardTitle_; } bool TjdUiAppAlipayModel::IsChinese(void) { return sql_setting_get_language() == language_enum::LANGUAGE_CHINESE; } int32_t TjdUiAppAlipayModel::AlipayGetNickName(uint8_t *nickName) { uint32_t nickNameLen = 128; return alipayApi->get_nickname(nickName, &nickNameLen); } int32_t TjdUiAppAlipayModel::AlipayGetIdName(uint8_t *idStr) { uint32_t idStrLen = 128; return alipayApi->get_logon_id(idStr, &idStrLen); } } // namespace TJD