# Business Logic — JKKSeikyKeiHenkoCC.editInMsg_EKK0521D010() [374 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKSeikyKeiHenkoCC` |
| Layer | CC / Common Component (Controller/Common Component) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKSeikyKeiHenkoCC.editInMsg_EKK0521D010()

This method assembles the inbound message payload for the **Credit Billing Procedure (クレジットカード請求手続)** service call (CBS EKK0521D010). It operates as a **message-builder router** that transforms credit card data from multiple source maps (`childMap`, `dataMap`, and the initial first-authorization map `kksv040531sc`) into a single structured `CAANMsg` template ready to be sent to the backend service component.

The method handles the complete credit card profile required for billing: business code, card issuer (brand) code, card number, expiration date, cardholder name (Romaji and Kana), change classification (IDO_DIV), invalidation month, acquiring company code, card type, and issuer classification. It applies a **priority-based fallback strategy** — data from the payment authorization response (`kksv040531sc`) takes precedence; if absent, the method falls back to the credit billing mapping data (`childMap`) or the credit card approval map (`crecardMap`). For certain fields (expiration date), it also performs a **format transformation** (prepending "20" to a 2-digit YYMM year).

Its role in the larger system is the **inbound mapping layer** within a three-step CBS invocation pattern: `editInMsg` (build inbound) -> `scCall.run` (execute CBS) -> `editOutMsg` (parse outbound). This method specifically prepares the request side of that cycle, ensuring the CBS receives a fully populated and correctly formatted message object.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKK0521D010(params)"])
    START --> S1["S1: Call editInMsg(param) - common area setup"]
    S1 --> S2["S2: Create CAANMsg template EKK0521D010CBSMsg"]
    S2 --> S3["S3: Set templateID, func_code, operatorID, operateDate, operateDateTime"]
    S3 --> S4["S4: Extract workMap, kksv040531sc, crecardMap"]
    S4 --> S5["S5: Set FUNC_CODE from dataMap"]
    S5 --> C1{Is kksv040510_crecard_jigyo_cd empty?}
    C1 -->|Yes| S6["Set CRECARD_JIGYO_CD to null"]
    C1 -->|No| S7["Set CRECARD_JIGYO_CD from childMap"]
    S6 --> C2{Is pyCardBrand null?}
    S7 --> C2
    C2 -->|Yes| S8["Set CRECARD_COMP_CD from childMap kksv040510_crecard_comp_cd"]
    C2 -->|No| S9["Set CRECARD_COMP_CD = pyCardBrand"]
    S8 --> C3{Is pyMaskedCardNumber null?}
    S9 --> C3
    C3 -->|Yes| S10["Set CRECARD_NO from childMap kksv040510_crecard_no"]
    C3 -->|No| S11["Set CRECARD_NO = pyMaskedCardNumber"]
    S10 --> C4{Is pyCardValidTerm null?}
    S11 --> C4
    C4 -->|Yes| S12["Set CRECARD_YK_KIGEN from childMap kksv040510_crecard_yk_kigen"]
    C4 -->|No| S13["Set CRECARD_YK_KIGEN = 20 + pyCardValidTerm (YY to YYYY)"]
    S12 --> S14["Set CREDIT_KOKAN_CD from childMap"]
    S13 --> S14
    S14 --> S15["Set CRECARD_NM_ROMAJI from childMap"]
    S15 --> S16["Set CRECARD_NM_KANA from childMap"]
    S16 --> S17["Set IDO_DIV from childMap"]
    S17 --> S18["Set CRECA_MK_YM from childMap"]
    S18 --> S19["Set UPD_DTM_BF from childMap"]
    S19 --> C5{Is token not null?}
    C5 -->|Yes| S20["Set CRECARD_NO_AZKRI_ID = pyCustomerId"]
    C5 -->|No| S21["Set CRECARD_NO_AZKRI_ID from childMap kksv040510_crecard_no_azkri_id"]
    S20 --> C6{Is pyAcqId null?}
    S21 --> C6
    C6 -->|Yes| S22["Override pyAcqId from childMap kksv040510_shikosaki_comp_cd"]
    C6 -->|No| S23["Use pyAcqId from kksv040531sc"]
    S22 --> S24["Set SHIKOSAKI_COMP_CD = pyAcqId"]
    S23 --> S24
    S24 --> C7{Is pyDebitPrepaidType null?}
    C7 -->|Yes| S25["Get pyDebitPrepaidType from crecardMap"]
    C7 -->|No| S26["Use pyDebitPrepaidType from kksv040531sc"]
    S25 --> S27["Set CRECARD_SBT_CD = pyDebitPrepaidType"]
    S26 --> S27
    S27 --> C8{Is pyIssurClass null?}
    C8 -->|Yes| S28["Get pyIssurClass from crecardMap"]
    C8 -->|No| S29["Use pyIssurClass from kksv040531sc"]
    S28 --> S30["Set CRDT_ISSUER_DIV = pyIssurClass"]
    S29 --> S30
    S30 --> S31["Wrap template, put TEMPLATE_LIST_KEY, return paramMap"]
    S31 --> END(["Return paramMap"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The request parameter object carrying the operation context: control map data (operator ID, operation date/time), work mapping area, and the data payload. It serves as both input for extracting context values and output carrier for the built template list. |
| 2 | `dataMap` | `Map<String, Object>` | The request data map containing cross-screen shared data. Specifically carries the credit card approval response map (`EKK0521A010CBSMSG1LIST`) for fallback lookup of card type and issuer classification, and the function code key (`JCMConstants.FUNC_CODE_KEY`). |
| 3 | `childMap` | `HashMap<String, Object>` | The child work area map holding the raw credit card billing data (prefixed with `kksv040510_`). Contains the credit card business code, company code, card number, expiration date, cardholder names, change classification, card invalidation month, update timestamp, card number reservation ID, and acquiring company code. Also references the initial first-authorization map via `MAP_KEY_KKSV040531SC`. |

**External state / instance fields read:**
- None directly — this method is stateless with respect to instance fields. All data is extracted from parameter maps.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `JKKSeikyKeiHenkoCC.editInMsg` | - | - | Calls `editInMsg(param)` to perform common area initialization and return the base parameter map |
| U | `CAANMsg.set` | EKK0521D010CBS | - | Sets template fields (templateID, operatorID, operateDate, operateDatetime, func_code, crecard_jigyo_cd, crecard_comp_cd, crecard_no, crecard_yk_kigen, credit_kokan_cd, crecard_nm_romaji, crecard_nm_kana, ido_div, upd_dtm_bf, creca_mk_ym, crecard_no_azkri_id, shikosaki_comp_cd, crecard_sbt_cd, crdt_issuer_div) on the CAANMsg template |
| U | `CAANMsg.setNull` | EKK0521D010CBS | - | Sets fields to null when source data is empty (crecard_jigyo_cd, crecard_comp_cd, crecard_no, crecard_yk_kigen, crecard_no_azkri_id) |
| R | `CAANMsg.getString` (from crecardMap) | EKK0521A010CBS | - | Reads CRECARD_SBT_CD and CRDT_ISSUER_DIV from the credit card approval message map as fallback values |
| R | `JKKCommonUtil.isNull` | JKKCommonUtil | - | Utility null-check across multiple string values (pyCardBrand, pyMaskedCardNumber, pyCardValidTerm, pyAcqId, pyDebitPrepaidType, pyIssurClass) |
| R | `IRequestParameterReadWrite.getControlMapData` | - | - | Retrieves operator ID, operation date, and operation time from the control map |
| R | `IRequestParameterReadWrite.getMappingWorkArea` | - | - | Retrieves the work mapping area from param |
| R | `JCMConstants.TEMPLATE_LIST_KEY` | JCMConstants | - | Constant for the template list key used when placing the built CAANMsg[] into paramMap |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKSeikyKeiHenkoCC.execEKK0521D010` | `execEKK0521D010` -> `editInMsg_EKK0521D010` | `scCall.run [C] Credit Billing Procedure CBS EKK0521D010` |

**Note:** `execEKK0521D010` is the immediate caller which orchestrates the full three-step flow: this `editInMsg_EKK0521D010` (inbound mapping) -> `scCall.run(paramMap, handle)` (CBS execution) -> `editOutMsg_EKK0521D010` (outbound mapping) -> `jdgErrRslt(result, 0)` (result judgment). This method itself does not directly invoke any SC or DB operations — it is purely a message assembly method.

## 6. Per-Branch Detail Blocks

### Block 1 — COMMON INITIALIZATION (L3280)

> Sets up the base parameter map and creates the CAANMsg template with standard operation metadata.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `paramMap = editInMsg(param)` // Common area setup [-> Returns HashMap<String, Object>] |
| 2 | SET | `template = new CAANMsg(EKK0521D010CBSMsg.class.getName())` // Create message template |
| 3 | SET | `template.set(EKK0521D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521D010)` // [-> "EKK0521D010"] |
| 4 | SET | `template.set(EKK0521D010CBSMsg.FUNC_CODE, "1")` // Default func_code |
| 5 | SET | `operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID)` // Extract operator ID |
| 6 | SET | `operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE)` // Extract operation date |
| 7 | SET | `operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME)` // Extract operation datetime |
| 8 | EXEC | `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)` |
| 9 | EXEC | `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)` |
| 10 | EXEC | `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)` |
| 11 | SET | `workMap = param.getMappingWorkArea()` // Extract work mapping area |

### Block 2 — SOURCE DATA EXTRACTION (L3310-L3321)

> Extracts the initial first-authorization map, payment token, and credit card approval map from childMap/dataMap.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kksv040531sc = (HashMap)childMap.get(MAP_KEY_KKSV040531SC)` // Initial first-authorization response [-> key "KKSV040531SC"] |
| 2 | SET | `token = (String)kksv040531sc.get("token")` // Payment token |
| 3 | SET | `crecardMap = (CAANMsg)dataMap.get("EKK0521A010CBSMSG1LIST")` // Credit card approval response map |
| 4 | SET | `template.set(EKK0521D010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY))` // Override func_code from dataMap |

