UbiAnyCard Ver2 2.0
KICC ED785 단말기 연동 TCP 서버
로딩중...
검색중...
일치하는것 없음
ElectronicMoneyParser 네임스페이스 참조

클래스

struct  CashBeeError
struct  CashBeeResult
struct  RailPlusResult
struct  TMoneyError
struct  TMoneyResult

함수

std::vector< std::pair< std::string, std::string > > CashBeeToKeyValue (const CashBeeResult &result)
std::string ExtractField (const std::string &data, size_t &offset, size_t length)
std::string GetCashBeeErrorMessage (const std::string &errorCode)
std::string GetRailPlusErrorMessage (const std::string &responseCode)
std::string GetTMoneyErrorMessage (int errorCode1, int errorCode2)
CashBeeResult ParseCashBee (const std::string &data)
CashBeeError ParseCashBeeError (const std::string &data)
RailPlusResult ParseRailPlus (const std::string &data)
TMoneyResult ParseTMoney (const std::string &data)
TMoneyError ParseTMoneyError (const std::string &data)
std::vector< std::pair< std::string, std::string > > RailPlusToKeyValue (const RailPlusResult &result)
std::vector< std::pair< std::string, std::string > > TMoneyToKeyValue (const TMoneyResult &result)

함수 문서화

◆ CashBeeToKeyValue()

std::vector< std::pair< std::string, std::string > > ElectronicMoneyParser::CashBeeToKeyValue ( const CashBeeResult & result)
382 {
383 std::vector<std::pair<std::string, std::string>> kv;
384
385 kv.emplace_back("CB_RESULT_CODE", result.resultCode);
386 kv.emplace_back("CB_COMMAND", result.command);
387 kv.emplace_back("CB_TID", result.chargerNumber);
388 kv.emplace_back("CB_SERIAL", result.serialNumber);
389 kv.emplace_back("CB_SAM_TYPE", result.samType);
390 kv.emplace_back("CB_SAM_ID", result.samId);
391 kv.emplace_back("CB_CARD_NUMBER", result.cardNumber);
392 kv.emplace_back("CB_TX_SERIAL", result.transactionSerial);
393 kv.emplace_back("CB_WORK_TYPE", result.workType);
394 kv.emplace_back("CB_TX_DATETIME", result.transactionDateTime);
395 kv.emplace_back("CB_BALANCE_BEFORE", result.balanceBefore);
396 kv.emplace_back("CB_REQUEST_AMOUNT", result.requestAmount);
397 kv.emplace_back("CB_BALANCE_AFTER", result.balanceAfter);
398 kv.emplace_back("CB_SAM_BALANCE_BEFORE", result.samBalanceBefore);
399 kv.emplace_back("CB_SAM_BALANCE_AFTER", result.samBalanceAfter);
400 kv.emplace_back("CB_CARD_TYPE", result.cardType);
401 kv.emplace_back("CB_PAYMENT_TYPE", result.paymentType);
402 kv.emplace_back("CB_MEMBERSHIP_EXPIRY", result.membershipExpiry);
403 kv.emplace_back("CB_MEMBERSHIP_CARD", result.membershipCardNumber);
404 kv.emplace_back("CB_FIRST_CHARGE_FLAG", result.firstChargeFlag);
405 kv.emplace_back("CB_FEE_RATE", result.feeRate);
406 kv.emplace_back("CB_FEE_AMOUNT", result.feeAmount);
407 kv.emplace_back("CB_SAM_TX_SERIAL", result.samTransactionSerial);
408 kv.emplace_back("CB_SAM_ACCUMULATED_CNT", result.samAccumulatedCounter);
409 kv.emplace_back("CB_SAM_ALGORITHM_ID", result.samAlgorithmId);
410 kv.emplace_back("CB_SAM_KEYSET_VERSION", result.samKeySetVersion);
411 kv.emplace_back("CB_CARD_DEPOSIT", result.cardDeposit);
412 kv.emplace_back("CB_PENALTY_AMOUNT", result.penaltyAmount);
413 kv.emplace_back("CB_APPROVAL_NUMBER", result.approvalNumber);
414 kv.emplace_back("CB_ISSUER_ID", result.issuerId);
415 kv.emplace_back("CB_SIGN", result.sign);
416 kv.emplace_back("CB_NCSAM", result.ncsam);
417 kv.emplace_back("CB_NISAM", result.nisam);
418 kv.emplace_back("CB_TOTSAM", result.totsam);
419 kv.emplace_back("CB_IDCENTER", result.idcenter);
420 kv.emplace_back("CB_MPSAM", result.mpsam);
421 kv.emplace_back("CB_MAX_IDCENTER", result.maxIdcenter);
422 kv.emplace_back("CB_BAL_IDCENTER", result.balIdcenter);
423 kv.emplace_back("CB_RESEND_FLAG", result.resendFlag);
424 kv.emplace_back("CB_TX_RESULT", result.transactionResult);
425 kv.emplace_back("CB_ERROR_CODE", result.errorCode);
426 kv.emplace_back("CB_ISSUER_NAME", result.issuerName);
427
428 return kv;
429 }
std::string resendFlag
Definition ElectronicMoneyParser.h:85
std::string penaltyAmount
Definition ElectronicMoneyParser.h:73
std::string idcenter
Definition ElectronicMoneyParser.h:80
std::string membershipExpiry
Definition ElectronicMoneyParser.h:62
std::string samType
Definition ElectronicMoneyParser.h:49
std::string balIdcenter
Definition ElectronicMoneyParser.h:83
std::string nisam
Definition ElectronicMoneyParser.h:78
std::string samBalanceAfter
Definition ElectronicMoneyParser.h:59
std::string maxIdcenter
Definition ElectronicMoneyParser.h:82
std::string cardType
Definition ElectronicMoneyParser.h:60
std::string workType
Definition ElectronicMoneyParser.h:53
std::string balanceBefore
Definition ElectronicMoneyParser.h:55
std::string transactionResult
Definition ElectronicMoneyParser.h:86
std::string transactionSerial
Definition ElectronicMoneyParser.h:52
std::string firstChargeFlag
Definition ElectronicMoneyParser.h:64
std::string command
Definition ElectronicMoneyParser.h:45
std::string samId
Definition ElectronicMoneyParser.h:50
std::string cardDeposit
Definition ElectronicMoneyParser.h:72
std::string samBalanceBefore
Definition ElectronicMoneyParser.h:58
std::string errorCode
Definition ElectronicMoneyParser.h:87
std::string requestAmount
Definition ElectronicMoneyParser.h:56
std::string feeRate
Definition ElectronicMoneyParser.h:66
std::string sign
Definition ElectronicMoneyParser.h:76
std::string totsam
Definition ElectronicMoneyParser.h:79
std::string mpsam
Definition ElectronicMoneyParser.h:81
std::string issuerId
Definition ElectronicMoneyParser.h:75
std::string samTransactionSerial
Definition ElectronicMoneyParser.h:68
std::string membershipCardNumber
Definition ElectronicMoneyParser.h:63
std::string issuerName
Definition ElectronicMoneyParser.h:89
std::string serialNumber
Definition ElectronicMoneyParser.h:48
std::string approvalNumber
Definition ElectronicMoneyParser.h:74
std::string samAccumulatedCounter
Definition ElectronicMoneyParser.h:69
std::string chargerNumber
Definition ElectronicMoneyParser.h:47
std::string samAlgorithmId
Definition ElectronicMoneyParser.h:70
std::string ncsam
Definition ElectronicMoneyParser.h:77
std::string paymentType
Definition ElectronicMoneyParser.h:61
std::string balanceAfter
Definition ElectronicMoneyParser.h:57
std::string samKeySetVersion
Definition ElectronicMoneyParser.h:71
std::string resultCode
Definition ElectronicMoneyParser.h:44
std::string feeAmount
Definition ElectronicMoneyParser.h:67
std::string cardNumber
Definition ElectronicMoneyParser.h:51
std::string transactionDateTime
Definition ElectronicMoneyParser.h:54

