|
@@ -81,7 +81,7 @@ bool isAutorCompleteHandle(/*uint8_t *authorizeIndex*/)
|
|
|
|
|
|
ClearAuthorizedFlag();
|
|
|
|
|
|
- } /*else if (pSysConfig->OfflinePolicy == _OFFLINE_POLICY_LOCAL_LIST) {
|
|
|
+ } else if (pSysConfig->OfflinePolicy == _OFFLINE_POLICY_LOCAL_LIST) {
|
|
|
// 白名單驗證
|
|
|
for (i = 0; i < 10; i++) {
|
|
|
if (strcmp((char *)pSysConfig->LocalWhiteCard[i], "") == EQUAL) {
|
|
@@ -130,16 +130,16 @@ bool RfidStopCharging(void)
|
|
|
}
|
|
|
static void UserScanFunction(void)
|
|
|
{
|
|
|
- bool idleReq = false;
|
|
|
- uint8_t i = 0;
|
|
|
- uint8_t stopReq = NO_DEFINE;
|
|
|
- char value[32] = {0};
|
|
|
- static uint8_t _authorizeIndex = NO_DEFINE;
|
|
|
+ // bool idleReq = false;
|
|
|
+ //uint8_t i = 0;
|
|
|
+ //uint8_t stopReq = NO_DEFINE;
|
|
|
+ //char value[32] = {0};
|
|
|
+ //static uint8_t _authorizeIndex = NO_DEFINE;
|
|
|
struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
|
|
|
struct SysInfoData *pSysInfo = (struct SysInfoData *)GetShmSysInfoData();
|
|
|
- struct ChargingInfoData *pAcChargingInfo = (struct ChargingInfoData *)GetAcChargingInfoData(0);
|
|
|
+ //struct ChargingInfoData *pAcChargingInfo = (struct ChargingInfoData *)GetAcChargingInfoData(0);
|
|
|
struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
- GunIndexInfo *pGunIndexInfo = (GunIndexInfo *)GetGunIndexInfo();
|
|
|
+ //GunIndexInfo *pGunIndexInfo = (GunIndexInfo *)GetGunIndexInfo();
|
|
|
|
|
|
// 當前非驗證的狀態
|
|
|
if (IsAuthorizingMode()) {
|
|
@@ -271,9 +271,9 @@ void AuthorizeToCharge()
|
|
|
{
|
|
|
struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
|
|
|
struct SysInfoData *pSysInfo = (struct SysInfoData *)GetShmSysInfoData();
|
|
|
- SelectGunInfo *ShmSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo();
|
|
|
- struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
- pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected);
|
|
|
+ // SelectGunInfo *ShmSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo();
|
|
|
+ // struct ChargingInfoData *pDcChargingInfo = (struct ChargingInfoData*)GetDcChargingInfoData(pSysInfo->CurGunSelected);;
|
|
|
+
|
|
|
ShmDcCommonData = (DcCommonInfo *)GetShmDcCommonData();
|
|
|
if(isAuthorizedComplete())
|
|
|
{
|
|
@@ -295,7 +295,7 @@ void AuthorizeToCharge()
|
|
|
}
|
|
|
void ScannerCardProcess(void)
|
|
|
{
|
|
|
- struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
|
|
|
+ //struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
|
|
|
struct SysInfoData *pSysInfo = (struct SysInfoData *)GetShmSysInfoData();
|
|
|
struct WARNING_CODE_INFO *pSysWarning = (struct WARNING_CODE_INFO *)GetShmSysWarningInfo();
|
|
|
struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
@@ -324,13 +324,11 @@ void ScannerCardProcess(void)
|
|
|
|
|
|
void WritePayResult(int result ,uint8_t gunIndex)
|
|
|
{
|
|
|
- ShmDcCommonData->TransactionInfo[gunIndex].Amount = LocalTransactionInfo.Amount;
|
|
|
- memcpy(ShmDcCommonData->TransactionInfo[gunIndex].ApprovalNo , LocalTransactionInfo.ApprovalNo,9);
|
|
|
- memcpy(ShmDcCommonData->TransactionInfo[gunIndex].CardNo , LocalTransactionInfo.CardNo,20);
|
|
|
- ShmDcCommonData->TransactionInfo[gunIndex].DeductResult = result;
|
|
|
- ShmDcCommonData->TransactionInfo[gunIndex].IsDonateInvoice = LocalTransactionInfo.IsDonateInvoice;
|
|
|
- ShmDcCommonData->TransactionInfo[gunIndex].TransactionId = LocalTransactionInfo.TransactionId;
|
|
|
- memcpy(ShmDcCommonData->TransactionInfo[gunIndex].VemData, LocalTransactionInfo.VemData,64);
|
|
|
+ memcpy(&ShmDcCommonData->TransactionInfo[gunIndex], &LocalTransactionInfo, sizeof(RecordTransactionInfo));
|
|
|
+ if (result == TRUE)
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].DeductResult = _DEDUCT_COMPLETE_PASS;
|
|
|
+ else
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].DeductResult = _DEDUCT_COMPLETE_FAIL;
|
|
|
|
|
|
log_info("Gun[%d] TransactionId:%d DeductResult:%d IsDonateInvoice:%d Amount:%f",
|
|
|
gunIndex, ShmDcCommonData->TransactionInfo[gunIndex].TransactionId,
|
|
@@ -341,44 +339,129 @@ void WritePayResult(int result ,uint8_t gunIndex)
|
|
|
void storePayResult(uint8_t gunIndex)
|
|
|
{
|
|
|
memset(&LocalTransactionInfo, 0, sizeof(RecordTransactionInfo));
|
|
|
- LocalTransactionInfo.Amount = ShmDcCommonData->finalcost[gunIndex];
|
|
|
- memcpy(LocalTransactionInfo.ApprovalNo, ShmDcCommonData->pCreditCard[gunIndex].ApprovalNo, 9);
|
|
|
- memcpy(LocalTransactionInfo.CardNo, ShmDcCommonData->pCreditCard[gunIndex].CardNo, 20);
|
|
|
- LocalTransactionInfo.IsDonateInvoice = ShmDcCommonData->donate_flag[gunIndex];
|
|
|
- LocalTransactionInfo.TransactionId = ShmSelectGunInfo->PricesInfo[gunIndex].TransactionId;
|
|
|
- memcpy(LocalTransactionInfo.VemData, ShmDcCommonData->pCreditCard[gunIndex].VemData, 64);
|
|
|
+ memcpy(&LocalTransactionInfo, &ShmDcCommonData->TransactionInfo[gunIndex] ,sizeof(RecordTransactionInfo));
|
|
|
+ //LocalTransactionInfo.Amount = ShmDcCommonData->finalcost[gunIndex];
|
|
|
}
|
|
|
void PreAuthCompleteToCardReader(int fd,uint8_t gunIndex)
|
|
|
{
|
|
|
+ struct SysConfigData* pSysConfig = (struct SysConfigData*)GetShmSysConfigData();
|
|
|
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;
|
|
|
+ if (ShmDcCommonData->TransactionInfo[gunIndex].Amount > 0 && ShmDcCommonData->TransactionInfo[gunIndex].Amount < 1) {
|
|
|
+ log_info("final cost less 1 : %f", ShmDcCommonData->TransactionInfo[gunIndex].Amount);
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].Amount = 1;
|
|
|
}
|
|
|
storePayResult(gunIndex);
|
|
|
|
|
|
- result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->finalcost[gunIndex], "TCC Test",
|
|
|
- &ShmDcCommonData->pCreditCard[gunIndex].VemData[0],
|
|
|
- &ShmDcCommonData->pCreditCard[gunIndex]);
|
|
|
-
|
|
|
- //result = 1;
|
|
|
+ result = CreditCardPreAuthComplete(fd,(int)ShmDcCommonData->TransactionInfo[gunIndex].Amount, &pSysConfig->ModelName[0],
|
|
|
+ &ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard.VemData[0],
|
|
|
+ &ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard);
|
|
|
sleep(10);
|
|
|
- ShmDcCommonData->PayFinish[gunIndex] = TRUE;
|
|
|
if (result > 0 ) {
|
|
|
log_info("Credit Card Spend Money:%.1f", LocalTransactionInfo.Amount);
|
|
|
pSysInfo->SystemPage = _PAGE_COMPLETE;
|
|
|
+ LocalTransactionInfo.DeductResult = _DEDUCT_COMPLETE_PASS;
|
|
|
WritePayResult(TRUE,gunIndex);
|
|
|
ShmDcCommonData->PayPass_flag[gunIndex] = TRUE;
|
|
|
} else {
|
|
|
log_info("PAYING FAIL");
|
|
|
ShmDcCommonData->PayPass_flag[gunIndex] = FALSE;
|
|
|
pSysInfo->SystemPage = _PAGE_PAYFAIL;
|
|
|
+ LocalTransactionInfo.DeductResult = _DEDUCT_COMPLETE_FAIL;
|
|
|
WritePayResult(FALSE,gunIndex);
|
|
|
}
|
|
|
- if (isDeductDb_ready == TRUE) {
|
|
|
- InsertDeductInfo(gunIndex,&ShmDcCommonData->TransactionInfo[gunIndex]);
|
|
|
- }
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].IsUpload = FALSE;
|
|
|
+ UpdateDeductInfoStatus(gunIndex, &ShmDcCommonData->TransactionInfo[gunIndex]);
|
|
|
+
|
|
|
+}
|
|
|
+int CreditCardCancelPreAuth(int fd, uint8_t gunIndex)
|
|
|
+{
|
|
|
+ struct SysConfigData* pSysConfig = (struct SysConfigData*)GetShmSysConfigData();
|
|
|
+ ShmDcCommonData->PreAuth_Result = CreditCardPreAuthCancel(fd, PREAUTHMONEY, &pSysConfig->ModelName[0],
|
|
|
+ &ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard.ApprovalNo[0],
|
|
|
+ &ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard.CardNo[0],
|
|
|
+ &ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard.VemData[0]);
|
|
|
+ sleep(10);
|
|
|
+ if (ShmDcCommonData->PreAuth_Result >= 0) {
|
|
|
+ strcpy((char*)pSysConfig->UserId, "");
|
|
|
+ //ShmDcCommonData->PayFinish[gunIndex] = TRUE;
|
|
|
+ log_info("Card Reader PreAuth Cancel Success");
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].DeductResult = _DEDUCT_CANCEL;
|
|
|
+ } else if (ShmDcCommonData->PreAuth_Result < 0) {
|
|
|
+ log_info("Card Reader PreAuth Cancel Failure");
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].DeductResult = _DEDUCT_PREAUTH;
|
|
|
+ }
|
|
|
+ ShmDcCommonData->TransactionInfo[gunIndex].IsUpload = FALSE;
|
|
|
+ UpdateDeductInfoStatus(gunIndex, &ShmDcCommonData->TransactionInfo[gunIndex]);
|
|
|
+
|
|
|
+ if (ShmDcCommonData->PreAuth_Result >= 0) {
|
|
|
+ memset(&ShmDcCommonData->TransactionInfo[gunIndex].pCreditCard, 0, sizeof(TransInfo));
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
|
+ return ShmDcCommonData->PreAuth_Result;
|
|
|
+}
|
|
|
+
|
|
|
+void ReDeductProcess(int fd)
|
|
|
+{
|
|
|
+ struct SysConfigData* pSysConfig = (struct SysConfigData*)GetShmSysConfigData();
|
|
|
+ int j;
|
|
|
+ int result;
|
|
|
+ int rededuct_gunIndex[128];
|
|
|
+ RecordTransactionInfo deductInfo[128];
|
|
|
+ int rededuct_num = 0;
|
|
|
+ rededuct_num = DB_GetMultiReDeductInfo(&rededuct_gunIndex[0], &deductInfo[0]);
|
|
|
+
|
|
|
+ if (rededuct_num == 0)
|
|
|
+ log_info("No Rededuct Information");
|
|
|
+ else {
|
|
|
+ log_info("Rededuct Number:%d", rededuct_num);
|
|
|
+ for (j = 0; j < rededuct_num; j++) {
|
|
|
+ if (pSysInfo->SystemPage != _PAGE_IDLE && !ShmDcCommonData->Exe_ReDeduct) {
|
|
|
+ ShmDcCommonData->RoutineReduct = FALSE;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (deductInfo[j].isIntoCharge == FALSE || deductInfo[j].Energy == 0) {
|
|
|
+ // 未進入充電或度數等於零
|
|
|
+ result = CreditCardPreAuthCancel(fd, PREAUTHMONEY, &pSysConfig->ModelName[0],
|
|
|
+ &deductInfo[j].pCreditCard.ApprovalNo[0],
|
|
|
+ &deductInfo[j].pCreditCard.CardNo[0],
|
|
|
+ &deductInfo[j].pCreditCard.VemData[0]);
|
|
|
+ sleep(10);
|
|
|
+ if (result > 0) {
|
|
|
+ deductInfo[j].DeductResult = _DEDUCT_CANCEL;
|
|
|
+ log_info("Backgroud PreAuthCancel OK");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 度數大於零
|
|
|
+ if (deductInfo[j].Amount == 0 && deductInfo[j].Energy > 0) {
|
|
|
+ deductInfo[j].Amount = 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);
|
|
|
+ }
|
|
|
+ result = CreditCardPreAuthComplete(fd, (int)deductInfo[j].Amount, &pSysConfig->ModelName[0],
|
|
|
+ &deductInfo[j].pCreditCard.VemData[0],
|
|
|
+ &ShmDcCommonData->TransactionInfo[0].pCreditCard);
|
|
|
+ sleep(10);
|
|
|
+ if (result > 0) {
|
|
|
+ deductInfo[j].DeductResult = _DEDUCT_COMPLETE_PASS;
|
|
|
+ deductInfo[j].IsUpload = NO;
|
|
|
+ log_info("Backgroud PreAuthComplete OK");
|
|
|
+ } else if (result < 0) {
|
|
|
+ deductInfo[j].DeductResult = _DEDUCT_COMPLETE_FAIL;
|
|
|
+ deductInfo[j].IsUpload = NO;
|
|
|
+ log_info("Backgroud ID:%d Amount:%d VemData:%s PreAuthComplete fail",
|
|
|
+ deductInfo[j].TransactionId,
|
|
|
+ (int)deductInfo[j].Amount,
|
|
|
+ deductInfo[j].pCreditCard.VemData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ deductInfo[j].IsUpload = FALSE;
|
|
|
+ UpdateDeductInfoStatus(rededuct_gunIndex[j], &deductInfo[j]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ShmDcCommonData->RoutineReduct = TRUE;
|
|
|
}
|
|
|
static int InitialRfidPort(void)
|
|
|
{
|
|
@@ -405,29 +488,7 @@ static int InitialRfidPort(void)
|
|
|
|
|
|
return fd;
|
|
|
}
|
|
|
-int CreditCardCancelPreAuth(int fd,uint8_t gunIndex)
|
|
|
-{
|
|
|
-
|
|
|
- struct SysConfigData* pSysConfig = (struct SysConfigData*)GetShmSysConfigData();
|
|
|
- ShmDcCommonData->PreAuth_Result = CreditCardPreAuthCancel(fd, PREAUTHMONEY, "TCC Test",
|
|
|
- &ShmDcCommonData->pCreditCard[gunIndex].ApprovalNo[0],
|
|
|
- &ShmDcCommonData->pCreditCard[gunIndex].CardNo[0],
|
|
|
- &ShmDcCommonData->pCreditCard[gunIndex].VemData[0]);
|
|
|
- sleep(10);
|
|
|
- ShmDcCommonData->PayFinish[gunIndex] = TRUE;
|
|
|
- if (ShmDcCommonData->PreAuth_Result >= 0) {
|
|
|
- strcpy((char*)pSysConfig->UserId, "");
|
|
|
- //ShmDcCommonData->PayFinish[gunIndex] = TRUE;
|
|
|
- log_info("Card Reader PreAuth Cancel Success");
|
|
|
- memset(&ShmDcCommonData->pCreditCard[gunIndex], 0, sizeof(TransInfo));
|
|
|
|
|
|
- }
|
|
|
- else if (ShmDcCommonData->PreAuth_Result < 0) {
|
|
|
- log_info("Card Reader PreAuth Cancel Failure");
|
|
|
- }
|
|
|
- ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
|
- return ShmDcCommonData->PreAuth_Result;
|
|
|
-}
|
|
|
void CreateRfidFork(void)
|
|
|
{
|
|
|
pid_t rfidRecPid;
|
|
@@ -438,30 +499,28 @@ void CreateRfidFork(void)
|
|
|
rfidRecPid = fork();
|
|
|
int j = 0;
|
|
|
if (rfidRecPid == 0) {
|
|
|
- char localTime[128] = {0};
|
|
|
+ //char localTime[128] = {0};
|
|
|
struct timeb SeqEndTime;
|
|
|
struct tm *tm;
|
|
|
pSysInfo = (struct SysInfoData *)GetShmSysInfoData();
|
|
|
int fd = -1;
|
|
|
int isContinue = 1;
|
|
|
- RFID rfid = {0};
|
|
|
- RecordTransactionInfo deduct;
|
|
|
+ //RFID rfid = {0};
|
|
|
+ //RecordTransactionInfo deduct;
|
|
|
fd = InitialRfidPort();
|
|
|
struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
|
|
|
ShmDcCommonData = (DcCommonInfo *)GetShmDcCommonData();
|
|
|
ShmSelectGunInfo = (SelectGunInfo *)GetShmSelectGunInfo();
|
|
|
struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
+ if (DeductDB_Open() != PASS) {
|
|
|
+ isDeductDb_ready = false;
|
|
|
+ } else {
|
|
|
+ isDeductDb_ready = true;
|
|
|
+ //InsertDeductInfo(0, &ShmDcCommonData->TransactionInfo);
|
|
|
+ }
|
|
|
int gunIndex;
|
|
|
- int uploadIndex = 0;
|
|
|
+ //int uploadIndex = 0;
|
|
|
int ReAuthComplete_Index = 0;
|
|
|
- if(DeductDB_Open() != PASS)
|
|
|
- {
|
|
|
- isDeductDb_ready = false;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- isDeductDb_ready = true;
|
|
|
- }
|
|
|
//log_info("RFID fork Child's PID is %d", getpid());
|
|
|
int result;
|
|
|
int is_idle = TRUE;
|
|
@@ -472,15 +531,16 @@ void CreateRfidFork(void)
|
|
|
SeqEndTime.time = time(NULL);
|
|
|
tm = localtime(&SeqEndTime.time);
|
|
|
|
|
|
- if (ShmDcCommonData->DebugFlag == TRUE) {
|
|
|
+ if (ShmDcCommonData->DebugFlag == TRUE ||
|
|
|
+ ShmDcCommonData->is_RemoteStart[pSysInfo->CurGunSelected] == TRUE ||
|
|
|
+ ShmDcCommonData->is_AutoStart[pSysInfo->CurGunSelected] == TRUE) {
|
|
|
ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
|
ShmDcCommonData->PreAuth_Result = 0;
|
|
|
- continue;
|
|
|
}
|
|
|
|
|
|
if (ShmDcCommonData->UnionSettlement) {
|
|
|
ShmDcCommonData->UnionSettlement = 0;
|
|
|
- result = CreditCardUnionSettlement(fd, "TCC Test", &ShmDcCommonData->pCreditCard[0]);
|
|
|
+ result = CreditCardUnionSettlement(fd, &pSysConfig->ModelName[0], &ShmDcCommonData->TransactionInfo[0].pCreditCard);
|
|
|
if (result > 0) {
|
|
|
log_info("CreditCardUnionSettlement OK");
|
|
|
}
|
|
@@ -495,9 +555,20 @@ void CreateRfidFork(void)
|
|
|
}
|
|
|
if (ShmDcCommonData->StopCharge[gunIndex] == TRUE && ShmDcCommonData->finalcost_flag[gunIndex]) {
|
|
|
ShmDcCommonData->StopCharge[gunIndex] = FALSE;
|
|
|
+ ShmDcCommonData->finalcost_flag[gunIndex] = FALSE;
|
|
|
pSysInfo->SystemPage = _PAGE_PAYING;
|
|
|
StopGunInfoTimeoutDet(gunIndex); //Timeout_FinalCost
|
|
|
- if (ShmDcCommonData->finalcost[gunIndex] == 0) {
|
|
|
+
|
|
|
+ // Remote Start of AutoStart ByPass Credit Card Reader
|
|
|
+ if (ShmDcCommonData->DebugFlag == TRUE ||
|
|
|
+ ShmDcCommonData->is_RemoteStart[gunIndex] == TRUE ||
|
|
|
+ ShmDcCommonData->is_AutoStart[gunIndex] == TRUE) {
|
|
|
+ pSysInfo->SystemPage = _PAGE_COMPLETE;
|
|
|
+ ShmDcCommonData->PayPass_flag[gunIndex] = TRUE;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 實際扣款
|
|
|
+ if (ShmDcCommonData->TransactionInfo[gunIndex].Amount == 0) {
|
|
|
log_info("Final Cost less 1 , Cancel Trade!!");
|
|
|
if (CreditCardCancelPreAuth(fd, gunIndex) > 0) {
|
|
|
pSysInfo->SystemPage = _PAGE_COMPLETE;
|
|
@@ -512,31 +583,32 @@ void CreateRfidFork(void)
|
|
|
}
|
|
|
}
|
|
|
} // for
|
|
|
-
|
|
|
+ // 取消預授權
|
|
|
if(ShmDcCommonData->PreAuth_Config == _CREDITCARD_CANCEL) {
|
|
|
CreditCardCancelPreAuth(fd,pSysInfo->CurGunSelected);
|
|
|
+ // 預授權
|
|
|
} else if (ShmDcCommonData->PreAuth_Config == _CREDITCARD_PREAUTH /* && ShmDcCommonData->GetCardNo[pSysInfo->CurGunSelected]*/) {
|
|
|
- result = CreditCardPreAuth(fd, PREAUTHMONEY,"TCC Test", &ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected]);
|
|
|
+ result = CreditCardPreAuth(fd, PREAUTHMONEY,&pSysConfig->ModelName[0], &ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].pCreditCard);
|
|
|
if (ShmDcCommonData->TradeCancel == FALSE && result > 0) {
|
|
|
pSysInfo->SystemPage = _PAGE_SENSING;
|
|
|
sleep(10);
|
|
|
}
|
|
|
StopSystemTimeoutDet();
|
|
|
-
|
|
|
ShmDcCommonData->PreAuth_Result = result;
|
|
|
//result = 1;
|
|
|
if (result > 0) {
|
|
|
ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = TRUE;
|
|
|
- strncpy((char*)pSysConfig->UserId, ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected].CardNo, 20);
|
|
|
+ strncpy((char*)pSysConfig->UserId, (char *)ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].pCreditCard.CardNo, 20);
|
|
|
log_info("Authorize card:%s", pSysConfig->UserId);
|
|
|
- ShmDcCommonData->GetCardNo[pSysInfo->CurGunSelected] = TRUE;
|
|
|
+ ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].DeductResult = _DEDUCT_PREAUTH;
|
|
|
+ ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].IsUpload = FALSE;
|
|
|
+ InsertDeductInfo(pSysInfo->CurGunSelected,&ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected]);
|
|
|
log_info("PreAuth OK");
|
|
|
} else if (result < 0) {
|
|
|
- struct ChargingInfoData *pDcChargingInfo = NULL;
|
|
|
if (ShmDcCommonData->TradeCancel == FALSE)
|
|
|
pSysInfo->SystemPage = _PAGE_AUTHORIZE_FAIL;
|
|
|
ShmDcCommonData->AuthPass_flag[pSysInfo->CurGunSelected] = FALSE;
|
|
|
- memset(&ShmDcCommonData->pCreditCard[pSysInfo->CurGunSelected], 0, sizeof(TransInfo));
|
|
|
+ memset(&ShmDcCommonData->TransactionInfo[pSysInfo->CurGunSelected].pCreditCard, 0, sizeof(TransInfo));
|
|
|
log_info("PreAuth Fail");
|
|
|
}
|
|
|
ShmDcCommonData->PreAuth_Config = _CREDITCARD_IDLE;
|
|
@@ -546,42 +618,14 @@ void CreateRfidFork(void)
|
|
|
if ((is_idle == TRUE && (tm->tm_hour == 15 && tm->tm_min < 30) &&
|
|
|
pSysInfo->SystemPage == _PAGE_IDLE &&
|
|
|
ShmDcCommonData->RoutineReduct == FALSE) || ShmDcCommonData->Exe_ReDeduct) {
|
|
|
+ ReDeductProcess(fd);
|
|
|
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 &&
|
|
|
+ if (is_idle == TRUE && tm->tm_hour == 15 && tm->tm_min > 30 &&
|
|
|
ShmDcCommonData->RoutineSettlement == FALSE) {
|
|
|
ShmDcCommonData->RoutineSettlement = TRUE;
|
|
|
- result = CreditCardUnionSettlement(fd, "TCC Test", &ShmDcCommonData->pCreditCard[0]);
|
|
|
+ result = CreditCardUnionSettlement(fd, &pSysConfig->ModelName[0], &ShmDcCommonData->TransactionInfo[0].pCreditCard);
|
|
|
if (result > 0) {
|
|
|
log_info("CreditCardUnionSettlement OK");
|
|
|
}
|