### Block 3 — CREDIT CARD BUSINESS CODE (L3323-L3332)

> Maps the credit card business code from childMap to the template. If empty, sets null.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("kksv040510_crecard_jigyo_cd"))` |
| 1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECARD_JIGYO_CD)` // Business code is empty -> null |
| 1.2 | ELSE | |
| 1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_JIGYO_CD, (String)childMap.get("kksv040510_crecard_jigyo_cd"))` // Set from childMap |

### Block 4 — CARD BRAND / ISSUER CODE (L3334-L3361)

> Determines the card issuer (brand) code with fallback from payment authorization. Uses `pyCardBrand` from the payment authorization response.

| # | Type | Code |
|---|------|------|
| 1 | SET | `pyCardBrand = (String)kksv040531sc.get(PY_CARD_BRAND)` // [-> key "py_card_brand"] |
| 2 | IF | `JKKCommonUtil.isNull(pyCardBrand)` // Card brand not found in auth response |
| 2.1 | IF | `"".equals(childMap.get("kksv040510_crecard_comp_cd"))` // Fallback: check childMap |
| 2.1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECARD_COMP_CD)` // Set null |
| 2.1.2 | ELSE | |
| 2.1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_COMP_CD, (String)childMap.get("kksv040510_crecard_comp_cd"))` |
| 2.2 | ELSE (pyCardBrand present) | |
| 2.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_COMP_CD, pyCardBrand)` // Use pyCardBrand directly |