다음을 참조함 : ElectronicMoneyParser::CashBeeResult::approvalNumber, ElectronicMoneyParser::CashBeeResult::balanceAfter, ElectronicMoneyParser::CashBeeResult::balanceBefore, ElectronicMoneyParser::CashBeeResult::balIdcenter, ElectronicMoneyParser::CashBeeResult::cardDeposit, ElectronicMoneyParser::CashBeeResult::cardNumber, ElectronicMoneyParser::CashBeeResult::cardType, ElectronicMoneyParser::CashBeeResult::chargerNumber, ElectronicMoneyParser::CashBeeResult::command, ElectronicMoneyParser::CashBeeResult::errorCode, ElectronicMoneyParser::CashBeeResult::feeAmount, ElectronicMoneyParser::CashBeeResult::feeRate, ElectronicMoneyParser::CashBeeResult::firstChargeFlag, ElectronicMoneyParser::CashBeeResult::idcenter, ElectronicMoneyParser::CashBeeResult::issuerId, ElectronicMoneyParser::CashBeeResult::issuerName, ElectronicMoneyParser::CashBeeResult::maxIdcenter, ElectronicMoneyParser::CashBeeResult::membershipCardNumber, ElectronicMoneyParser::CashBeeResult::membershipExpiry, ElectronicMoneyParser::CashBeeResult::mpsam, ElectronicMoneyParser::CashBeeResult::ncsam, ElectronicMoneyParser::CashBeeResult::nisam, ElectronicMoneyParser::CashBeeResult::paymentType, ElectronicMoneyParser::CashBeeResult::penaltyAmount, ElectronicMoneyParser::CashBeeResult::requestAmount, ElectronicMoneyParser::CashBeeResult::resendFlag, ElectronicMoneyParser::CashBeeResult::resultCode, ElectronicMoneyParser::CashBeeResult::samAccumulatedCounter, ElectronicMoneyParser::CashBeeResult::samAlgorithmId, ElectronicMoneyParser::CashBeeResult::samBalanceAfter, ElectronicMoneyParser::CashBeeResult::samBalanceBefore, ElectronicMoneyParser::CashBeeResult::samId, ElectronicMoneyParser::CashBeeResult::samKeySetVersion, ElectronicMoneyParser::CashBeeResult::samTransactionSerial, ElectronicMoneyParser::CashBeeResult::samType, ElectronicMoneyParser::CashBeeResult::serialNumber, ElectronicMoneyParser::CashBeeResult::sign, ElectronicMoneyParser::CashBeeResult::totsam, ElectronicMoneyParser::CashBeeResult::transactionDateTime, ElectronicMoneyParser::CashBeeResult::transactionResult, ElectronicMoneyParser::CashBeeResult::transactionSerial, ElectronicMoneyParser::CashBeeResult::workType.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ExtractField()

