|
@@ -274,6 +274,7 @@ void AuthorizeToCharge()
|
|
|
SelectGunInfo *ShmSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo();
|
|
|
struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected);
|
|
|
+ ShmDcCommonData = (DcCommonInfo *)GetShmDcCommonData();
|
|
|
if(isAuthorizedComplete())
|
|
|
{
|
|
|
// StopSystemTimeoutDet();
|
|
@@ -287,6 +288,8 @@ void AuthorizeToCharge()
|
|
|
//pSysInfo->SystemPage = _PAGE_PLUGIN;
|
|
|
//log_info("Wait Gun(%d) plugin",pSysInfo->CurGunSelected);
|
|
|
DetectPluginStart();
|
|
|
+ if (ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] == TRUE)
|
|
|
+ pSysInfo->SystemPage = _PAGE_PLUGIN;
|
|
|
//log_info("Gun(%d) Balance: %f",pSysInfo->CurGunSelected,
|
|
|
// ShmSelectGunInfo->PricesInfo[pSysInfo->CurGunSelected].Balance);
|
|
|
} else {
|
|
@@ -306,7 +309,8 @@ void ScannerCardProcess(void)
|
|
|
struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected);
|
|
|
|
|
|
- if (!isDetectPlugin() && pSysInfo->SystemPage == _PAGE_SENSING &&
|
|
|
+ if (!isDetectPlugin() && (pSysInfo->SystemPage == _PAGE_SENSING ||
|
|
|
+ pSysInfo->SystemPage == _PAGE_AUTHORIZE ) &&
|
|
|
pDcChargingInfo->SystemStatus == S_IDLE &&
|
|
|
pSysWarning->Level != WARN_LV_ER /*&&
|
|
|
pSysConfig->AuthorisationMode == AUTH_MODE_ENABLE*/) {
|
|
@@ -378,11 +382,16 @@ void CreateRfidFork(void)
|
|
|
int fd = -1;
|
|
|
int isContinue = 1;
|
|
|
RFID rfid = {0};
|
|
|
+ RecordTransactionInfo deduct;
|
|
|
fd = InitialRfidPort();
|
|
|
struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
|
|
|
ShmDcCommonData = (DcCommonInfo *)GetShmDcCommonData();
|
|
|
ShmSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo();
|
|
|
+ struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
+ ShmDcCommonData->reupload_deduct_status = 0;
|
|
|
int gunIndex;
|
|
|
+ int uploadIndex = 0;
|
|
|
+ int ReAuthComplete_Index = 0;
|
|
|
if(DeductDB_Open() != PASS)
|
|
|
{
|
|
|
isDeductDb_ready = false;
|
|
@@ -393,64 +402,64 @@ void CreateRfidFork(void)
|
|
|
}
|
|
|
//log_info("RFID fork Child's PID is %d", getpid());
|
|
|
int result;
|
|
|
+ int is_idle = FALSE;
|
|
|
while (isContinue) {
|
|
|
result = 0;
|
|
|
usleep(500000);
|
|
|
ftime(&SeqEndTime);
|
|
|
SeqEndTime.time = time(NULL);
|
|
|
tm = localtime(&SeqEndTime.time);
|
|
|
-
|
|
|
+ // 每日結帳
|
|
|
if (tm->tm_hour == 23 && tm->tm_min == 00 && tm->tm_sec == 0) {
|
|
|
result = CreditCardUnionSettlement(fd,"TCC Test",&ShmDcCommonData->pCreditCard[0]);
|
|
|
if (result > 0) {
|
|
|
log_info("CreditCardUnionSettlement OK");
|
|
|
- log_info("Get Money:%s",ShmDcCommonData->pCreditCard[0].TransAmount);
|
|
|
} else
|
|
|
log_info("CreditCardUnionSettlement FAIL");
|
|
|
}
|
|
|
|
|
|
- if (pSysInfo->SystemPage == _PAGE_AUTHORIZE) {
|
|
|
- //result = CreditCardSearch(fd,"TCC Test",&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected]);
|
|
|
- result = 1;
|
|
|
+ if (tm->tm_min%2 == 0 && pSysInfo->SystemPage == _PAGE_IDLE) {
|
|
|
+ if(ShmDcCommonData->reupload_deduct_status == 0) {
|
|
|
+ // 嘗試傳送未上傳成功到後台ID
|
|
|
+ if (DB_GetReUploadDeduct(&uploadIndex,&ShmDcCommonData->UploadRedectInfo) == PASS) {
|
|
|
+ ShmDcCommonData->reupload_deduct_status = 1;
|
|
|
+ //log_info("deduct uploading");
|
|
|
+ } else {
|
|
|
+ //log_info("no deduct upload");
|
|
|
+ }
|
|
|
+ } else if (ShmDcCommonData->reupload_deduct_status == 2) {
|
|
|
+ UpdateDeductInfoStatus(&uploadIndex,&ShmDcCommonData->UploadRedectInfo);
|
|
|
+ ShmDcCommonData->reupload_deduct_status = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (pSysInfo->SystemPage == _PAGE_AUTHORIZE && ShmDcCommonData->GetCardNo[pSysInfo->CurGunSelected] == FALSE) {
|
|
|
+ result = CreditCardSearch(fd,"TCC Test",&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected]);
|
|
|
+ //result = 1;
|
|
|
StartSystemTimeoutDet(Timeout_ScanCard);
|
|
|
if (result > 0) {
|
|
|
- pSysInfo->SystemPage = _PAGE_SENSING;
|
|
|
- strcpy((char *)pSysConfig->UserId,"AutoStartCharging");
|
|
|
- //strncpy((char *)pSysConfig->UserId,ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].CardNo,20);
|
|
|
+ //strcpy((char *)pSysConfig->UserId,"AutoStartCharging");
|
|
|
+ strncpy((char *)pSysConfig->UserId,ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].CardNo,20);
|
|
|
log_info("Authorize card:%s",pSysConfig->UserId);
|
|
|
+ StopSystemTimeoutDet();
|
|
|
+ ShmDcCommonData->GetCardNo[pSysInfo->CurGunSelected] = TRUE;
|
|
|
+
|
|
|
} else if (result < 0) {
|
|
|
//pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
|
|
|
log_info("No Card Scanning...");
|
|
|
}
|
|
|
- } else if (pSysInfo->SystemPage == _PAGE_SENSING) {
|
|
|
- result = CreditCardPreAuth(fd, PREAUTHMONEY,"TCC Test", &ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected]);
|
|
|
- //result = 1;
|
|
|
- if (result > 0) {
|
|
|
- ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = TRUE;
|
|
|
- pSysInfo->SystemPage = _PAGE_PLUGIN;
|
|
|
- //strncpy((char *)pSysConfig->UserId,ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].CardNo,20);
|
|
|
- log_info("PreAuth OK");
|
|
|
- } else if (result < 0) {
|
|
|
- pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
|
|
|
- ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = FALSE;
|
|
|
- memset(&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected], 0, sizeof(TransInfo));
|
|
|
- log_info("PreAuth Fail");
|
|
|
-
|
|
|
- result = CreditCardUnionSettlement(fd,"TCC Test",&ShmDcCommonData->pCreditCard[0]);
|
|
|
- if (result > 0) {
|
|
|
- log_info("CreditCardUnionSettlement OK");
|
|
|
- log_info("Get Money:%s",ShmDcCommonData->pCreditCard[0].TransAmount);
|
|
|
- } else
|
|
|
- log_info("CreditCardUnionSettlement FAIL");
|
|
|
-
|
|
|
- }
|
|
|
}
|
|
|
-
|
|
|
+ is_idle = FALSE;
|
|
|
for (gunIndex = 0; gunIndex < pSysConfig->TotalConnectorCount; gunIndex++) {
|
|
|
+ pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(gunIndex);
|
|
|
+ if (pDcChargingInfo->SystemStatus == S_IDLE) {
|
|
|
+ is_idle = TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
if (ShmDcCommonData->StopCharge[gunIndex] == TRUE && ShmDcCommonData->finalcost_flag[gunIndex]) {
|
|
|
ShmDcCommonData->StopCharge[gunIndex] = FALSE;
|
|
|
StopGunInfoTimeoutDet(gunIndex); //Timeout_FinalCost
|
|
|
- result = CreditCardPreAuthComplete(fd, 1/*(int)ShmDcCommonData->finalcost[pSysInfo->CurGunSelected]*/ ,"TCC Test",
|
|
|
+ result = CreditCardPreAuthComplete(fd,1 /*(int)ShmDcCommonData->finalcost[pSysInfo->CurGunSelected]*/ ,"TCC Test",
|
|
|
&ShmDcCommonData->pCreditCard[gunIndex].VemData[0],
|
|
|
&ShmDcCommonData->pCreditCard[gunIndex]);
|
|
|
//result = 1;
|
|
@@ -459,6 +468,7 @@ void CreateRfidFork(void)
|
|
|
pSysInfo->SystemPage = _PAGE_COMPLETE;
|
|
|
WritePayResult(TRUE,gunIndex);
|
|
|
ShmDcCommonData->PayPass_flag[gunIndex] = TRUE;
|
|
|
+
|
|
|
} else {
|
|
|
log_info("PAYING FAIL");
|
|
|
ShmDcCommonData->PayPass_flag[gunIndex] = FALSE;
|
|
@@ -470,9 +480,30 @@ void CreateRfidFork(void)
|
|
|
}
|
|
|
ShmDcCommonData->PayFinish[gunIndex] = TRUE;
|
|
|
}
|
|
|
- } // for
|
|
|
|
|
|
+ } // for
|
|
|
+ if (is_idle == TRUE && tm->tm_min%2 == 0 &&
|
|
|
+ pSysInfo->SystemPage == _PAGE_IDLE && ShmDcCommonData->reupload_deduct_status == 0) {
|
|
|
+ if (DB_GetReDeductInfo(&ReAuthComplete_Index,&ShmDcCommonData->ReAuthComplete) == PASS ) {
|
|
|
|
|
|
+ result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->ReAuthComplete.Amount ,"TCC Test",
|
|
|
+ &ShmDcCommonData->ReAuthComplete.VemData[0],
|
|
|
+ &ShmDcCommonData->pCreditCard[0]);
|
|
|
+ if (result > 0) {
|
|
|
+ ShmDcCommonData->ReAuthComplete.DeductResult = YES;
|
|
|
+ ShmDcCommonData->ReAuthComplete.IsUpload = NO;
|
|
|
+ UpdateDeductInfoStatus(&ReAuthComplete_Index,&ShmDcCommonData->ReAuthComplete);
|
|
|
+ log_info("PreAuthComplete OK");
|
|
|
+ } else if ( result < 0) {
|
|
|
+ log_info("Backgroud ID:%d Amount:%d VemData:%s PreAuthComplete fail",
|
|
|
+ ShmDcCommonData->ReAuthComplete.TransactionId,
|
|
|
+ (int)ShmDcCommonData->ReAuthComplete.Amount,
|
|
|
+ ShmDcCommonData->ReAuthComplete.VemData);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log_info("DB_GetReDeductInfo Fail");
|
|
|
+ }
|
|
|
+ }
|
|
|
if(ShmDcCommonData->PreAuth_Config == _CREDITCARD_CANCEL) {
|
|
|
ShmDcCommonData->PreAuth_Result = CreditCardPreAuthCancel(fd,PREAUTHMONEY,"TCC Test",
|
|
|
&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].ApprovalNo[0],
|
|
@@ -488,6 +519,25 @@ void CreateRfidFork(void)
|
|
|
|
|
|
}
|
|
|
ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
|
+ } else if (ShmDcCommonData->PreAuth_Config == _CREDITCARD_PREAUTH) {
|
|
|
+ result = CreditCardPreAuth(fd, PREAUTHMONEY,"TCC Test", &ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected]);
|
|
|
+ //result = 1;
|
|
|
+ if (result > 0) {
|
|
|
+ ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = TRUE;
|
|
|
+ //pSysInfo->SystemPage = _PAGE_PLUGIN;
|
|
|
+ //strncpy((char *)pSysConfig->UserId,ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].CardNo,20);
|
|
|
+ log_info("PreAuth OK");
|
|
|
+ } else if (result < 0) {
|
|
|
+ struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
+ //pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected);
|
|
|
+ pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
|
|
|
+ //pDcChargingInfo->SystemStatus = S_IDLE;
|
|
|
+ ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = FALSE;
|
|
|
+ memset(&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected], 0, sizeof(TransInfo));
|
|
|
+ log_info("PreAuth Fail");
|
|
|
+ ShmDcCommonData->PreAuth_Config = _CREDITCARD_CANCEL;
|
|
|
+ }
|
|
|
+ ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
|
}
|
|
|
/*
|
|
|
// 刷卡判斷
|