### Block 5 — CARD NUMBER (L3363-L3398)

> Maps the masked card number from payment authorization. Falls back to raw card number from childMap if unavailable.

| # | Type | Code |
|---|------|------|
| 1 | SET | `pyMaskedCardNumber = (String)kksv040531sc.get(PY_MASKED_CARD_NUMBER)` // [-> key "py_masked_card_number"] |
| 2 | IF | `JKKCommonUtil.isNull(pyMaskedCardNumber)` // Masked card number not found in auth response |
| 2.1 | IF | `"".equals(childMap.get("kksv040510_crecard_no"))` |
| 2.1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECARD_NO)` // Set null |
| 2.1.2 | ELSE | |
| 2.1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_NO, (String)childMap.get("kksv040510_crecard_no"))` |
| 2.2 | ELSE (pyMaskedCardNumber present) | |
| 2.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_NO, pyMaskedCardNumber)` // Use masked card number |

### Block 6 — CARD EXPIRATION DATE (L3400-L3418)

> Maps the card expiration date. If present in auth response, performs year format transformation (YY -> YYYY by prepending "20").

| # | Type | Code |
|---|------|------|
| 1 | SET | `pyCardValidTerm = (String)kksv040531sc.get(PY_CARD_VALID_TERM)` // [-> key "py_card_valid_term"] |
| 2 | IF | `JKKCommonUtil.isNull(pyCardValidTerm)` // Valid term not in auth response |
| 2.1 | IF | `"".equals(childMap.get("kksv040510_crecard_yk_kigen"))` |
| 2.1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECARD_YK_KIGEN)` // Set null |
| 2.1.2 | ELSE | |
| 2.1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_YK_KIGEN, (String)childMap.get("kksv040510_crecard_yk_kigen"))` |
| 2.2 | ELSE (pyCardValidTerm present) | |
| 2.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_YK_KIGEN, "20" + pyCardValidTerm)` // YYMM -> 20YYMM format transformation |