std::string ElectronicMoneyParser::ExtractField ( const std::string & data,
size_t & offset,
size_t length )
9 {
10 if (offset + length > data.size())
11 return {};
12 std::string result = data.substr(offset, length);
13 offset += length;
14 return result;
15 }

다음에 의해서 참조됨 : ParseCashBee(), ParseCashBeeError(), ParseRailPlus(), ParseTMoney().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetCashBeeErrorMessage()

std::string ElectronicMoneyParser::GetCashBeeErrorMessage ( const std::string & errorCode)
293 {
294 // 부록 3의 에러코드 정의 참조
295 if (errorCode == "1999")
296 return "카드 통신 실패 카드 확인 요망";
297 if (errorCode == "1998")
298 return "Mifare 카드 Read 실패";
299 if (errorCode == "1997")
300 return "Mifare 카드 인증 실패";
301 if (errorCode == "1996")
302 return "Mifare 카드 Write 실패";
303 if (errorCode == "1995")
304 return "Mifare 카드 금액증가 실패";
305 if (errorCode == "1994")
306 return "Mifare 카드 금액차감 실패";
307 if (errorCode == "1993")
308 return "Mifare 카드 Restore 실패";
309 if (errorCode == "2999")
310 return "SAM 통신 실패 SAM 확인 요망";
311 if (errorCode == "2998")
312 return "SAM 에러 SAM 확인 요망";
313 if (errorCode == "2997")
314 return "SAM 에러 거래 복구 실패";
315 if (errorCode == "3999")
316 return "거래 오류 확인후 재시도 요망";
317 if (errorCode == "3990")
318 return "동글정보 확인 요망";
319 if (errorCode == "3991")
320 return "SAM 불일치 확인 요망";
321 if (errorCode == "4991")
322 return "지불/충전/환불 불가 단말기";
323 if (errorCode == "4992")
324 return "환불 불가";
325 if (errorCode == "4993")
326 return "거래금액 오류 확인후 재시도 요망";
327 if (errorCode == "4994")
328 return "정의되지 않은 명령 재시도 요망";
329
330 // 99XX: Host 오류 응답 코드
331 if (errorCode.size() == 4 && errorCode[0] == '9' && errorCode[1] == '9')
332 {
333 return "호스트 오류 [" + errorCode + "]";
334 }
335
336 return "캐시비 오류 [" + errorCode + "]";
337 }

◆ GetRailPlusErrorMessage()

std::string ElectronicMoneyParser::GetRailPlusErrorMessage ( const std::string & responseCode)
340 {
341 if (responseCode == "0000")
342 return "성공";
343 if (responseCode == "9999")
344 return "실패";
345 return "레일플러스 오류 [" + responseCode + "]";
346 }

다음에 의해서 참조됨 : RailPlusToKeyValue().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetTMoneyErrorMessage()

std::string ElectronicMoneyParser::GetTMoneyErrorMessage ( int errorCode1,
int errorCode2 )
211 {
212 // 부록 2의 오류코드 정의 참조
213 if (errorCode1 == 0xFF)
214 {
215 switch (errorCode2)
216 {
217 case 0x01:
218 return "잔액부족 타카드 사용요망";
219 case 0x02:
220 return "카드를 한장만 대주세요";
221 case 0x03:
222 return "정산오류 재시도 요망";
223 case 0x04:
224 return "잔액부족 타카드 사용요망";
225 case 0x05:
226 return "금액한도 초과 확인요망";
227 case 0x06:
228 return "비정상카드 타카드 사용요망";
229 case 0x07:
230 return "카드오류 타카드 사용요망";
231 case 0x08:
232 return "지원하지 않는 카드 타카드 사용요망";
233 case 0x09:
234 return "SAM 확인후 재거래 요망";
235 case 0x10:
236 return "단말기 기능등록 오류";
237 case 0x11:
238 return "발행사정보 다운로드 오류";
239 case 0x12:
240 return "동글오류 관리자에 문의요망";
241 case 0x13:
242 return "사용불가능카드 타카드 사용요망";
243 case 0x14:
244 return "거래미완료 반드시 재거래 요망";
245 case 0x15:
246 return "이미처리된카드 타카드 사용요망";
247 case 0x16:
248 return "LOGON오류 확인후 재시도 요망";
249 case 0x17:
250 return "CARD 통신 오류 재시도 요망";
251 case 0x18:
252 return "CRC 오류 재시도 요망";
253 case 0x19:
254 return "충전오류 보정 대상아님";
255 case 0x20:
256 return "KICC 단말기ID 오류 확인요망";
257 case 0x21:
258 return "KSCC 가맹점ID 오류 확인요망";
259 case 0x22:
260 return "KSCC 단말기ID 오류 확인요망";
261 case 0x23:
262 return "정의되지 않은 명령 재시도 요망";
263 case 0x24:
264 return "다른 카드 카드확인요망";
265 case 0x25:
266 return "HOST 시스템장애 확인요망";
267 case 0x26:
268 return "HOST 에러수신 확인요망";
269 case 0x27:
270 return "통신 오류 재시도 요망";
271 case 0x28:
272 return "취소거래 확인불가 확인후 재시도요망";
273 case 0x29:
274 return "동일카드 아님 재시도 요망";
275 case 0x30:
276 return "카드 탐색 타임아웃";
277 default:
278 {
279 std::ostringstream os;
280 os << "티머니 오류 [0xFF" << std::hex << std::setfill('0') << std::setw(2) << errorCode2 << "]";
281 return os.str();
282 }
283 }
284 }
285
286 std::ostringstream os;
287 os << "티머니 오류 [0x" << std::hex << std::setfill('0') << std::setw(2) << errorCode1
288 << std::setw(2) << errorCode2 << "]";
289 return os.str();
290 }

