Routing Transit Node
The routing transit node must be the first of the payment validation rule nodes in the workflow connections.
Several fields that other payment validation rule nodes use are initialized. Specifically, ibmNprValidationError is initialized to false, ibmNprRecordId is initialized to -1 (X'FF'), and any of the ibmNprValid set of flags (for example, ibmNprValidAmount and ibmNprValidAuxOnUs) not received from the client is initialized to 1 (valid).
Also, if the endorse node is included in the workflow, the default endorse string (ibmIntDefaultEndorseData) is seeded into the endorse field (ibmSpxPrgEndDet). The endorse node overwrites it with the appropriate setting.
The routing transit values as set in Table 1 (refer to ibmIntRTLow and ibmIntRTHigh) are required to be in 4–4 format for the United States documents and in 5–3 format for Canadian documents. The routing transit node converts 9-digit routing transit numbers into 4–4 before performing the lookup.
The routing transit table also requires the record be tagged with the appropriate routing transit format. These will be USD - US RTs and CAD - Canadian RTs. These are the only two currently supported. This setting is determined automatically by the routing transit node as part of its normal function.
The routing transit node also automatically sets the ibmCurrencyCode field with this same value and returns it to the client if the client did not send it. If the client does specify it, the value must be USD or CAD.
Blank routing transit values are not allowed.
The routing transit node is also responsible for initializing the valid flags. All ibmNprValid flags that are received from the client are used as-is. Any that are not received are automatically defaulted to 1 (valid). If the client (for example, a sorter) sends a valid routing transit flag of 0, the table lookup is not performed and the node returns failure.
When the routing transit table record is successfully located and the ibmNprRecordId value has changed, a lookup in the record ID validation table is performed. The fields are validated according to the record ID validation node (see Record ID Validation).
Table Record Layout
| Field Type | Field Name | Data Type | Length | Notes |
|---|---|---|---|---|
| Key | ibmIntRTFormat | char | 3 | USD, CAD |
| Start Key | ibmIntRTLow | char | 9 | nnnn-nnnn, nnnnn-nnn |
| End Key | ibmIntRTHigh | char | 9 | nnnn-nnnn, nnnnn-nnn |
| Payload | ibmNprRecordType | byte | 2 | |
| ibmNprControlDoc | char | 1 | ||
| ibmNprRecordId | byte | 2 | Used as one of the keys in the record ID validation table | |
| ibmIntPartnerId | char | 10 | Pocket map table key (one of six) | |
| ibmNprOnUsFlag | char | 1 | ||
| ibmNprCredit | char | 1 | ||
| ibmIntEndorseId | byte | 2 | Endorse table key | |
| ibmIntAmountPrefix | byte | 2 | Amount table key | |
| ibmIntPcPrefix | byte | 2 | Process control table key | |
| ibmIntAccountPrefix | byte | 2 | Account table key | |
| ibmIntField4Prefix | byte | 2 | Field 4 table key | |
| ibmIntEpcPrefix | byte | 2 | Extended process code table key | |
| ibmIntAuxPrefix | byte | 2 | AuxOnUs table key |
Fields that can Change
| Field Name | Data Type | Length | Notes |
|---|---|---|---|
| ibmNprCurrencyCode | char | 3 | USD, CAD |
| ibmNprRecordId | byte | 2 | |
| ibmNprValidationError | byte | 1 | |
| ibmNprValidAmount | byte | 1 | |
| ibmNprValidPc | byte | 1 | |
| ibmNprValidAccount | byte | 1 | |
| ibmNprValidField4 | byte | 1 | |
| ibmNprValidRT | byte | 1 | |
| ibmNprValidExtProcCode | byte | 1 | |
| ibmNprValidAuxOnUs | byte | 1 |
Results
| If | Condition | Results | Notes |
|---|---|---|---|
| ibmNprValidRT | False (0) | FAILURE | Without doing the lookup |
| ibmNprRT | Not set / blank | FAILURE | Without doing the lookup |
| Lookup | Fails | FAILURE | |
| Converted RT | Is not 9 characters in length | FAILURE | Without doing the lookup |
| Lookup | Succeeds | SUCCESS | |
| Validation | Succeeds/Fails | SUCCESS |
Initialize
Not applicable
Process
- Sets ibmNprValidationError to false, sets ibmNprRecordId to -1, sets ibmNprCurrencyCode to "", and sets all ibmNprValid fields not received from the client to 1 (valid). Also sets ibmSpxPrgEndDat with the default, if enabled.
- Checks the value of the ibmNprValidRT field. If it is false, sets the node's response to failure and goes to step 15.
- If the converted routing transit does not have nine (9) characters, sets the node's response to failure and goes to step 14
- Checks that the ibmNprRT field is in the decision request and is not blank. If it is present, continues to step 5. If it is not present, sets the node's response to failure and goes to step 15.
- Checks that the ibmNprRT field in the decision request has a length of 8 characters. If it is 8 characters, inserts a dash to create nnnn-nnnn.
- Checks that the ibmNprRT field in the decision request has a length of 9 characters. If it is 9 characters, checks for the existence of a dash. If there is no dash, inserts a dash and drops the check digit to create nnnn-nnnn.
- If nnnn-nnnn, sets ibmNprCurrencyCode to USD. If nnnnn-nnn, sets ibmNprCurrencyCode to CAD.
- Sets ibmIntRTLow and ibmIntRTHigh to the modified version of ibmNprRT. At this point, its format is either nnnn-nnnn or nnnnn-nnn. If the routing transit is converted in step 5 or step 6, only the temporary value used to do the lookup is modified, not the original ibmNprRT.
- Saves a copy of ibmNprRecordId.
- If the user exit is present, calls its preProcess routine.
- Performs the lookup in the routing transit table.
- If the record is not found, sets the node's response to failure and goes to step 15.
- If the record is found, reads the payload fields into DecisionRequest and set the node's response to success.
- Checks to see if the ibmNprRecordId was modified from the table lookup. If it was, it continues with the validate the payment field operation (see Validating the Payment Fields Operation).
- If the user exit is present, calls its buildClientResponse routine.
- Returns to the workflow controller.