### Block 7 — CREDIT EXCHANGE CODE (L3420-L3429)

> Maps the credit exchange code (credit settlement method code) from childMap.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("kksv040510_credit_kokan_cd"))` |
| 1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CREDIT_KOKAN_CD)` // Set null if empty |
| 1.2 | ELSE | |
| 1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CREDIT_KOKAN_CD, (String)childMap.get("kksv040510_credit_kokan_cd"))` |

### Block 8 — CARDHOLDER NAME (ROMAJI) (L3431-L3440)

> Maps the cardholder name in Romaji characters from childMap.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("kksv040510_crecard_nm_romaji"))` |
| 1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECARD_NM_ROMAJI)` // Set null if empty |
| 1.2 | ELSE | |
| 1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_NM_ROMAJI, (String)childMap.get("kksv040510_crecard_nm_romaji"))` |

### Block 9 — CARDHOLDER NAME (KANA) (L3442-L3451)

> Maps the cardholder name in Kana characters from childMap.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("kksv040510_crecard_nm_kana"))` |
| 1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECARD_NM_KANA)` // Set null if empty |
| 1.2 | ELSE | |
| 1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_NM_KANA, (String)childMap.get("kksv040510_crecard_nm_kana"))` |

### Block 10 — CHANGE CLASSIFICATION (L3453-L3462)

> Maps the change classification code (IDO_DIV) indicating whether this is a new registration, change, or cancellation.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("kksv040510_ido_div"))` |
| 1.1 | SET | `template.setNull(EKK0521D010CBSMsg.IDO_DIV)` // Set null if empty |
| 1.2 | ELSE | |
| 1.2.1 | SET | `template.set(EKK0521D010CBSMsg.IDO_DIV, (String)childMap.get("kksv040510_ido_div"))` |

### Block 11 — CARD INVALIDATION MONTH (L3464-L3473)

> Maps the credit card invalidation month (creca_mk_ym) from childMap.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("kksv040510_crecard_mk_ym"))` |
| 1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECA_MK_YM)` // Set null if empty |
| 1.2 | ELSE | |
| 1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECA_MK_YM, (String)childMap.get("kksv040510_crecard_mk_ym"))` |

### Block 12 — UPDATE TIMESTAMP (L3475-L3484)

> Maps the pre-update timestamp from childMap.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(childMap.get("kksv040510_upd_dtm_bf"))` |
| 1.1 | SET | `template.setNull(EKK0521D010CBSMsg.UPD_DTM_BF)` // Set null if empty |
| 1.2 | ELSE | |
| 1.2.1 | SET | `template.set(EKK0521D010CBSMsg.UPD_DTM_BF, (String)childMap.get("kksv040510_upd_dtm_bf"))` |