다음에 의해서 참조됨 : ParseTMoneyError().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ParseCashBee()

CashBeeResult ElectronicMoneyParser::ParseCashBee ( const std::string & data)
62 {
63 CashBeeResult result;
64
65 // 캐시비 전문은 최소 334 bytes (결과코드 제외 시)
66 // 실제로는 결과코드(1) + Command(2) + Length(2) + 데이터(334) 형태
67 // 하지만 R32 필드에는 순수 데이터만 올 수 있으므로 334 bytes 기준
68 if (data.size() < 334)
69 {
70 result.isValid = false;
71 return result;
72 }
73
74 size_t offset = 0;
75
76 // 일부 구현에서는 결과코드가 앞에 올 수 있음
77 // 유연하게 처리
78 if (data.size() >= 335)
79 {
80 result.resultCode = ExtractField(data, offset, 1);
81 result.command = ExtractField(data, offset, 2);
82 // Length는 HEX 2바이트지만 여기서는 문자열로 처리
83 result.length = ExtractField(data, offset, 2);
84 }
85
86 result.chargerNumber = ExtractField(data, offset, 10);
87 result.serialNumber = ExtractField(data, offset, 10);
88 result.samType = ExtractField(data, offset, 2);
89 result.samId = ExtractField(data, offset, 16);
90 result.cardNumber = ExtractField(data, offset, 20);
91 result.transactionSerial = ExtractField(data, offset, 10);
92 result.workType = ExtractField(data, offset, 3);
93 result.transactionDateTime = ExtractField(data, offset, 14);
94 result.balanceBefore = ExtractField(data, offset, 10);
95 result.requestAmount = ExtractField(data, offset, 10);
96 result.balanceAfter = ExtractField(data, offset, 10);
97 result.samBalanceBefore = ExtractField(data, offset, 10);
98 result.samBalanceAfter = ExtractField(data, offset, 10);
99 result.cardType = ExtractField(data, offset, 2);
100 result.paymentType = ExtractField(data, offset, 1);
101 result.membershipExpiry = ExtractField(data, offset, 4);
102 result.membershipCardNumber = ExtractField(data, offset, 16);
103 result.firstChargeFlag = ExtractField(data, offset, 1);
104 result.rfu1 = ExtractField(data, offset, 3);
105 result.feeRate = ExtractField(data, offset, 4);
106 result.feeAmount = ExtractField(data, offset, 10);
107 result.samTransactionSerial = ExtractField(data, offset, 10);
108 result.samAccumulatedCounter = ExtractField(data, offset, 10);
109 result.samAlgorithmId = ExtractField(data, offset, 2);
110 result.samKeySetVersion = ExtractField(data, offset, 2);
111 result.cardDeposit = ExtractField(data, offset, 10);
112 result.penaltyAmount = ExtractField(data, offset, 10);
113 result.approvalNumber = ExtractField(data, offset, 14);
114 result.issuerId = ExtractField(data, offset, 7);
115 result.sign = ExtractField(data, offset, 16);
116 result.ncsam = ExtractField(data, offset, 10);
117 result.nisam = ExtractField(data, offset, 5);
118 result.totsam = ExtractField(data, offset, 10);
119 result.idcenter = ExtractField(data, offset, 2);
120 result.mpsam = ExtractField(data, offset, 10);
121 result.maxIdcenter = ExtractField(data, offset, 10);
122 result.balIdcenter = ExtractField(data, offset, 10);
123 result.rfu2 = ExtractField(data, offset, 8);
124 result.resendFlag = ExtractField(data, offset, 1);
125 result.transactionResult = ExtractField(data, offset, 1);
126 result.errorCode = ExtractField(data, offset, 2);
127 result.filler = ExtractField(data, offset, 8);
128 result.issuerName = ExtractField(data, offset, 20);
129
130 result.isValid = true;
131 return result;
132 }
std::string ExtractField(const std::string &data, size_t &offset, size_t length)
Definition ElectronicMoneyParser.cpp:8
Definition ElectronicMoneyParser.h:43
std::string length
Definition ElectronicMoneyParser.h:46
bool isValid
Definition ElectronicMoneyParser.h:91
std::string filler
Definition ElectronicMoneyParser.h:88
std::string rfu2
Definition ElectronicMoneyParser.h:84
std::string rfu1
Definition ElectronicMoneyParser.h:65

