|
@@ -332,11 +332,12 @@ void WritePayResult(int result ,uint8_t gunIndex)
|
|
|
else
|
|
|
ShmDcCommonData->TransactionInfo[gunIndex].DeductResult = _DEDUCT_COMPLETE_FAIL;
|
|
|
|
|
|
- log_info("Gun[%d] TransactionId:%d DeductResult:%d IsDonateInvoice:%d Amount:%f",
|
|
|
+ log_info("Gun[%d] TransactionId:%d DeductResult:%d IsDonateInvoice:%d Amount:%f VemData:%s",
|
|
|
gunIndex, ShmDcCommonData->TransactionInfo[gunIndex].TransactionId,
|
|
|
ShmDcCommonData->TransactionInfo[gunIndex].DeductResult,
|
|
|
ShmDcCommonData->TransactionInfo[gunIndex].IsDonateInvoice,
|
|
|
- ShmDcCommonData->TransactionInfo[gunIndex].Amount);
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].Amount,
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard.VemData);
|
|
|
}
|
|
|
void storePayResult(uint8_t gunIndex)
|
|
|
{
|
|
@@ -354,7 +355,7 @@ void PreAuthCompleteToCardReader(int fd,uint8_t gunIndex)
|
|
|
ShmDcCommonData->TransactionInfo[gunIndex].Amount = 1;
|
|
|
}
|
|
|
storePayResult(gunIndex);
|
|
|
- log_info("Start Auth Complete");
|
|
|
+
|
|
|
result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->TransactionInfo[gunIndex].Amount, &pSysConfig->ModelName[0],
|
|
|
&ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard.VemData[0],
|
|
|
&ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard);
|
|
@@ -416,10 +417,12 @@ void ReDeductProcess(int fd)
|
|
|
log_info("Rededuct Total Number:%d", rededuct_num);
|
|
|
for (j = 0; j < rededuct_num; j++) {
|
|
|
sleep(10);
|
|
|
+ /*
|
|
|
if (pSysInfo->SystemPage != _PAGE_IDLE && !ShmDcCommonData->Exe_ReDeduct) {
|
|
|
ShmDcCommonData->RoutineReduct = FALSE;
|
|
|
break;
|
|
|
}
|
|
|
+ */
|
|
|
log_info("Start Rededuct item [%d]",j);
|
|
|
if (deductInfo[j].isIntoCharge == FALSE ||
|
|
|
(deductInfo[j].Energy == 0 && deductInfo[j].Amount == 0)) {
|
|
@@ -436,7 +439,7 @@ void ReDeductProcess(int fd)
|
|
|
} else {
|
|
|
// 度數大於零
|
|
|
if (deductInfo[j].Amount == 0 && deductInfo[j].Energy > 0) {
|
|
|
- deductInfo[j].Amount = deductInfo[j].Energy * ShmDcCommonData->ChargingRate;
|
|
|
+ deductInfo[j].Amount = ceil(deductInfo[j].Energy * ShmDcCommonData->ChargingRate);
|
|
|
if (deductInfo[j].Amount < 1)
|
|
|
deductInfo[j].Amount = 1;
|
|
|
log_info("Error Close Charging recount amount:%.1f",deductInfo[j].Amount);
|
|
@@ -497,6 +500,7 @@ void CreateRfidFork(void)
|
|
|
int donate = 0;
|
|
|
rfidRecPid = fork();
|
|
|
int j = 0;
|
|
|
+ int sel_gun = 0;
|
|
|
if (rfidRecPid == 0) {
|
|
|
//char localTime[128] = {0};
|
|
|
struct timeb SeqEndTime;
|
|
@@ -540,7 +544,7 @@ void CreateRfidFork(void)
|
|
|
is_idle = TRUE;
|
|
|
for (gunIndex = 0; gunIndex < pSysConfig->TotalConnectorCount; gunIndex++) {
|
|
|
pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(gunIndex);
|
|
|
- if (pDcChargingInfo->SystemStatus != S_IDLE && pDcChargingInfo->SystemStatus != S_FAULT ) {
|
|
|
+ if (pDcChargingInfo->SystemStatus != S_IDLE && pDcChargingInfo->SystemStatus != S_FAULT) {
|
|
|
is_idle = FALSE;
|
|
|
}
|
|
|
if (ShmDcCommonData->StopCharge[gunIndex] == TRUE && pDcChargingInfo->Replug_flag == TRUE) {
|
|
@@ -597,10 +601,11 @@ void CreateRfidFork(void)
|
|
|
CreditCardCancelPreAuth(fd,pSysInfo->CurGunSelected);
|
|
|
// 預授權
|
|
|
} else if (ShmDcCommonData->PreAuth_Config == _CREDITCARD_PREAUTH /* && ShmDcCommonData->GetCardNo[pSysInfo->CurGunSelected]*/) {
|
|
|
- donate = (int)ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].IsDonateInvoice;
|
|
|
- memset(&ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected], 0x00, sizeof(RecordTransactionInfo));
|
|
|
- ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].IsDonateInvoice = (unsigned char)donate;
|
|
|
- result = CreditCardPreAuth(fd, PREAUTHMONEY,&pSysConfig->ModelName[0], &ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].pCreditCard);
|
|
|
+ sel_gun = pSysInfo->CurGunSelected;
|
|
|
+ donate = (int)ShmDcCommonData->TransactionInfo[sel_gun].IsDonateInvoice;
|
|
|
+ memset(&ShmDcCommonData->TransactionInfo[sel_gun], 0x00, sizeof(RecordTransactionInfo));
|
|
|
+ ShmDcCommonData->TransactionInfo[sel_gun].IsDonateInvoice = (unsigned char)donate;
|
|
|
+ result = CreditCardPreAuth(fd, PREAUTHMONEY,&pSysConfig->ModelName[0], &ShmDcCommonData->TransactionInfo[sel_gun].pCreditCard);
|
|
|
if (!ShmDcCommonData->TradeCancel)
|
|
|
StopSystemTimeoutDet();
|
|
|
if (ShmDcCommonData->TradeCancel == FALSE && result > 0) {
|
|
@@ -610,34 +615,40 @@ void CreateRfidFork(void)
|
|
|
|
|
|
ShmDcCommonData->PreAuth_Result = result;
|
|
|
//result = 1;
|
|
|
- if (result > 0 && strcmp(ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].pCreditCard.CardNo,"") != 0 ) {
|
|
|
+ if (result > 0 && strcmp(ShmDcCommonData->TransactionInfo[sel_gun].pCreditCard.CardNo,"") != 0 ) {
|
|
|
|
|
|
- ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = TRUE;
|
|
|
- strncpy((char*)pSysConfig->UserId, (char *)ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].pCreditCard.CardNo, 20);
|
|
|
+ ShmDcCommonData->AuthPass_flag[sel_gun] = TRUE;
|
|
|
+ strncpy((char*)pSysConfig->UserId, (char *)ShmDcCommonData->TransactionInfo[sel_gun].pCreditCard.CardNo, 20);
|
|
|
log_info("Authorize card:%s", pSysConfig->UserId);
|
|
|
- ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].DeductResult = _DEDUCT_PREAUTH;
|
|
|
- ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].IsUpload = FALSE;
|
|
|
- InsertDeductInfo(ShmDcCommonData->ConnectorID[pSysInfo->CurGunSelected], &ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected]);
|
|
|
+ ShmDcCommonData->TransactionInfo[sel_gun].DeductResult = _DEDUCT_PREAUTH;
|
|
|
+ ShmDcCommonData->TransactionInfo[sel_gun].IsUpload = FALSE;
|
|
|
+ ShmDcCommonData->TransactionInfo[sel_gun].ConnectorID = ShmDcCommonData->ConnectorID[sel_gun];
|
|
|
+ InsertDeductInfo(ShmDcCommonData->ConnectorID[sel_gun], &ShmDcCommonData->TransactionInfo[sel_gun]);
|
|
|
log_info("PreAuth OK");
|
|
|
} else if (result < 0) {
|
|
|
if (ShmDcCommonData->TradeCancel == FALSE)
|
|
|
pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
|
|
|
- ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = FALSE;
|
|
|
- memset(&ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].pCreditCard, 0, sizeof(TransInfo));
|
|
|
+ ShmDcCommonData->AuthPass_flag[sel_gun] = FALSE;
|
|
|
+ memset(&ShmDcCommonData->TransactionInfo[sel_gun].pCreditCard, 0, sizeof(TransInfo));
|
|
|
log_info("PreAuth Fail");
|
|
|
+ sleep(7);
|
|
|
}
|
|
|
ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
|
}
|
|
|
|
|
|
- // 每日晚上11點進行補扣款
|
|
|
- if (tm->tm_min %5 == 0 && tm->tm_sec == 0) {
|
|
|
+ // 每30分鐘檢查補扣款
|
|
|
+ if (tm->tm_min %30 == 0 && tm->tm_sec == 0) {
|
|
|
ShmDcCommonData->RoutineReduct = FALSE;
|
|
|
}
|
|
|
|
|
|
if ((is_idle == TRUE &&
|
|
|
pSysInfo->SystemPage == _PAGE_IDLE &&
|
|
|
ShmDcCommonData->RoutineReduct == FALSE) || ShmDcCommonData->Exe_ReDeduct) {
|
|
|
+ ShmDcCommonData->CreditCardUpload = TRUE;
|
|
|
+ pSysInfo->SystemPage = _PAGE_PAYING;
|
|
|
ReDeductProcess(fd);
|
|
|
+ pSysInfo->SystemPage = _PAGE_IDLE;
|
|
|
+ ShmDcCommonData->CreditCardUpload = FALSE;
|
|
|
ShmDcCommonData->Exe_ReDeduct = 0;
|
|
|
}
|
|
|
|
|
@@ -650,7 +661,8 @@ void CreateRfidFork(void)
|
|
|
ShmDcCommonData->UnionSettlement = 0;
|
|
|
else
|
|
|
ShmDcCommonData->RoutineSettlement = TRUE;
|
|
|
- pSysInfo->SystemPage = _PAGE_MAINTAIN;
|
|
|
+ ShmDcCommonData->CreditCardUpload = TRUE;
|
|
|
+ pSysInfo->SystemPage = _PAGE_PAYING;
|
|
|
|
|
|
result = CreditCardUnionSettlement(fd, &pSysConfig->ModelName[0], &LocalTransactionInfo.pCreditCard);
|
|
|
if (result > 0) {
|
|
@@ -660,10 +672,10 @@ void CreateRfidFork(void)
|
|
|
log_info("CreditCardUnionSettlement FAIL");
|
|
|
sleep(90);
|
|
|
pSysInfo->SystemPage = _PAGE_IDLE;
|
|
|
+ ShmDcCommonData->CreditCardUpload = FALSE;
|
|
|
}
|
|
|
if (tm->tm_hour == 16 && tm->tm_min == 0) {
|
|
|
ShmDcCommonData->RoutineSettlement = FALSE;
|
|
|
- ShmDcCommonData->RoutineReduct = FALSE;
|
|
|
}
|
|
|
/*
|
|
|
// 刷卡判斷
|