|
@@ -351,8 +351,14 @@ void storePayResult(uint8_t gunIndex)
|
|
|
void PreAuthCompleteToCardReader(int fd,uint8_t gunIndex)
|
|
|
{
|
|
|
int result = 0;
|
|
|
+
|
|
|
+ if (ShmDcCommonData->finalcost[gunIndex] > 0 && ShmDcCommonData->finalcost[gunIndex] < 1) {
|
|
|
+ log_info("final cost less 1 : %f", ShmDcCommonData->finalcost[gunIndex]);
|
|
|
+ ShmDcCommonData->finalcost[gunIndex] = 1;
|
|
|
+ }
|
|
|
storePayResult(gunIndex);
|
|
|
- result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->finalcost[pSysInfo->CurGunSelected], "TCC Test",
|
|
|
+
|
|
|
+ result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->finalcost[gunIndex], "TCC Test",
|
|
|
&ShmDcCommonData->pCreditCard[gunIndex].VemData[0],
|
|
|
&ShmDcCommonData->pCreditCard[gunIndex]);
|
|
|
|
|
@@ -425,8 +431,12 @@ int CreditCardCancelPreAuth(int fd,uint8_t gunIndex)
|
|
|
void CreateRfidFork(void)
|
|
|
{
|
|
|
pid_t rfidRecPid;
|
|
|
+ int rededuct_gunIndex[128];
|
|
|
+ RecordTransactionInfo deductInfo[128];
|
|
|
+ int rededuct_num = 0;
|
|
|
|
|
|
rfidRecPid = fork();
|
|
|
+ int j = 0;
|
|
|
if (rfidRecPid == 0) {
|
|
|
char localTime[128] = {0};
|
|
|
struct timeb SeqEndTime;
|
|
@@ -441,7 +451,6 @@ void CreateRfidFork(void)
|
|
|
ShmDcCommonData = (DcCommonInfo *)GetShmDcCommonData();
|
|
|
ShmSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo();
|
|
|
struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
- ShmDcCommonData->reupload_deduct_status = 0;
|
|
|
int gunIndex;
|
|
|
int uploadIndex = 0;
|
|
|
int ReAuthComplete_Index = 0;
|
|
@@ -462,75 +471,16 @@ void CreateRfidFork(void)
|
|
|
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");
|
|
|
- } else
|
|
|
- log_info("CreditCardUnionSettlement FAIL");
|
|
|
- }
|
|
|
-
|
|
|
- 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 (is_idle == TRUE && tm->tm_min % 15 == 0 &&
|
|
|
- pSysInfo->SystemPage == _PAGE_IDLE && ShmDcCommonData->reupload_deduct_status == 0) {
|
|
|
- sleep(1);
|
|
|
- if (DB_GetReDeductInfo(&ReAuthComplete_Index, &ShmDcCommonData->ReAuthComplete) == PASS) {
|
|
|
-
|
|
|
- result = CreditCardPreAuthComplete(fd, (int)ShmDcCommonData->ReAuthComplete.Amount, "TCC Test",
|
|
|
- &ShmDcCommonData->ReAuthComplete.VemData[0],
|
|
|
- &ShmDcCommonData->pCreditCard[0]);
|
|
|
- sleep(10);
|
|
|
- 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");
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- // Scan Card to get card number
|
|
|
- /*
|
|
|
- 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) {
|
|
|
- //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...");
|
|
|
- }
|
|
|
+ if (ShmDcCommonData->UnionSettlement) {
|
|
|
+ ShmDcCommonData->UnionSettlement = 0;
|
|
|
+ result = CreditCardUnionSettlement(fd, "TCC Test", &ShmDcCommonData->pCreditCard[0]);
|
|
|
+ if (result > 0) {
|
|
|
+ log_info("CreditCardUnionSettlement OK");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ log_info("CreditCardUnionSettlement FAIL");
|
|
|
}
|
|
|
- */
|
|
|
is_idle = FALSE;
|
|
|
for (gunIndex = 0; gunIndex < pSysConfig->TotalConnectorCount; gunIndex++) {
|
|
|
pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(gunIndex);
|
|
@@ -541,7 +491,7 @@ void CreateRfidFork(void)
|
|
|
ShmDcCommonData->StopCharge[gunIndex] = FALSE;
|
|
|
pSysInfo->SystemPage = _PAGE_PAYING;
|
|
|
StopGunInfoTimeoutDet(gunIndex); //Timeout_FinalCost
|
|
|
- if (ShmDcCommonData->finalcost[gunIndex] < 1) {
|
|
|
+ if (ShmDcCommonData->finalcost[gunIndex] == 0) {
|
|
|
log_info("Final Cost less 1 , Cancel Trade!!");
|
|
|
if (CreditCardCancelPreAuth(fd, gunIndex) > 0) {
|
|
|
pSysInfo->SystemPage = _PAGE_COMPLETE;
|
|
@@ -585,6 +535,57 @@ void CreateRfidFork(void)
|
|
|
}
|
|
|
ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
|
}
|
|
|
+
|
|
|
+ // 每日晚上11點進行補扣款
|
|
|
+ if ((is_idle == TRUE && (tm->tm_hour == 15 && tm->tm_min < 30) &&
|
|
|
+ pSysInfo->SystemPage == _PAGE_IDLE &&
|
|
|
+ ShmDcCommonData->RoutineReduct == FALSE) || ShmDcCommonData->Exe_ReDeduct) {
|
|
|
+ ShmDcCommonData->Exe_ReDeduct = 0;
|
|
|
+ rededuct_num = DB_GetMultiReDeductInfo(&rededuct_gunIndex, &deductInfo);
|
|
|
+ ShmDcCommonData->RoutineReduct = TRUE;
|
|
|
+ if (rededuct_num == 0)
|
|
|
+ log_info("No Rededuct Information");
|
|
|
+ else {
|
|
|
+ for (j = 0; j < rededuct_num; j++) {
|
|
|
+ if (pSysInfo->SystemPage != _PAGE_IDLE) {
|
|
|
+ ShmDcCommonData->RoutineReduct = FALSE;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ result = CreditCardPreAuthComplete(fd, (int)deductInfo[j].Amount, "TCC Test",
|
|
|
+ &deductInfo[j].VemData[0],
|
|
|
+ &ShmDcCommonData->pCreditCard[0]);
|
|
|
+ sleep(10);
|
|
|
+ if (result > 0) {
|
|
|
+ deductInfo[j].DeductResult = YES;
|
|
|
+ deductInfo[j].IsUpload = NO;
|
|
|
+ UpdateDeductInfoStatus(&ReAuthComplete_Index, &deductInfo[j]);
|
|
|
+ log_info("Backgroud PreAuthComplete OK");
|
|
|
+ }
|
|
|
+ else if (result < 0) {
|
|
|
+ log_info("Backgroud ID:%d Amount:%d VemData:%s PreAuthComplete fail",
|
|
|
+ deductInfo[j].TransactionId,
|
|
|
+ (int)deductInfo[j].Amount,
|
|
|
+ deductInfo[j].VemData);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 每日晚上11點30分結帳
|
|
|
+ if (is_idle == TRUE && tm->tm_hour == 15 && tm->tm_min > 30 && tm->tm_sec == 0 &&
|
|
|
+ ShmDcCommonData->RoutineSettlement == FALSE) {
|
|
|
+ ShmDcCommonData->RoutineSettlement = TRUE;
|
|
|
+ result = CreditCardUnionSettlement(fd, "TCC Test", &ShmDcCommonData->pCreditCard[0]);
|
|
|
+ if (result > 0) {
|
|
|
+ log_info("CreditCardUnionSettlement OK");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ log_info("CreditCardUnionSettlement FAIL");
|
|
|
+ }
|
|
|
+ if (tm->tm_hour == 16 && tm->tm_min == 0) {
|
|
|
+ ShmDcCommonData->RoutineSettlement = FALSE;
|
|
|
+ ShmDcCommonData->RoutineReduct = FALSE;
|
|
|
+ }
|
|
|
/*
|
|
|
// 刷卡判斷
|
|
|
if (pSysConfig->OfflinePolicy == _OFFLINE_POLICY_NO_CHARGING ||
|