다음을 참조함 : ElectronicMoneyParser::CashBeeResult::approvalNumber, ElectronicMoneyParser::CashBeeResult::balanceAfter, ElectronicMoneyParser::CashBeeResult::balanceBefore, ElectronicMoneyParser::CashBeeResult::balIdcenter, ElectronicMoneyParser::CashBeeResult::cardDeposit, ElectronicMoneyParser::CashBeeResult::cardNumber, ElectronicMoneyParser::CashBeeResult::cardType, ElectronicMoneyParser::CashBeeResult::chargerNumber, ElectronicMoneyParser::CashBeeResult::command, ElectronicMoneyParser::CashBeeResult::errorCode, ExtractField(), ElectronicMoneyParser::CashBeeResult::feeAmount, ElectronicMoneyParser::CashBeeResult::feeRate, ElectronicMoneyParser::CashBeeResult::filler, ElectronicMoneyParser::CashBeeResult::firstChargeFlag, ElectronicMoneyParser::CashBeeResult::idcenter, ElectronicMoneyParser::CashBeeResult::issuerId, ElectronicMoneyParser::CashBeeResult::issuerName, ElectronicMoneyParser::CashBeeResult::isValid, ElectronicMoneyParser::CashBeeResult::length, ElectronicMoneyParser::CashBeeResult::maxIdcenter, ElectronicMoneyParser::CashBeeResult::membershipCardNumber, ElectronicMoneyParser::CashBeeResult::membershipExpiry, ElectronicMoneyParser::CashBeeResult::mpsam, ElectronicMoneyParser::CashBeeResult::ncsam, ElectronicMoneyParser::CashBeeResult::nisam, ElectronicMoneyParser::CashBeeResult::paymentType, ElectronicMoneyParser::CashBeeResult::penaltyAmount, ElectronicMoneyParser::CashBeeResult::requestAmount, ElectronicMoneyParser::CashBeeResult::resendFlag, ElectronicMoneyParser::CashBeeResult::resultCode, ElectronicMoneyParser::CashBeeResult::rfu1, ElectronicMoneyParser::CashBeeResult::rfu2, ElectronicMoneyParser::CashBeeResult::samAccumulatedCounter, ElectronicMoneyParser::CashBeeResult::samAlgorithmId, ElectronicMoneyParser::CashBeeResult::samBalanceAfter, ElectronicMoneyParser::CashBeeResult::samBalanceBefore, ElectronicMoneyParser::CashBeeResult::samId, ElectronicMoneyParser::CashBeeResult::samKeySetVersion, ElectronicMoneyParser::CashBeeResult::samTransactionSerial, ElectronicMoneyParser::CashBeeResult::samType, ElectronicMoneyParser::CashBeeResult::serialNumber, ElectronicMoneyParser::CashBeeResult::sign, ElectronicMoneyParser::CashBeeResult::totsam, ElectronicMoneyParser::CashBeeResult::transactionDateTime, ElectronicMoneyParser::CashBeeResult::transactionResult, ElectronicMoneyParser::CashBeeResult::transactionSerial, ElectronicMoneyParser::CashBeeResult::workType.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ParseCashBeeError()

CashBeeError ElectronicMoneyParser::ParseCashBeeError ( const std::string & data)
154 {
155 CashBeeError error;
156
157 // 최소 1 + 4 + 64 = 69 bytes
158 if (data.size() < 69)
159 {
160 error.isValid = false;
161 return error;
162 }
163
164 size_t offset = 0;
165 std::string rcStr = ExtractField(data, offset, 1);
166 error.resultCode = static_cast<unsigned char>(rcStr[0]);
167 error.errorCode = ExtractField(data, offset, 4);
168 error.errorMessage = ExtractField(data, offset, 64);
169 error.isValid = true;
170
171 return error;
172 }
Definition ElectronicMoneyParser.h:106
std::string errorCode
Definition ElectronicMoneyParser.h:108
bool isValid
Definition ElectronicMoneyParser.h:110
int resultCode
Definition ElectronicMoneyParser.h:107
std::string errorMessage
Definition ElectronicMoneyParser.h:109

다음을 참조함 : ElectronicMoneyParser::CashBeeError::errorCode, ElectronicMoneyParser::CashBeeError::errorMessage, ExtractField(), ElectronicMoneyParser::CashBeeError::isValid, ElectronicMoneyParser::CashBeeError::resultCode.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ParseRailPlus()