### Block 13 — CARD NUMBER RESERVATION ID (L3493-L3507)

> Maps the card number reservation ID (azkari_id). When a payment token is present, uses the customer ID from the auth response as the reservation ID. Otherwise falls back to childMap.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JKKCommonUtil.isNull(token)` // Token is present (first authorization) |
| 1.1 | SET | `pyCustomerId = (String)kksv040531sc.get(EKKA0010003CBSMsg.PY_CUSTOMER_ID)` // [-> key "py_customer_id"] |
| 1.2 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID, pyCustomerId)` // Use customer ID as reservation ID |
| 1.3 | ELSE (token is null) | |
| 1.3.1 | IF | `"".equals(childMap.get("kksv040510_crecard_no_azkri_id"))` |
| 1.3.1.1 | SET | `template.setNull(EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID)` // Set null |
| 1.3.1.2 | ELSE | |
| 1.3.1.2.1 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_NO_AZKRI_ID, (String)childMap.get("kksv040510_crecard_no_azkri_id"))` |

### Block 14 — ACQUIRING COMPANY CODE (L3519-L3535)

> Maps the acquiring company code. Prefers `pyAcqId` from the auth response; falls back to childMap if null.

| # | Type | Code |
|---|------|------|
| 1 | SET | `pyAcqId = (String)kksv040531sc.get(PY_ACQ_ID)` // [-> key "py_acq_id"] |
| 2 | IF | `JKKCommonUtil.isNull(pyAcqId)` // Acquiring ID not in auth response |
| 2.1 | SET | `pyAcqId = (String)childMap.get(PREFIX_KKSV040510 + EKK0521D010CBSMsg.SHIKOSAKI_COMP_CD)` // [-> "kksv040510_shikosaki_comp_cd"] |
| 3 | SET | `template.set(EKK0521D010CBSMsg.SHIKOSAKI_COMP_CD, pyAcqId)` |

### Block 15 — CARD TYPE / SUBTYPE CODE (L3538-L3567)

> Maps the card type (debit/prepaid). Tries auth response first, then falls back to the credit card approval map (`crecardMap`).

| # | Type | Code |
|---|------|------|
| 1 | SET | `pyDebitPrepaidType = (String)kksv040531sc.get(PY_DEBIT_PREPAID_TYPE)` // [-> key "py_debit_prepaid_type"] |
| 2 | IF | `JKKCommonUtil.isNull(pyDebitPrepaidType)` // Card type not in auth response |
| 2.1 | IF | `null != crecardMap` // Check if approval map is available |
| 2.1.1 | SET | `pyDebitPrepaidType = crecardMap.getString(EKK0521A010CBSMsg1List.CRECARD_SBT_CD)` // [-> field "crecard_sbt_cd"] |
| 3 | SET | `template.set(EKK0521D010CBSMsg.CRECARD_SBT_CD, pyDebitPrepaidType)` |

### Block 16 — ISSUER CLASSIFICATION (L3569-L3598)

> Maps the issuer classification. Tries auth response first, then falls back to the credit card approval map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `pyIssurClass = (String)kksv040531sc.get(PY_ISSUR_CLASS)` // [-> key "py_issur_class"] |
| 2 | IF | `JKKCommonUtil.isNull(pyIssurClass)` // Issuer class not in auth response |
| 2.1 | IF | `null != crecardMap` // Check if approval map is available |
| 2.1.1 | SET | `pyIssurClass = crecardMap.getString(EKK0521A010CBSMsg1List.CRDT_ISSUER_DIV)` // [-> field "crdt_issuer_div"] |
| 3 | SET | `template.set(EKK0521D010CBSMsg.CRDT_ISSUER_DIV, pyIssurClass)` |

### Block 17 — RETURN (L3600-L3604)

> Wraps the template in an array and returns the parameter map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = new CAANMsg[1]` |
| 2 | SET | `templates[0] = template` |
| 3 | SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)` // Place template array |
| 4 | RETURN | `return paramMap` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `crecard_jigyo_cd` | Field | Credit card business code — classifies the type of credit card business operation |
| `crecard_comp_cd` | Field | Credit card company code — identifies the card issuer/brand (e.g., Visa, Mastercard) |
| `crecard_no` | Field | Credit card number — the masked or raw card number |
| `crecard_yk_kigen` | Field | Credit card valid period (expiration date) — stored as YYMM format, transformed to 20YYMM |
| `credit_kokan_cd` | Field | Credit exchange code — the credit settlement method code |
| `crecard_nm_romaji` | Field | Credit cardholder name (Romaji) — cardholder name in Roman alphabet |
| `crecard_nm_kana` | Field | Credit cardholder name (Kana) — cardholder name in Japanese Kana characters |
| `ido_div` | Field | Change classification — indicates the type of change (new registration, modification, cancellation) |
| `upd_dtm_bf` | Field | Update datetime before (pre-update timestamp) — timestamp of data before this update operation |
| `creca_mk_ym` | Field | Credit card invalidation month — month when the card becomes invalid |
| `crecard_no_azkri_id` | Field | Credit card number reservation ID — an ID used for reserving the card number |
| `shikosaki_comp_cd` | Field | Acquiring company code — the payment acquiring/processing company code |
| `crecard_sbt_cd` | Field | Credit card subtype code — classifies card as debit, prepaid, or credit |
| `crdt_issuer_div` | Field | Credit issuer classification — categorizes the card issuing entity |
| `py_card_brand` | Field | Payment card brand — card brand code from the payment authorization response (EKKA0010003/0010004) |
| `py_masked_card_number` | Field | Payment masked card number — tokenized/masked card number from the payment authorization |
| `py_card_valid_term` | Field | Payment card valid term — expiration date from payment authorization |
| `py_debit_prepaid_type` | Field | Payment debit/prepaid type — result of debit/prepaid classification from payment authorization |
| `py_issur_class` | Field | Payment issuer class — issuer classification from payment authorization |
| `py_acq_id` | Field | Payment acquiring ID — acquiring company ID from payment authorization |
| `py_customer_id` | Field | Payment customer ID — customer identifier from payment authorization (EKKA0010003) |
| `py_card_no_azkri_id` | Field | Payment card number reservation ID |
| MAP_KEY_KKSV040531SC | Constant | Map key "KKSV040531SC" — references the initial first-authorization response data map |
| PREFIX_KKSV040510 | Constant | Prefix "kksv040510_" — prefix for childMap keys containing raw credit card billing data |
| EKK0521D010 | Constant | Template ID for the credit billing procedure CBS message |
| FUNC_CODE | Constant | Function code — operational code indicating the type of processing (set to "1") |
| CAANMsg | Type | Communication message object — the Fujitsu application message format used to construct CBS request/response payloads |
| CBS | Acronym | Component Business Service — backend service component for business operations |
| SC | Acronym | Service Component — the backend service layer invoked via ServiceComponentRequestInvoker |
| First Authorization (初期オーソリ依頼) | Business term | Initial payment authorization request — the first step in credit card payment processing that returns card details, token, and classification |
| 請求手続 (Seikyuu Shukuzu) | Business term | Billing procedure — the end-of-cycle process of generating billing requests for credit card transactions |
| 請求方法番号 (Seikyuu Houhou Bangou) | Field | Billing method number — identifies the billing method for credit card payments |
| 無効フラグ (Mukou Flag) | Field | Invalidation flag — indicates whether the card record has been invalidated |
| CreCard Map | Data structure | Credit card approval response map (`EKK0521A010CBSMSG1LIST`) — fallback data source for card type and issuer classification |
| Token | Field | Payment token — a secure reference identifier from the payment authorization, used to associate the customer ID as the card number reservation ID |