RailPlusResult ElectronicMoneyParser::ParseRailPlus ( const std::string & data)
175 {
176 RailPlusResult result;
177 if (data.size() < 4)
178 {
179 result.isValid = false;
180 return result;
181 }
182
183 size_t offset = 0;
184 result.responseCode = ExtractField(data, offset, 4);
185
186 // 성공코드 "0000" 만 상세 필드 존재
187 if (result.responseCode == "0000")
188 {
189 if (data.size() < 4 + 16 + 1 + 10 + 10 + 14)
190 {
191 result.isValid = false;
192 return result;
193 }
194 result.cardId = ExtractField(data, offset, 16);
195 result.type0x30 = ExtractField(data, offset, 1);
196 result.balanceBefore = ExtractField(data, offset, 10);
197 result.balanceAfter = ExtractField(data, offset, 10);
198 result.approvalDateTime = ExtractField(data, offset, 14);
199 result.isSuccess = true;
200 result.isValid = true;
201 return result;
202 }
203
204 // 실패는 4바이트 응답코드만 온다
205 result.isSuccess = false;
206 result.isValid = true;
207 return result;
208 }
Definition ElectronicMoneyParser.h:115
std::string type0x30
Definition ElectronicMoneyParser.h:118
std::string cardId
Definition ElectronicMoneyParser.h:117
std::string responseCode
Definition ElectronicMoneyParser.h:116
std::string balanceAfter
Definition ElectronicMoneyParser.h:120
std::string approvalDateTime
Definition ElectronicMoneyParser.h:121
bool isValid
Definition ElectronicMoneyParser.h:123
bool isSuccess
Definition ElectronicMoneyParser.h:124
std::string balanceBefore
Definition ElectronicMoneyParser.h:119

다음을 참조함 : ElectronicMoneyParser::RailPlusResult::approvalDateTime, ElectronicMoneyParser::RailPlusResult::balanceAfter, ElectronicMoneyParser::RailPlusResult::balanceBefore, ElectronicMoneyParser::RailPlusResult::cardId, ExtractField(), ElectronicMoneyParser::RailPlusResult::isSuccess, ElectronicMoneyParser::RailPlusResult::isValid, ElectronicMoneyParser::RailPlusResult::responseCode, ElectronicMoneyParser::RailPlusResult::type0x30.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ParseTMoney()

TMoneyResult ElectronicMoneyParser::ParseTMoney ( const std::string & data)
18 {
19 TMoneyResult result;
20
21 // 티머니 전문은 최소 239 bytes
22 if (data.size() < 239)
23 {
24 result.isValid = false;
25 return result;
26 }
27
28 size_t offset = 0;
29
30 result.serialNumber = ExtractField(data, offset, 7);
31 result.transactionId = ExtractField(data, offset, 20);
32 result.merchantId = ExtractField(data, offset, 7);
33 result.terminalId = ExtractField(data, offset, 9);
34 result.posBusinessDate = ExtractField(data, offset, 8);
35 result.posReceiptNumber = ExtractField(data, offset, 5);
36 result.samId = ExtractField(data, offset, 16);
37 result.samTransactionSerial = ExtractField(data, offset, 10);
38 result.cardId = ExtractField(data, offset, 20);
39 result.cardTransactionSerial = ExtractField(data, offset, 10);
40 result.workType = ExtractField(data, offset, 3);
41 result.balanceBefore = ExtractField(data, offset, 10);
42 result.requestAmount = ExtractField(data, offset, 10);
43 result.balanceAfter = ExtractField(data, offset, 10);
44 result.transactionDateTime = ExtractField(data, offset, 14);
45 result.algorithmId = ExtractField(data, offset, 2);
46 result.keyVersion = ExtractField(data, offset, 2);
47 result.electronicMoneyId = ExtractField(data, offset, 2);
48 result.samTotalSerial = ExtractField(data, offset, 10);
49 result.samIndividualCount = ExtractField(data, offset, 5);
50 result.samAccumulatedTotal = ExtractField(data, offset, 10);
51 result.signValue = ExtractField(data, offset, 8);
52 result.cardTypeCode = ExtractField(data, offset, 2);
53 result.cardHolderTypeCode = ExtractField(data, offset, 2);
54 result.membershipTypeCode = ExtractField(data, offset, 1);
55 result.rfu = ExtractField(data, offset, 42);
56
57 result.isValid = true;
58 return result;
59 }
Definition ElectronicMoneyParser.h:10
std::string requestAmount
Definition ElectronicMoneyParser.h:23
std::string membershipTypeCode
Definition ElectronicMoneyParser.h:35
std::string cardTypeCode
Definition ElectronicMoneyParser.h:33
std::string keyVersion
Definition ElectronicMoneyParser.h:27
std::string algorithmId
Definition ElectronicMoneyParser.h:26
std::string signValue
Definition ElectronicMoneyParser.h:32
std::string merchantId
Definition ElectronicMoneyParser.h:13
std::string workType
Definition ElectronicMoneyParser.h:21
bool isValid
Definition ElectronicMoneyParser.h:38
std::string electronicMoneyId
Definition ElectronicMoneyParser.h:28
std::string posReceiptNumber
Definition ElectronicMoneyParser.h:16
std::string cardHolderTypeCode
Definition ElectronicMoneyParser.h:34
std::string samAccumulatedTotal
Definition ElectronicMoneyParser.h:31
std::string balanceAfter
Definition ElectronicMoneyParser.h:24
std::string cardTransactionSerial
Definition ElectronicMoneyParser.h:20
std::string samIndividualCount
Definition ElectronicMoneyParser.h:30
std::string samTransactionSerial
Definition ElectronicMoneyParser.h:18
std::string rfu
Definition ElectronicMoneyParser.h:36
std::string samTotalSerial
Definition ElectronicMoneyParser.h:29
std::string balanceBefore
Definition ElectronicMoneyParser.h:22
std::string transactionId
Definition ElectronicMoneyParser.h:12
std::string samId
Definition ElectronicMoneyParser.h:17
std::string cardId
Definition ElectronicMoneyParser.h:19
std::string terminalId
Definition ElectronicMoneyParser.h:14
std::string transactionDateTime
Definition ElectronicMoneyParser.h:25
std::string posBusinessDate
Definition ElectronicMoneyParser.h:15
std::string serialNumber
Definition ElectronicMoneyParser.h:11

다음을 참조함 : ElectronicMoneyParser::TMoneyResult::algorithmId, ElectronicMoneyParser::TMoneyResult::balanceAfter, ElectronicMoneyParser::TMoneyResult::balanceBefore, ElectronicMoneyParser::TMoneyResult::cardHolderTypeCode, ElectronicMoneyParser::TMoneyResult::cardId, ElectronicMoneyParser::TMoneyResult::cardTransactionSerial, ElectronicMoneyParser::TMoneyResult::cardTypeCode, ElectronicMoneyParser::TMoneyResult::electronicMoneyId, ExtractField(), ElectronicMoneyParser::TMoneyResult::isValid, ElectronicMoneyParser::TMoneyResult::keyVersion, ElectronicMoneyParser::TMoneyResult::membershipTypeCode, ElectronicMoneyParser::TMoneyResult::merchantId, ElectronicMoneyParser::TMoneyResult::posBusinessDate, ElectronicMoneyParser::TMoneyResult::posReceiptNumber, ElectronicMoneyParser::TMoneyResult::requestAmount, ElectronicMoneyParser::TMoneyResult::rfu, ElectronicMoneyParser::TMoneyResult::samAccumulatedTotal, ElectronicMoneyParser::TMoneyResult::samId, ElectronicMoneyParser::TMoneyResult::samIndividualCount, ElectronicMoneyParser::TMoneyResult::samTotalSerial, ElectronicMoneyParser::TMoneyResult::samTransactionSerial, ElectronicMoneyParser::TMoneyResult::serialNumber, ElectronicMoneyParser::TMoneyResult::signValue, ElectronicMoneyParser::TMoneyResult::terminalId, ElectronicMoneyParser::TMoneyResult::transactionDateTime, ElectronicMoneyParser::TMoneyResult::transactionId, ElectronicMoneyParser::TMoneyResult::workType.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ParseTMoneyError()

TMoneyError ElectronicMoneyParser::ParseTMoneyError ( const std::string & data)
135 {
136 TMoneyError error;
137
138 if (data.size() < 3)
139 {
140 error.isValid = false;
141 return error;
142 }
143
144 error.errorIdentity = static_cast<unsigned char>(data[0]);
145 error.errorCode1 = static_cast<unsigned char>(data[1]);
146 error.errorCode2 = static_cast<unsigned char>(data[2]);
148 error.isValid = true;
149
150 return error;
151 }
std::string GetTMoneyErrorMessage(int errorCode1, int errorCode2)
Definition ElectronicMoneyParser.cpp:210
Definition ElectronicMoneyParser.h:96
bool isValid
Definition ElectronicMoneyParser.h:101
int errorCode2
Definition ElectronicMoneyParser.h:99
int errorIdentity
Definition ElectronicMoneyParser.h:97
int errorCode1
Definition ElectronicMoneyParser.h:98
std::string errorMessage
Definition ElectronicMoneyParser.h:100

다음을 참조함 : ElectronicMoneyParser::TMoneyError::errorCode1, ElectronicMoneyParser::TMoneyError::errorCode2, ElectronicMoneyParser::TMoneyError::errorIdentity, ElectronicMoneyParser::TMoneyError::errorMessage, GetTMoneyErrorMessage(), ElectronicMoneyParser::TMoneyError::isValid.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RailPlusToKeyValue()

std::vector< std::pair< std::string, std::string > > ElectronicMoneyParser::RailPlusToKeyValue ( const RailPlusResult & result)
432 {
433 std::vector<std::pair<std::string, std::string>> kv;
434 kv.emplace_back("RP_RESPONSE_CODE", result.responseCode);
435 if (result.isSuccess)
436 {
437 kv.emplace_back("RP_CARD_ID", result.cardId);
438 kv.emplace_back("RP_TYPE", result.type0x30);
439 kv.emplace_back("RP_BALANCE_BEFORE", result.balanceBefore);
440 kv.emplace_back("RP_BALANCE_AFTER", result.balanceAfter);
441 kv.emplace_back("RP_APPROVAL_DATETIME", result.approvalDateTime);
442 }
443 else
444 {
445 kv.emplace_back("RP_ERROR_MSG", GetRailPlusErrorMessage(result.responseCode));
446 }
447 return kv;
448 }
std::string GetRailPlusErrorMessage(const std::string &responseCode)
Definition ElectronicMoneyParser.cpp:339

다음을 참조함 : ElectronicMoneyParser::RailPlusResult::approvalDateTime, ElectronicMoneyParser::RailPlusResult::balanceAfter, ElectronicMoneyParser::RailPlusResult::balanceBefore, ElectronicMoneyParser::RailPlusResult::cardId, GetRailPlusErrorMessage(), ElectronicMoneyParser::RailPlusResult::isSuccess, ElectronicMoneyParser::RailPlusResult::responseCode, ElectronicMoneyParser::RailPlusResult::type0x30.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ TMoneyToKeyValue()

std::vector< std::pair< std::string, std::string > > ElectronicMoneyParser::TMoneyToKeyValue ( const TMoneyResult & result)
349 {
350 std::vector<std::pair<std::string, std::string>> kv;
351
352 kv.emplace_back("TM_SERIAL", result.serialNumber);
353 kv.emplace_back("TM_TX_ID", result.transactionId);
354 kv.emplace_back("TM_MERCHANT_ID", result.merchantId);
355 kv.emplace_back("TM_TERMINAL_ID", result.terminalId);
356 kv.emplace_back("TM_POS_DATE", result.posBusinessDate);
357 kv.emplace_back("TM_POS_RECEIPT", result.posReceiptNumber);
358 kv.emplace_back("TM_SAM_ID", result.samId);
359 kv.emplace_back("TM_SAM_TX_SERIAL", result.samTransactionSerial);
360 kv.emplace_back("TM_CARD_ID", result.cardId);
361 kv.emplace_back("TM_CARD_TX_SERIAL", result.cardTransactionSerial);
362 kv.emplace_back("TM_WORK_TYPE", result.workType);
363 kv.emplace_back("TM_BALANCE_BEFORE", result.balanceBefore);
364 kv.emplace_back("TM_REQUEST_AMOUNT", result.requestAmount);
365 kv.emplace_back("TM_BALANCE_AFTER", result.balanceAfter);
366 kv.emplace_back("TM_TX_DATETIME", result.transactionDateTime);
367 kv.emplace_back("TM_ALGORITHM_ID", result.algorithmId);
368 kv.emplace_back("TM_KEY_VERSION", result.keyVersion);
369 kv.emplace_back("TM_EMONEY_ID", result.electronicMoneyId);
370 kv.emplace_back("TM_SAM_TOTAL_SERIAL", result.samTotalSerial);
371 kv.emplace_back("TM_SAM_INDIVIDUAL_CNT", result.samIndividualCount);
372 kv.emplace_back("TM_SAM_ACCUMULATED", result.samAccumulatedTotal);
373 kv.emplace_back("TM_SIGN", result.signValue);
374 kv.emplace_back("TM_CARD_TYPE", result.cardTypeCode);
375 kv.emplace_back("TM_HOLDER_TYPE", result.cardHolderTypeCode);
376 kv.emplace_back("TM_MEMBERSHIP_TYPE", result.membershipTypeCode);
377
378 return kv;
379 }

다음을 참조함 : ElectronicMoneyParser::TMoneyResult::algorithmId, ElectronicMoneyParser::TMoneyResult::balanceAfter, ElectronicMoneyParser::TMoneyResult::balanceBefore, ElectronicMoneyParser::TMoneyResult::cardHolderTypeCode, ElectronicMoneyParser::TMoneyResult::cardId, ElectronicMoneyParser::TMoneyResult::cardTransactionSerial, ElectronicMoneyParser::TMoneyResult::cardTypeCode, ElectronicMoneyParser::TMoneyResult::electronicMoneyId, ElectronicMoneyParser::TMoneyResult::keyVersion, ElectronicMoneyParser::TMoneyResult::membershipTypeCode, ElectronicMoneyParser::TMoneyResult::merchantId, ElectronicMoneyParser::TMoneyResult::posBusinessDate, ElectronicMoneyParser::TMoneyResult::posReceiptNumber, ElectronicMoneyParser::TMoneyResult::requestAmount, ElectronicMoneyParser::TMoneyResult::samAccumulatedTotal, ElectronicMoneyParser::TMoneyResult::samId, ElectronicMoneyParser::TMoneyResult::samIndividualCount, ElectronicMoneyParser::TMoneyResult::samTotalSerial, ElectronicMoneyParser::TMoneyResult::samTransactionSerial, ElectronicMoneyParser::TMoneyResult::serialNumber, ElectronicMoneyParser::TMoneyResult::signValue, ElectronicMoneyParser::TMoneyResult::terminalId, ElectronicMoneyParser::TMoneyResult::transactionDateTime, ElectronicMoneyParser::TMoneyResult::transactionId, ElectronicMoneyParser::TMoneyResult::workType.

다음에 의해서 참조됨 : ProtocolAdapter::ParseAndAppendElectronicMoney().

이 함수를 호출하는 함수들에 대한 그래프입니다.: