Check21 Class
Properties Methods Events Config Settings Errors
The Check21 class is used to construct a file containing scanned images of paper checks, and optionally upload it to an FTPS server.
Syntax
Check21
Remarks
An X9.37 file created by this class will contain the following records:
- File Header Record (1)
- Cash Letter Header Record (1)
- Bundle Header Record (1)
- Check detail record structure (0 to CheckCount), which contains:
- Check Detail Record (1)
- Check Detail Addenda A (1)
- Front Image View Detail Record (0 or 1)
- Front Image View Data Record (0 or 1)
- Back Image View Detail Record (0 or 1)
- Back Image View Data Record (0 or 1)
- Bundle Control Record (1)
- Cash Letter Control Record (1)
- File Control Record (1)
This class makes creating the above file very easy.
First set the Origin fields with information about the institution that is originating this file, and
the destination it is to be deposited to. Also set the ReturnRoutingNumber.
Check21.OriginName = "First Bank of Thor"
Check21.OriginRoutingNumber = "111012822"
Check21.OriginContactName = "Jake Olsen"
Check21.OriginContactPhone = "800-555-5555"
Check21.DestinationRoutingNumber = "051000321"
Check21.DestinationName = "First Bank of Loki"
Check21.ReturnRoutingNumber = "111012822"
This file must be differentiated from other files, so now set the
CashLetterId and CycleNumber properties, as well as the FileName.
(Alternatively FileName may be left empty, and the class will write
the file to memory and store it in the FileData property).
Check21.CashLetterId = "123456"
Check21.CycleNumber = "01"
Check21.FileName = "sample_output.dat"
This file is going to contain scanned images of paper checks, so RecordType should be
set to rtChecksAndImages and make sure the DocumentationType is set to a compatible
value ("G" through "J" are valid when RecordType is rtChecksAndImages).
Check21.RecordType = rtChecksAndImages
Check21.DocumentationType = "G"
This sample file is to contain only one check, but a real file may contain any number of checks.
To add a check,
set the CheckCount, and then fill the Check array properties
with information
read off the check's MICR line, as well as the Payee's name and the amount of the check.
Check21.CheckCount = 1
Check21.CheckMICROnUs(0) = "1234567890101" ' Account number on the check
Check21.CheckMICRRoutingNumber(0) = "902113700"
Check21.CheckAmount(0) = "50000" ' $500.00
Check21.CheckSequenceNumber(0) = "407"
Check21.CheckPayeeName = "Bruce Banner"
Then set information about the Bank of First Deposit. This may be identical to the Origin.
The BOFDConversionIndicator should also be set to "2" if this bank converted the
original check into the image being included.
Check21.CheckBOFDRoutingNumber(0) = "111012822"
Check21.CheckBOFDAccountNumber(0) = "181818181818181818"
Check21.CheckBOFDBranch(0) = "Asgard"
Check21.CheckBOFDConversionIndicator(0) = "2"
Finally, you must include images of the front and back of the check, and indicate the format and compression
used to create those images. You may use FrontImageFileName and BackImageFileName fields to
point to image files on disk, or you may set the binary data directly in FrontImageData and
BackImageData. You also need to set a unique identifier that can be used to retrieve the images
at a later date.
Check21.CheckImageFormat(0) = ifTIFF ' default
Check21.CheckImageCompression(0) = icJPEG ' default
Check21.CheckCanRecreateImages(0) = True ' default
Check21.CheckFrontImageFileName(0) = "front.jpg"
Check21.CheckFrontImageReferenceKey(0) = "72234215front"
Check21.CheckBackImageFileName(0) = "back.jpg"
Check21.CheckBackImageReferenceKey(0) = "72234215back"
Now call BuildFile to build the file and save it to the FileName you indicated earlier.
If you have an FTPS server (TLS/SSL-secured FTP) to upload the files to, you may set the FTP fields
and call BuildAndUploadFile method instead.
Property List
The following is the full list of the properties of the class with short descriptions. Click on the links for further details.
BusinessDate | The year, month, and day that designates the business date at the Bank of First Deposit. |
CashLetterId | A code used to uniquely identify the cash letter inside the file. |
Checks | Collection of checks to be written to the file. |
CollectionType | A code that indicates the type of cash letter and bundle contained in the file. |
CycleNumber | Denotes the cycle under which the file is created. |
DestinationName | The short name that identifies the institution that receives the file. |
DestinationRoutingNumber | This number identifies the institution that receives the file. |
DocumentationType | A code that indicates the type of documentation that supports all Checks records in the file. |
FileData | Contains the binary contents of the X9.37 file created by the BuildFile method. |
FileName | Path and name of the file to be written to disk by the BuildFile method. |
FTP | Information about the FTP or FTPS server you're uploading to. |
Origin | Contains information about the originator of this file and the checks contained within. |
RecordType | A code that indicates the type of records contained in this file. |
ReturnRoutingNumber | A routing number indicating the location to which returns and return notifications should be sent. |
SettlementDate | The date that the institution that created the file expects settlement. |
SSLAcceptServerCert | Instructs the class to unconditionally accept the server certificate that matches the supplied certificate. |
SSLCert | The certificate to be used during Secure Sockets Layer (SSL) negotiation. |
SSLProvider | The Secure Sockets Layer/Transport Layer Security (SSL/TLS) implementation to use. |
SSLServerCert | The server certificate for the last established connection. |
SSLStartMode | This property determines how the class starts the Secure Sockets Layer (SSL) negotiation. |
Method List
The following is the full list of the methods of the class with short descriptions. Click on the links for further details.
BuildAndUploadFile | Builds an X9.37 file and uploads it to an FTP server. |
BuildFile | Builds an X9.37 file. |
Config | Sets or retrieves a configuration setting. |
DoEvents | This method processes events from the internal message queue. |
Interrupt | This method interrupts the current method. |
Reset | Reset the internal state of the class and all properties to their default values. |
Event List
The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.
Error | Information about non-fatal errors encountered during file construction. |
SSLServerAuthentication | Fired after the server presents its certificate to the client. |
SSLStatus | Fired when secure connection progress messages are available. |
Status | Traces the commands sent to the server, and the respective replies. |
Config Settings
The following is a list of config settings for the class with short descriptions. Click on the links for further details.
AllowAllBOFDIndicators | Allows for any value to be specified within the BOFDIndicator field. |
ArchiveType | Indicates the type of archive that supports each Check in this file. |
ASCIIOutput | Indicates whether to output ASCII or EBCDIC. |
BOFDIndicator | Indicates whether the origin is also the bank of first deposit. |
BundleCount | Total number of bundles in the file. |
BundleCreationDate | The date the bundle is created. |
BundleId | Unique identifier for the bundle inside the Cash Letter. |
BundleIndex | Index of the current bundle. |
CashLetterCreationDate | The date the cash letter is created. |
CashLetterCreationTime | The time the cash letter is created. |
CheckIsCredit[i] | Indicates whether a Check is to be sent as a Credit (61) Record. |
CountryCode | A code that identifies the country in which the payor bank is located. |
DetailAddendumRecordNumber | The Check Detail Addendum A Record Number. |
FedWorkType | Federal Reserve work type. |
FileCreationDate | The date the file is created. |
FileCreationTime | The time the file is created. |
FileId | A code used to uniquely identify this file. |
FileUserField | A User Field. |
IncludeAddendA | Whether to include Detail Addendum A Record. |
Overwrite | Indicates whether local files can be overwritten. |
OverwriteRemoteFile | Indicates whether remote files can be overwritten on the FTP server. |
ResendIndicator | Indicates whether the file being built has been previously transmitted in its entirety. |
ReservedField | A field reserved for future use. |
ReturnAcceptance | A code that indicates whether the institution that creates this file will or will not support electronic return processing. |
TestFile | Indicates whether the file being built is a test file or a production file. |
BuildInfo | Information about the product's build. |
CodePage | The system code page used for Unicode to Multibyte translations. |
LicenseInfo | Information about the current license. |
MaskSensitiveData | Whether sensitive data is masked in log messages. |
ProcessIdleEvents | Whether the class uses its internal event loop to process events when the main thread is idle. |
SelectWaitMillis | The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process. |
UseInternalSecurityAPI | Whether or not to use the system security libraries or an internal implementation. |
BusinessDate Property (Check21 Class)
The year, month, and day that designates the business date at the Bank of First Deposit.
Syntax
ANSI (Cross Platform) char* GetBusinessDate();
int SetBusinessDate(const char* lpszBusinessDate); Unicode (Windows) LPWSTR GetBusinessDate();
INT SetBusinessDate(LPCWSTR lpszBusinessDate);
char* inpay_check21_getbusinessdate(void* lpObj);
int inpay_check21_setbusinessdate(void* lpObj, const char* lpszBusinessDate);
QString GetBusinessDate();
int SetBusinessDate(QString qsBusinessDate);
Default Value
""
Remarks
This property is 8 characters in length and in the format "YYYYMMDD". If no value is supplied in this property the current system date will be used.
This field is part of the Cash Letter Header record (type 10), Bundle Header record (type 20), Check Detail Addendum A record (type 26), and Image View Data record (type 52).
Data Type
String
CashLetterId Property (Check21 Class)
A code used to uniquely identify the cash letter inside the file.
Syntax
ANSI (Cross Platform) char* GetCashLetterId();
int SetCashLetterId(const char* lpszCashLetterId); Unicode (Windows) LPWSTR GetCashLetterId();
INT SetCashLetterId(LPCWSTR lpszCashLetterId);
char* inpay_check21_getcashletterid(void* lpObj);
int inpay_check21_setcashletterid(void* lpObj, const char* lpszCashLetterId);
QString GetCashLetterId();
int SetCashLetterId(QString qsCashLetterId);
Default Value
""
Remarks
This code identifies the cash letter, and is assigned by the institution that creates the file. This property is part of the Cash Letter Header record (type 10), and is 8 characters in length. The same value will also be used in the Bundle Header Record (type 20) for the "Bundle Id".
Data Type
String
Checks Property (Check21 Class)
Collection of checks to be written to the file.
Syntax
InPayList<InPayCheckDetail>* GetChecks(); int SetChecks(InPayList<InPayCheckDetail>* val);
int inpay_check21_getcheckcount(void* lpObj);
int inpay_check21_setcheckcount(void* lpObj, int iCheckCount);
char* inpay_check21_getcheckamount(void* lpObj, int checkindex);
int inpay_check21_setcheckamount(void* lpObj, int checkindex, const char* lpszCheckAmount);
char* inpay_check21_getcheckbackimagecreationdate(void* lpObj, int checkindex);
int inpay_check21_setcheckbackimagecreationdate(void* lpObj, int checkindex, const char* lpszCheckBackImageCreationDate);
int inpay_check21_getcheckbackimagedata(void* lpObj, int checkindex, char** lpCheckBackImageData, int* lenCheckBackImageData);
int inpay_check21_setcheckbackimagedata(void* lpObj, int checkindex, const char* lpCheckBackImageData, int lenCheckBackImageData);
char* inpay_check21_getcheckbackimagefilename(void* lpObj, int checkindex);
int inpay_check21_setcheckbackimagefilename(void* lpObj, int checkindex, const char* lpszCheckBackImageFileName);
char* inpay_check21_getcheckbackimagereferencekey(void* lpObj, int checkindex);
int inpay_check21_setcheckbackimagereferencekey(void* lpObj, int checkindex, const char* lpszCheckBackImageReferenceKey);
char* inpay_check21_getcheckbofdaccountnumber(void* lpObj, int checkindex);
int inpay_check21_setcheckbofdaccountnumber(void* lpObj, int checkindex, const char* lpszCheckBOFDAccountNumber);
char* inpay_check21_getcheckbofdbranch(void* lpObj, int checkindex);
int inpay_check21_setcheckbofdbranch(void* lpObj, int checkindex, const char* lpszCheckBOFDBranch);
char* inpay_check21_getcheckbofdconversionindicator(void* lpObj, int checkindex);
int inpay_check21_setcheckbofdconversionindicator(void* lpObj, int checkindex, const char* lpszCheckBOFDConversionIndicator);
char* inpay_check21_getcheckbofdroutingnumber(void* lpObj, int checkindex);
int inpay_check21_setcheckbofdroutingnumber(void* lpObj, int checkindex, const char* lpszCheckBOFDRoutingNumber);
int inpay_check21_getcheckbofdtruncator(void* lpObj, int checkindex);
int inpay_check21_setcheckbofdtruncator(void* lpObj, int checkindex, int bCheckBOFDTruncator);
int inpay_check21_getcheckcanrecreateimages(void* lpObj, int checkindex);
int inpay_check21_setcheckcanrecreateimages(void* lpObj, int checkindex, int bCheckCanRecreateImages);
char* inpay_check21_getcheckfrontimagecreationdate(void* lpObj, int checkindex);
int inpay_check21_setcheckfrontimagecreationdate(void* lpObj, int checkindex, const char* lpszCheckFrontImageCreationDate);
int inpay_check21_getcheckfrontimagedata(void* lpObj, int checkindex, char** lpCheckFrontImageData, int* lenCheckFrontImageData);
int inpay_check21_setcheckfrontimagedata(void* lpObj, int checkindex, const char* lpCheckFrontImageData, int lenCheckFrontImageData);
char* inpay_check21_getcheckfrontimagefilename(void* lpObj, int checkindex);
int inpay_check21_setcheckfrontimagefilename(void* lpObj, int checkindex, const char* lpszCheckFrontImageFileName);
char* inpay_check21_getcheckfrontimagereferencekey(void* lpObj, int checkindex);
int inpay_check21_setcheckfrontimagereferencekey(void* lpObj, int checkindex, const char* lpszCheckFrontImageReferenceKey);
int inpay_check21_getcheckimagecompression(void* lpObj, int checkindex);
int inpay_check21_setcheckimagecompression(void* lpObj, int checkindex, int iCheckImageCompression);
char* inpay_check21_getcheckimagecreatorroutingnumber(void* lpObj, int checkindex);
int inpay_check21_setcheckimagecreatorroutingnumber(void* lpObj, int checkindex, const char* lpszCheckImageCreatorRoutingNumber);
int inpay_check21_getcheckimageformat(void* lpObj, int checkindex);
int inpay_check21_setcheckimageformat(void* lpObj, int checkindex, int iCheckImageFormat);
char* inpay_check21_getcheckmicrauxonus(void* lpObj, int checkindex);
int inpay_check21_setcheckmicrauxonus(void* lpObj, int checkindex, const char* lpszCheckMICRAuxOnUs);
char* inpay_check21_getcheckmicronus(void* lpObj, int checkindex);
int inpay_check21_setcheckmicronus(void* lpObj, int checkindex, const char* lpszCheckMICROnUs);
char* inpay_check21_getcheckmicrprocessingcode(void* lpObj, int checkindex);
int inpay_check21_setcheckmicrprocessingcode(void* lpObj, int checkindex, const char* lpszCheckMICRProcessingCode);
char* inpay_check21_getcheckmicrroutingnumber(void* lpObj, int checkindex);
int inpay_check21_setcheckmicrroutingnumber(void* lpObj, int checkindex, const char* lpszCheckMICRRoutingNumber);
char* inpay_check21_getcheckpayeename(void* lpObj, int checkindex);
int inpay_check21_setcheckpayeename(void* lpObj, int checkindex, const char* lpszCheckPayeeName);
char* inpay_check21_getchecksequencenumber(void* lpObj, int checkindex);
int inpay_check21_setchecksequencenumber(void* lpObj, int checkindex, const char* lpszCheckSequenceNumber);
int GetCheckCount();
int SetCheckCount(int iCheckCount); QString GetCheckAmount(int iCheckIndex);
int SetCheckAmount(int iCheckIndex, QString qsCheckAmount); QString GetCheckBackImageCreationDate(int iCheckIndex);
int SetCheckBackImageCreationDate(int iCheckIndex, QString qsCheckBackImageCreationDate); QByteArray GetCheckBackImageData(int iCheckIndex);
int SetCheckBackImageData(int iCheckIndex, QByteArray qbaCheckBackImageData); QString GetCheckBackImageFileName(int iCheckIndex);
int SetCheckBackImageFileName(int iCheckIndex, QString qsCheckBackImageFileName); QString GetCheckBackImageReferenceKey(int iCheckIndex);
int SetCheckBackImageReferenceKey(int iCheckIndex, QString qsCheckBackImageReferenceKey); QString GetCheckBOFDAccountNumber(int iCheckIndex);
int SetCheckBOFDAccountNumber(int iCheckIndex, QString qsCheckBOFDAccountNumber); QString GetCheckBOFDBranch(int iCheckIndex);
int SetCheckBOFDBranch(int iCheckIndex, QString qsCheckBOFDBranch); QString GetCheckBOFDConversionIndicator(int iCheckIndex);
int SetCheckBOFDConversionIndicator(int iCheckIndex, QString qsCheckBOFDConversionIndicator); QString GetCheckBOFDRoutingNumber(int iCheckIndex);
int SetCheckBOFDRoutingNumber(int iCheckIndex, QString qsCheckBOFDRoutingNumber); bool GetCheckBOFDTruncator(int iCheckIndex);
int SetCheckBOFDTruncator(int iCheckIndex, bool bCheckBOFDTruncator); bool GetCheckCanRecreateImages(int iCheckIndex);
int SetCheckCanRecreateImages(int iCheckIndex, bool bCheckCanRecreateImages); QString GetCheckFrontImageCreationDate(int iCheckIndex);
int SetCheckFrontImageCreationDate(int iCheckIndex, QString qsCheckFrontImageCreationDate); QByteArray GetCheckFrontImageData(int iCheckIndex);
int SetCheckFrontImageData(int iCheckIndex, QByteArray qbaCheckFrontImageData); QString GetCheckFrontImageFileName(int iCheckIndex);
int SetCheckFrontImageFileName(int iCheckIndex, QString qsCheckFrontImageFileName); QString GetCheckFrontImageReferenceKey(int iCheckIndex);
int SetCheckFrontImageReferenceKey(int iCheckIndex, QString qsCheckFrontImageReferenceKey); int GetCheckImageCompression(int iCheckIndex);
int SetCheckImageCompression(int iCheckIndex, int iCheckImageCompression); QString GetCheckImageCreatorRoutingNumber(int iCheckIndex);
int SetCheckImageCreatorRoutingNumber(int iCheckIndex, QString qsCheckImageCreatorRoutingNumber); int GetCheckImageFormat(int iCheckIndex);
int SetCheckImageFormat(int iCheckIndex, int iCheckImageFormat); QString GetCheckMICRAuxOnUs(int iCheckIndex);
int SetCheckMICRAuxOnUs(int iCheckIndex, QString qsCheckMICRAuxOnUs); QString GetCheckMICROnUs(int iCheckIndex);
int SetCheckMICROnUs(int iCheckIndex, QString qsCheckMICROnUs); QString GetCheckMICRProcessingCode(int iCheckIndex);
int SetCheckMICRProcessingCode(int iCheckIndex, QString qsCheckMICRProcessingCode); QString GetCheckMICRRoutingNumber(int iCheckIndex);
int SetCheckMICRRoutingNumber(int iCheckIndex, QString qsCheckMICRRoutingNumber); QString GetCheckPayeeName(int iCheckIndex);
int SetCheckPayeeName(int iCheckIndex, QString qsCheckPayeeName); QString GetCheckSequenceNumber(int iCheckIndex);
int SetCheckSequenceNumber(int iCheckIndex, QString qsCheckSequenceNumber);
Remarks
This property contains a collection of CheckDetail objects. Each of those objects must include MICR information read off of a physical check, as well as the Bank of First Deposit's routing number and the name of the payee. Each check object may also optionally contain a scan of the front and back of the paper check.
This property is not available at design time.
Data Type
CollectionType Property (Check21 Class)
A code that indicates the type of cash letter and bundle contained in the file.
Syntax
ANSI (Cross Platform) int GetCollectionType();
int SetCollectionType(int iCollectionType); Unicode (Windows) INT GetCollectionType();
INT SetCollectionType(INT iCollectionType);
Possible Values
CT_FORWARD_INFO(1),
CT_FOWARD_PRESENTMENT(2),
CT_FORWARD_SAME_DAY(3),
CT_NO_DETAIL(20)
int inpay_check21_getcollectiontype(void* lpObj);
int inpay_check21_setcollectiontype(void* lpObj, int iCollectionType);
int GetCollectionType();
int SetCollectionType(int iCollectionType);
Default Value
1
Remarks
This property is part of the Cash Letter Header record (type 10), and is exactly 2 characters in length. Valid values for this property are listed below.
ctForwardInfo (1) | Preliminary Forward Information - Used when information may change and the information is treated as not final. |
ctForwardPresentment (2) | Forward Presentment - For the collection and settlement of checks (demand instruments). Data is treated as final. |
ctForwardSameDay (3) | Forward Presentment, Same-Day Settlement - For the collection and settlement of checks (demand instruments) presented under the Federal Reserve's same day settlement amendments to Regulation CC. Data is treated as final. |
ctNoDetail (20) | No Detail - There are no checks contained within the file. |
Data Type
Integer
CycleNumber Property (Check21 Class)
Denotes the cycle under which the file is created.
Syntax
ANSI (Cross Platform) char* GetCycleNumber();
int SetCycleNumber(const char* lpszCycleNumber); Unicode (Windows) LPWSTR GetCycleNumber();
INT SetCycleNumber(LPCWSTR lpszCycleNumber);
char* inpay_check21_getcyclenumber(void* lpObj);
int inpay_check21_setcyclenumber(void* lpObj, const char* lpszCycleNumber);
QString GetCycleNumber();
int SetCycleNumber(QString qsCycleNumber);
Default Value
""
Remarks
This code is assigned by the institution that creates the file. This property is part of the Bundle Header record (type 20) and Image View Data record (type 52).
Data Type
String
DestinationName Property (Check21 Class)
The short name that identifies the institution that receives the file.
Syntax
ANSI (Cross Platform) char* GetDestinationName();
int SetDestinationName(const char* lpszDestinationName); Unicode (Windows) LPWSTR GetDestinationName();
INT SetDestinationName(LPCWSTR lpszDestinationName);
char* inpay_check21_getdestinationname(void* lpObj);
int inpay_check21_setdestinationname(void* lpObj, const char* lpszDestinationName);
QString GetDestinationName();
int SetDestinationName(QString qsDestinationName);
Default Value
""
Remarks
This field is part of the File Header record (type 01), and is exactly 9 characters long, including the check digit.
Data Type
String
DestinationRoutingNumber Property (Check21 Class)
This number identifies the institution that receives the file.
Syntax
ANSI (Cross Platform) char* GetDestinationRoutingNumber();
int SetDestinationRoutingNumber(const char* lpszDestinationRoutingNumber); Unicode (Windows) LPWSTR GetDestinationRoutingNumber();
INT SetDestinationRoutingNumber(LPCWSTR lpszDestinationRoutingNumber);
char* inpay_check21_getdestinationroutingnumber(void* lpObj);
int inpay_check21_setdestinationroutingnumber(void* lpObj, const char* lpszDestinationRoutingNumber);
QString GetDestinationRoutingNumber();
int SetDestinationRoutingNumber(QString qsDestinationRoutingNumber);
Default Value
""
Remarks
This field is part of the File Header record (type 01), Cash Letter Header Record (type 10), and Bundle Header Record (type 20), and is exactly 9 characters long including the check digit.
Data Type
String
DocumentationType Property (Check21 Class)
A code that indicates the type of documentation that supports all Checks records in the file.
Syntax
ANSI (Cross Platform) char* GetDocumentationType();
int SetDocumentationType(const char* lpszDocumentationType); Unicode (Windows) LPWSTR GetDocumentationType();
INT SetDocumentationType(LPCWSTR lpszDocumentationType);
char* inpay_check21_getdocumentationtype(void* lpObj);
int inpay_check21_setdocumentationtype(void* lpObj, const char* lpszDocumentationType);
QString GetDocumentationType();
int SetDocumentationType(QString qsDocumentationType);
Default Value
""
Remarks
This field is part of the Cash Letter record (type 10) and Check detail record (type 25), and may be any of the values listed below:
A | No image provided, paper provided separately. |
B | No image provided, paper provided separately, image upon request. |
C | Image provided separately, no paper provided. |
D | Image provided separately, no paper provided, image upon request. |
E | Image and paper provided separately. |
F | Image and paper provided separately, image upon request. |
G | Image included, no paper provided. |
H | Image included, no paper provided, image upon request. |
I | Image included, paper provided separately. |
J | Image included, paper provided separately, image upon request. |
K | No image provided, no paper provided. |
L | No image provided, no paper provided, image upon request. |
M | No image provided, Electronic Check provided separately. |
Data Type
String
FileData Property (Check21 Class)
Contains the binary contents of the X9.37 file created by the BuildFile method.
Syntax
ANSI (Cross Platform) int GetFileData(char* &lpFileData, int &lenFileData); Unicode (Windows) INT GetFileData(LPSTR &lpFileData, INT &lenFileData);
int inpay_check21_getfiledata(void* lpObj, char** lpFileData, int* lenFileData);
QByteArray GetFileData();
Default Value
""
Remarks
If FileName is specified BuildFile will save to disk, and FileData will remain empty. However if FileName is blank, the file will be created in-memory and stored in this property.
This property is read-only.
Data Type
Binary String
FileName Property (Check21 Class)
Path and name of the file to be written to disk by the BuildFile method.
Syntax
ANSI (Cross Platform) char* GetFileName();
int SetFileName(const char* lpszFileName); Unicode (Windows) LPWSTR GetFileName();
INT SetFileName(LPCWSTR lpszFileName);
char* inpay_check21_getfilename(void* lpObj);
int inpay_check21_setfilename(void* lpObj, const char* lpszFileName);
QString GetFileName();
int SetFileName(QString qsFileName);
Default Value
""
Remarks
If FileName is blank, the BuildFile method will create the file in-memory and store it in the FileData property.
When using the BuildAndUploadFile method, FileName is used slightly different. If a path and filename is specified, the file will be written to disk and uploaded to the RemoteHost. If FileName contains only a path (and ends in "/" or "\"), that directory will be used to store temporary files before uploading to the RemoteHost. If FileName is blank the system temp directory will be used. All temporary files are deleted after a successful upload.
Data Type
String
FTP Property (Check21 Class)
Information about the FTP or FTPS server you're uploading to.
Syntax
InPayFTPSettings* GetFTP(); int SetFTP(InPayFTPSettings* val);
char* inpay_check21_getftppassword(void* lpObj);
int inpay_check21_setftppassword(void* lpObj, const char* lpszFTPPassword);
char* inpay_check21_getftpremotefile(void* lpObj);
int inpay_check21_setftpremotefile(void* lpObj, const char* lpszFTPRemoteFile);
char* inpay_check21_getftpremotehost(void* lpObj);
int inpay_check21_setftpremotehost(void* lpObj, const char* lpszFTPRemoteHost);
char* inpay_check21_getftpremotepath(void* lpObj);
int inpay_check21_setftpremotepath(void* lpObj, const char* lpszFTPRemotePath);
int inpay_check21_getftpremoteport(void* lpObj);
int inpay_check21_setftpremoteport(void* lpObj, int iFTPRemotePort);
int inpay_check21_getftptimeout(void* lpObj);
int inpay_check21_setftptimeout(void* lpObj, int iFTPTimeout);
char* inpay_check21_getftpuser(void* lpObj);
int inpay_check21_setftpuser(void* lpObj, const char* lpszFTPUser);
QString GetFTPPassword();
int SetFTPPassword(QString qsFTPPassword); QString GetFTPRemoteFile();
int SetFTPRemoteFile(QString qsFTPRemoteFile); QString GetFTPRemoteHost();
int SetFTPRemoteHost(QString qsFTPRemoteHost); QString GetFTPRemotePath();
int SetFTPRemotePath(QString qsFTPRemotePath); int GetFTPRemotePort();
int SetFTPRemotePort(int iFTPRemotePort); int GetFTPTimeout();
int SetFTPTimeout(int iFTPTimeout); QString GetFTPUser();
int SetFTPUser(QString qsFTPUser);
Remarks
These ftp fields are only necessary when using the BuildAndUploadFile method to upload an X9.37 file to an FTP or FTPS server. The RemoteHost and RemotePath fields specify the server you wish to connect to. RemotePath contains the path at which you wish to save the file, and RemoteFile indicates the filename that will be saved on the FTP server after upload. (It does not have to match the FileName property). User and Password contain your logon credentials for the FTP server.
This property is not available at design time.
Data Type
Origin Property (Check21 Class)
Contains information about the originator of this file and the checks contained within.
Syntax
InPayOrigin* GetOrigin(); int SetOrigin(InPayOrigin* val);
char* inpay_check21_getorigincontactname(void* lpObj);
int inpay_check21_setorigincontactname(void* lpObj, const char* lpszOriginContactName);
char* inpay_check21_getorigincontactphone(void* lpObj);
int inpay_check21_setorigincontactphone(void* lpObj, const char* lpszOriginContactPhone);
char* inpay_check21_getoriginname(void* lpObj);
int inpay_check21_setoriginname(void* lpObj, const char* lpszOriginName);
char* inpay_check21_getoriginroutingnumber(void* lpObj);
int inpay_check21_setoriginroutingnumber(void* lpObj, const char* lpszOriginRoutingNumber);
QString GetOriginContactName();
int SetOriginContactName(QString qsOriginContactName); QString GetOriginContactPhone();
int SetOriginContactPhone(QString qsOriginContactPhone); QString GetOriginName();
int SetOriginName(QString qsOriginName); QString GetOriginRoutingNumber();
int SetOriginRoutingNumber(QString qsOriginRoutingNumber);
Remarks
These fields are used in many places in the different records that make up an X9.37 file.
This property is not available at design time.
Data Type
RecordType Property (Check21 Class)
A code that indicates the type of records contained in this file.
Syntax
ANSI (Cross Platform) int GetRecordType();
int SetRecordType(int iRecordType); Unicode (Windows) INT GetRecordType();
INT SetRecordType(INT iRecordType);
Possible Values
RT_NO_CHECKS(0),
RT_CHECKS_NO_IMAGES(1),
RT_CHECKS_AND_IMAGES(2),
RT_IMAGES_FOR_CASH_LETTER(3)
int inpay_check21_getrecordtype(void* lpObj);
int inpay_check21_setrecordtype(void* lpObj, int iRecordType);
int GetRecordType();
int SetRecordType(int iRecordType);
Default Value
0
Remarks
If an image is associated with any (even one) CheckDetail detail record, this property must be set to rtChecksAndImages or rtImagesForCashLetter. This property is part of the Cash Letter record (type 10) and may be set to any of the values listed below:
rtNoChecks | No electronic check records or image records. (only applicable for an empty cash letter with no Checks.) |
rtChecksNoImages | File contains electronic check records with no images. |
rtChecksAndImages | File contains electronic check records with images. |
rtImagesForCashLetter | File contains electronic check records and images that correspond to a previously sent file (ie, a file sent with a RecordType of rtChecksNoImages). The Checks in this file that contain posting data shall not be changed from the previously sent file with CollectionType 1 or 2. |
Data Type
Integer
ReturnRoutingNumber Property (Check21 Class)
A routing number indicating the location to which returns and return notifications should be sent.
Syntax
ANSI (Cross Platform) char* GetReturnRoutingNumber();
int SetReturnRoutingNumber(const char* lpszReturnRoutingNumber); Unicode (Windows) LPWSTR GetReturnRoutingNumber();
INT SetReturnRoutingNumber(LPCWSTR lpszReturnRoutingNumber);
char* inpay_check21_getreturnroutingnumber(void* lpObj);
int inpay_check21_setreturnroutingnumber(void* lpObj, const char* lpszReturnRoutingNumber);
QString GetReturnRoutingNumber();
int SetReturnRoutingNumber(QString qsReturnRoutingNumber);
Default Value
""
Remarks
This routing number is specified by the institution that creates the file, and specifies the location to which returns, return notifications, and preliminary return notifications should be sent. This property is part of the Bundle Header record (type 20), and is exactly 9 characters long including the check digit.
Data Type
String
SettlementDate Property (Check21 Class)
The date that the institution that created the file expects settlement.
Syntax
ANSI (Cross Platform) char* GetSettlementDate();
int SetSettlementDate(const char* lpszSettlementDate); Unicode (Windows) LPWSTR GetSettlementDate();
INT SetSettlementDate(LPCWSTR lpszSettlementDate);
char* inpay_check21_getsettlementdate(void* lpObj);
int inpay_check21_setsettlementdate(void* lpObj, const char* lpszSettlementDate);
QString GetSettlementDate();
int SetSettlementDate(QString qsSettlementDate);
Default Value
""
Remarks
This field is part of the Cash Letter Control record (type 90), and is in the format YYYYMMDD.
Data Type
String
SSLAcceptServerCert Property (Check21 Class)
Instructs the class to unconditionally accept the server certificate that matches the supplied certificate.
Syntax
InPayCertificate* GetSSLAcceptServerCert(); int SetSSLAcceptServerCert(InPayCertificate* val);
char* inpay_check21_getsslacceptservercerteffectivedate(void* lpObj);
char* inpay_check21_getsslacceptservercertexpirationdate(void* lpObj);
char* inpay_check21_getsslacceptservercertextendedkeyusage(void* lpObj);
char* inpay_check21_getsslacceptservercertfingerprint(void* lpObj);
char* inpay_check21_getsslacceptservercertfingerprintsha1(void* lpObj);
char* inpay_check21_getsslacceptservercertfingerprintsha256(void* lpObj);
char* inpay_check21_getsslacceptservercertissuer(void* lpObj);
char* inpay_check21_getsslacceptservercertprivatekey(void* lpObj);
int inpay_check21_getsslacceptservercertprivatekeyavailable(void* lpObj);
char* inpay_check21_getsslacceptservercertprivatekeycontainer(void* lpObj);
char* inpay_check21_getsslacceptservercertpublickey(void* lpObj);
char* inpay_check21_getsslacceptservercertpublickeyalgorithm(void* lpObj);
int inpay_check21_getsslacceptservercertpublickeylength(void* lpObj);
char* inpay_check21_getsslacceptservercertserialnumber(void* lpObj);
char* inpay_check21_getsslacceptservercertsignaturealgorithm(void* lpObj);
int inpay_check21_getsslacceptservercertstore(void* lpObj, char** lpSSLAcceptServerCertStore, int* lenSSLAcceptServerCertStore);
int inpay_check21_setsslacceptservercertstore(void* lpObj, const char* lpSSLAcceptServerCertStore, int lenSSLAcceptServerCertStore);
char* inpay_check21_getsslacceptservercertstorepassword(void* lpObj);
int inpay_check21_setsslacceptservercertstorepassword(void* lpObj, const char* lpszSSLAcceptServerCertStorePassword);
int inpay_check21_getsslacceptservercertstoretype(void* lpObj);
int inpay_check21_setsslacceptservercertstoretype(void* lpObj, int iSSLAcceptServerCertStoreType);
char* inpay_check21_getsslacceptservercertsubjectaltnames(void* lpObj);
char* inpay_check21_getsslacceptservercertthumbprintmd5(void* lpObj);
char* inpay_check21_getsslacceptservercertthumbprintsha1(void* lpObj);
char* inpay_check21_getsslacceptservercertthumbprintsha256(void* lpObj);
char* inpay_check21_getsslacceptservercertusage(void* lpObj);
int inpay_check21_getsslacceptservercertusageflags(void* lpObj);
char* inpay_check21_getsslacceptservercertversion(void* lpObj);
char* inpay_check21_getsslacceptservercertsubject(void* lpObj);
int inpay_check21_setsslacceptservercertsubject(void* lpObj, const char* lpszSSLAcceptServerCertSubject);
int inpay_check21_getsslacceptservercertencoded(void* lpObj, char** lpSSLAcceptServerCertEncoded, int* lenSSLAcceptServerCertEncoded);
int inpay_check21_setsslacceptservercertencoded(void* lpObj, const char* lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);
QString GetSSLAcceptServerCertEffectiveDate(); QString GetSSLAcceptServerCertExpirationDate(); QString GetSSLAcceptServerCertExtendedKeyUsage(); QString GetSSLAcceptServerCertFingerprint(); QString GetSSLAcceptServerCertFingerprintSHA1(); QString GetSSLAcceptServerCertFingerprintSHA256(); QString GetSSLAcceptServerCertIssuer(); QString GetSSLAcceptServerCertPrivateKey(); bool GetSSLAcceptServerCertPrivateKeyAvailable(); QString GetSSLAcceptServerCertPrivateKeyContainer(); QString GetSSLAcceptServerCertPublicKey(); QString GetSSLAcceptServerCertPublicKeyAlgorithm(); int GetSSLAcceptServerCertPublicKeyLength(); QString GetSSLAcceptServerCertSerialNumber(); QString GetSSLAcceptServerCertSignatureAlgorithm(); QByteArray GetSSLAcceptServerCertStore();
int SetSSLAcceptServerCertStore(QByteArray qbaSSLAcceptServerCertStore); QString GetSSLAcceptServerCertStorePassword();
int SetSSLAcceptServerCertStorePassword(QString qsSSLAcceptServerCertStorePassword); int GetSSLAcceptServerCertStoreType();
int SetSSLAcceptServerCertStoreType(int iSSLAcceptServerCertStoreType); QString GetSSLAcceptServerCertSubjectAltNames(); QString GetSSLAcceptServerCertThumbprintMD5(); QString GetSSLAcceptServerCertThumbprintSHA1(); QString GetSSLAcceptServerCertThumbprintSHA256(); QString GetSSLAcceptServerCertUsage(); int GetSSLAcceptServerCertUsageFlags(); QString GetSSLAcceptServerCertVersion(); QString GetSSLAcceptServerCertSubject();
int SetSSLAcceptServerCertSubject(QString qsSSLAcceptServerCertSubject); QByteArray GetSSLAcceptServerCertEncoded();
int SetSSLAcceptServerCertEncoded(QByteArray qbaSSLAcceptServerCertEncoded);
Remarks
If it finds any issues with the certificate presented by the server, the class will normally terminate the connection with an error.
You may override this behavior by supplying a value for SSLAcceptServerCert. If the certificate supplied in SSLAcceptServerCert is the same as the certificate presented by the server, then the server certificate is accepted unconditionally, and the connection will continue normally.
Note: This functionality is provided only for cases in which you otherwise know that you are communicating with the right server. If used improperly, this property may create a security breach. Use it at your own risk.
Data Type
SSLCert Property (Check21 Class)
The certificate to be used during Secure Sockets Layer (SSL) negotiation.
Syntax
InPayCertificate* GetSSLCert(); int SetSSLCert(InPayCertificate* val);
char* inpay_check21_getsslcerteffectivedate(void* lpObj);
char* inpay_check21_getsslcertexpirationdate(void* lpObj);
char* inpay_check21_getsslcertextendedkeyusage(void* lpObj);
char* inpay_check21_getsslcertfingerprint(void* lpObj);
char* inpay_check21_getsslcertfingerprintsha1(void* lpObj);
char* inpay_check21_getsslcertfingerprintsha256(void* lpObj);
char* inpay_check21_getsslcertissuer(void* lpObj);
char* inpay_check21_getsslcertprivatekey(void* lpObj);
int inpay_check21_getsslcertprivatekeyavailable(void* lpObj);
char* inpay_check21_getsslcertprivatekeycontainer(void* lpObj);
char* inpay_check21_getsslcertpublickey(void* lpObj);
char* inpay_check21_getsslcertpublickeyalgorithm(void* lpObj);
int inpay_check21_getsslcertpublickeylength(void* lpObj);
char* inpay_check21_getsslcertserialnumber(void* lpObj);
char* inpay_check21_getsslcertsignaturealgorithm(void* lpObj);
int inpay_check21_getsslcertstore(void* lpObj, char** lpSSLCertStore, int* lenSSLCertStore);
int inpay_check21_setsslcertstore(void* lpObj, const char* lpSSLCertStore, int lenSSLCertStore);
char* inpay_check21_getsslcertstorepassword(void* lpObj);
int inpay_check21_setsslcertstorepassword(void* lpObj, const char* lpszSSLCertStorePassword);
int inpay_check21_getsslcertstoretype(void* lpObj);
int inpay_check21_setsslcertstoretype(void* lpObj, int iSSLCertStoreType);
char* inpay_check21_getsslcertsubjectaltnames(void* lpObj);
char* inpay_check21_getsslcertthumbprintmd5(void* lpObj);
char* inpay_check21_getsslcertthumbprintsha1(void* lpObj);
char* inpay_check21_getsslcertthumbprintsha256(void* lpObj);
char* inpay_check21_getsslcertusage(void* lpObj);
int inpay_check21_getsslcertusageflags(void* lpObj);
char* inpay_check21_getsslcertversion(void* lpObj);
char* inpay_check21_getsslcertsubject(void* lpObj);
int inpay_check21_setsslcertsubject(void* lpObj, const char* lpszSSLCertSubject);
int inpay_check21_getsslcertencoded(void* lpObj, char** lpSSLCertEncoded, int* lenSSLCertEncoded);
int inpay_check21_setsslcertencoded(void* lpObj, const char* lpSSLCertEncoded, int lenSSLCertEncoded);
QString GetSSLCertEffectiveDate(); QString GetSSLCertExpirationDate(); QString GetSSLCertExtendedKeyUsage(); QString GetSSLCertFingerprint(); QString GetSSLCertFingerprintSHA1(); QString GetSSLCertFingerprintSHA256(); QString GetSSLCertIssuer(); QString GetSSLCertPrivateKey(); bool GetSSLCertPrivateKeyAvailable(); QString GetSSLCertPrivateKeyContainer(); QString GetSSLCertPublicKey(); QString GetSSLCertPublicKeyAlgorithm(); int GetSSLCertPublicKeyLength(); QString GetSSLCertSerialNumber(); QString GetSSLCertSignatureAlgorithm(); QByteArray GetSSLCertStore();
int SetSSLCertStore(QByteArray qbaSSLCertStore); QString GetSSLCertStorePassword();
int SetSSLCertStorePassword(QString qsSSLCertStorePassword); int GetSSLCertStoreType();
int SetSSLCertStoreType(int iSSLCertStoreType); QString GetSSLCertSubjectAltNames(); QString GetSSLCertThumbprintMD5(); QString GetSSLCertThumbprintSHA1(); QString GetSSLCertThumbprintSHA256(); QString GetSSLCertUsage(); int GetSSLCertUsageFlags(); QString GetSSLCertVersion(); QString GetSSLCertSubject();
int SetSSLCertSubject(QString qsSSLCertSubject); QByteArray GetSSLCertEncoded();
int SetSSLCertEncoded(QByteArray qbaSSLCertEncoded);
Remarks
This property includes the digital certificate that the class will use during SSL negotiation. Set this property to a valid certificate before starting SSL negotiation. To set a certificate, you may set the Encoded field to the encoded certificate. To select a certificate, use the store and subject fields.
Data Type
SSLProvider Property (Check21 Class)
The Secure Sockets Layer/Transport Layer Security (SSL/TLS) implementation to use.
Syntax
ANSI (Cross Platform) int GetSSLProvider();
int SetSSLProvider(int iSSLProvider); Unicode (Windows) INT GetSSLProvider();
INT SetSSLProvider(INT iSSLProvider);
Possible Values
SSLP_AUTOMATIC(0),
SSLP_PLATFORM(1),
SSLP_INTERNAL(2)
int inpay_check21_getsslprovider(void* lpObj);
int inpay_check21_setsslprovider(void* lpObj, int iSSLProvider);
int GetSSLProvider();
int SetSSLProvider(int iSSLProvider);
Default Value
0
Remarks
This property specifies the SSL/TLS implementation to use. In most cases the default value of 0 (Automatic) is recommended and should not be changed. When set to 0 (Automatic), the class will select whether to use the platform implementation or the internal implementation depending on the operating system as well as the TLS version being used.
Possible values are as follows:
0 (sslpAutomatic - default) | Automatically selects the appropriate implementation. |
1 (sslpPlatform) | Uses the platform/system implementation. |
2 (sslpInternal) | Uses the internal implementation. |
In most cases using the default value (Automatic) is recommended. The class will select a provider depending on the current platform.
When Automatic is selected, on Windows, the class will use the platform implementation. On Linux/macOS, the class will use the internal implementation. When TLS 1.3 is enabled via SSLEnabledProtocols, the internal implementation is used on all platforms.
Data Type
Integer
SSLServerCert Property (Check21 Class)
The server certificate for the last established connection.
Syntax
InPayCertificate* GetSSLServerCert();
char* inpay_check21_getsslservercerteffectivedate(void* lpObj);
char* inpay_check21_getsslservercertexpirationdate(void* lpObj);
char* inpay_check21_getsslservercertextendedkeyusage(void* lpObj);
char* inpay_check21_getsslservercertfingerprint(void* lpObj);
char* inpay_check21_getsslservercertfingerprintsha1(void* lpObj);
char* inpay_check21_getsslservercertfingerprintsha256(void* lpObj);
char* inpay_check21_getsslservercertissuer(void* lpObj);
char* inpay_check21_getsslservercertprivatekey(void* lpObj);
int inpay_check21_getsslservercertprivatekeyavailable(void* lpObj);
char* inpay_check21_getsslservercertprivatekeycontainer(void* lpObj);
char* inpay_check21_getsslservercertpublickey(void* lpObj);
char* inpay_check21_getsslservercertpublickeyalgorithm(void* lpObj);
int inpay_check21_getsslservercertpublickeylength(void* lpObj);
char* inpay_check21_getsslservercertserialnumber(void* lpObj);
char* inpay_check21_getsslservercertsignaturealgorithm(void* lpObj);
int inpay_check21_getsslservercertstore(void* lpObj, char** lpSSLServerCertStore, int* lenSSLServerCertStore);
char* inpay_check21_getsslservercertstorepassword(void* lpObj);
int inpay_check21_getsslservercertstoretype(void* lpObj);
char* inpay_check21_getsslservercertsubjectaltnames(void* lpObj);
char* inpay_check21_getsslservercertthumbprintmd5(void* lpObj);
char* inpay_check21_getsslservercertthumbprintsha1(void* lpObj);
char* inpay_check21_getsslservercertthumbprintsha256(void* lpObj);
char* inpay_check21_getsslservercertusage(void* lpObj);
int inpay_check21_getsslservercertusageflags(void* lpObj);
char* inpay_check21_getsslservercertversion(void* lpObj);
char* inpay_check21_getsslservercertsubject(void* lpObj);
int inpay_check21_getsslservercertencoded(void* lpObj, char** lpSSLServerCertEncoded, int* lenSSLServerCertEncoded);
QString GetSSLServerCertEffectiveDate(); QString GetSSLServerCertExpirationDate(); QString GetSSLServerCertExtendedKeyUsage(); QString GetSSLServerCertFingerprint(); QString GetSSLServerCertFingerprintSHA1(); QString GetSSLServerCertFingerprintSHA256(); QString GetSSLServerCertIssuer(); QString GetSSLServerCertPrivateKey(); bool GetSSLServerCertPrivateKeyAvailable(); QString GetSSLServerCertPrivateKeyContainer(); QString GetSSLServerCertPublicKey(); QString GetSSLServerCertPublicKeyAlgorithm(); int GetSSLServerCertPublicKeyLength(); QString GetSSLServerCertSerialNumber(); QString GetSSLServerCertSignatureAlgorithm(); QByteArray GetSSLServerCertStore(); QString GetSSLServerCertStorePassword(); int GetSSLServerCertStoreType(); QString GetSSLServerCertSubjectAltNames(); QString GetSSLServerCertThumbprintMD5(); QString GetSSLServerCertThumbprintSHA1(); QString GetSSLServerCertThumbprintSHA256(); QString GetSSLServerCertUsage(); int GetSSLServerCertUsageFlags(); QString GetSSLServerCertVersion(); QString GetSSLServerCertSubject(); QByteArray GetSSLServerCertEncoded();
Remarks
This property contains the server certificate for the last established connection.
SSLServerCert is reset every time a new connection is attempted.
This property is read-only.
Data Type
SSLStartMode Property (Check21 Class)
This property determines how the class starts the Secure Sockets Layer (SSL) negotiation.
Syntax
ANSI (Cross Platform) int GetSSLStartMode();
int SetSSLStartMode(int iSSLStartMode); Unicode (Windows) INT GetSSLStartMode();
INT SetSSLStartMode(INT iSSLStartMode);
Possible Values
SSL_AUTOMATIC(0),
SSL_IMPLICIT(1),
SSL_EXPLICIT(2),
SSL_NONE(3)
int inpay_check21_getsslstartmode(void* lpObj);
int inpay_check21_setsslstartmode(void* lpObj, int iSSLStartMode);
int GetSSLStartMode();
int SetSSLStartMode(int iSSLStartMode);
Default Value
3
Remarks
The SSLStartMode property may have one of the following values:
0 (sslAutomatic) | If the remote port is set to the standard plaintext port of the protocol (where applicable), the class will behave the same as if SSLStartMode is set to sslExplicit. In all other cases, SSL negotiation will be implicit (sslImplicit). |
1 (sslImplicit) | The SSL negotiation will start immediately after the connection is established. |
2 (sslExplicit) | The class will first connect in plaintext, and then will explicitly start SSL negotiation through a protocol command such as STARTTLS. |
3 (sslNone - default) | No SSL negotiation; no SSL security. All communication will be in plaintext mode. |
Data Type
Integer
BuildAndUploadFile Method (Check21 Class)
Builds an X9.37 file and uploads it to an FTP server.
Syntax
ANSI (Cross Platform) int BuildAndUploadFile(); Unicode (Windows) INT BuildAndUploadFile();
int inpay_check21_buildanduploadfile(void* lpObj);
int BuildAndUploadFile();
Remarks
This method builds a complete X9.37 file and uploads it to the server specified in the RemoteHost field. If an FileName is specified, it will be saved on the local disc as well. If FileName contains only a path (FileName must terminate in a "/" or "\"), that path will be used to create a temporary file which will be deleted after the upload. If FileName is empty, the system temp directory will be used for creating the temporary file.
An X9.37 file created by this class will contain the following records:
- File Header Record (1)
- Cash Letter Header Record (1)
- Bundle Header Record (1)
- Check detail record structure (0 to CheckCount), which contains:
- Check Detail Record (1)
- Check Detail Addenda A (1)
- Front Image View Detail Record (0 or 1)
- Front Image View Data Record (0 or 1)
- Back Image View Detail Record (0 or 1)
- Back Image View Data Record (0 or 1)
- Bundle Control Record (1)
- Cash Letter Control Record (1)
- File Control Record (1)
Error Handling (C++)
This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)
BuildFile Method (Check21 Class)
Builds an X9.37 file.
Syntax
ANSI (Cross Platform) int BuildFile(); Unicode (Windows) INT BuildFile();
int inpay_check21_buildfile(void* lpObj);
int BuildFile();
Remarks
This method builds a complete X9.37 file. If the FileName is specified, the file will be saved to the path and filename indicated there. If no FileName is given, the resultant file will be stored in memory, and can be accessed in the FileData property.
An X9.37 file created by this class will contain the following records:
- File Header Record (1)
- Cash Letter Header Record (1)
- Bundle Header Record (1)
- Check detail record structure (0 to CheckCount), which contains:
- Check Detail Record (1)
- Check Detail Addenda A (1)
- Front Image View Detail Record (0 or 1)
- Front Image View Data Record (0 or 1)
- Back Image View Detail Record (0 or 1)
- Back Image View Data Record (0 or 1)
- Bundle Control Record (1)
- Cash Letter Control Record (1)
- File Control Record (1)
Error Handling (C++)
This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)
Config Method (Check21 Class)
Sets or retrieves a configuration setting.
Syntax
ANSI (Cross Platform) char* Config(const char* lpszConfigurationString); Unicode (Windows) LPWSTR Config(LPCWSTR lpszConfigurationString);
char* inpay_check21_config(void* lpObj, const char* lpszConfigurationString);
QString Config(const QString& qsConfigurationString);
Remarks
Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.
These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.
To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).
To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.
Error Handling (C++)
This method returns a String value; after it returns, call the GetLastErrorCode() method to obtain its result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.
DoEvents Method (Check21 Class)
This method processes events from the internal message queue.
Syntax
ANSI (Cross Platform) int DoEvents(); Unicode (Windows) INT DoEvents();
int inpay_check21_doevents(void* lpObj);
int DoEvents();
Remarks
When DoEvents is called, the class processes any available events. If no events are available, it waits for a preset period of time, and then returns.
Error Handling (C++)
This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)
Interrupt Method (Check21 Class)
This method interrupts the current method.
Syntax
ANSI (Cross Platform) int Interrupt(); Unicode (Windows) INT Interrupt();
int inpay_check21_interrupt(void* lpObj);
int Interrupt();
Remarks
If there is no method in progress, Interrupt simply returns, doing nothing.
Error Handling (C++)
This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)
Reset Method (Check21 Class)
Reset the internal state of the class and all properties to their default values.
Syntax
ANSI (Cross Platform) int Reset(); Unicode (Windows) INT Reset();
int inpay_check21_reset(void* lpObj);
int Reset();
Remarks
The Reset method doesn't have any parameters and doesn't return any value.
Error Handling (C++)
This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)
Error Event (Check21 Class)
Information about non-fatal errors encountered during file construction.
Syntax
ANSI (Cross Platform) virtual int FireError(Check21ErrorEventParams *e);
typedef struct {
int ErrorCode;
const char *Description; int reserved; } Check21ErrorEventParams;
Unicode (Windows) virtual INT FireError(Check21ErrorEventParams *e);
typedef struct {
INT ErrorCode;
LPCWSTR Description; INT reserved; } Check21ErrorEventParams;
#define EID_CHECK21_ERROR 1 virtual INT INPAY_CALL FireError(INT &iErrorCode, LPSTR &lpszDescription);
class Check21ErrorEventParams { public: int ErrorCode(); const QString &Description(); int EventRetVal(); void SetEventRetVal(int iRetVal); };
// To handle, connect one or more slots to this signal. void Error(Check21ErrorEventParams *e);
// Or, subclass Check21 and override this emitter function. virtual int FireError(Check21ErrorEventParams *e) {...}
Remarks
The Error event is fired to warn the user that it may be operating differently than the user expects. For instance, if the CollectionType is set to ctNoDetail, but check detail records are provided in the Checks array properties the class will fire this event indicating that the specified Checks were ignored.
ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.
SSLServerAuthentication Event (Check21 Class)
Fired after the server presents its certificate to the client.
Syntax
ANSI (Cross Platform) virtual int FireSSLServerAuthentication(Check21SSLServerAuthenticationEventParams *e);
typedef struct {
const char *CertEncoded; int lenCertEncoded;
const char *CertSubject;
const char *CertIssuer;
const char *Status;
int Accept; int reserved; } Check21SSLServerAuthenticationEventParams;
Unicode (Windows) virtual INT FireSSLServerAuthentication(Check21SSLServerAuthenticationEventParams *e);
typedef struct {
LPCSTR CertEncoded; INT lenCertEncoded;
LPCWSTR CertSubject;
LPCWSTR CertIssuer;
LPCWSTR Status;
BOOL Accept; INT reserved; } Check21SSLServerAuthenticationEventParams;
#define EID_CHECK21_SSLSERVERAUTHENTICATION 2 virtual INT INPAY_CALL FireSSLServerAuthentication(LPSTR &lpCertEncoded, INT &lenCertEncoded, LPSTR &lpszCertSubject, LPSTR &lpszCertIssuer, LPSTR &lpszStatus, BOOL &bAccept);
class Check21SSLServerAuthenticationEventParams { public: const QByteArray &CertEncoded(); const QString &CertSubject(); const QString &CertIssuer(); const QString &Status(); bool Accept(); void SetAccept(bool bAccept); int EventRetVal(); void SetEventRetVal(int iRetVal); };
// To handle, connect one or more slots to this signal. void SSLServerAuthentication(Check21SSLServerAuthenticationEventParams *e);
// Or, subclass Check21 and override this emitter function. virtual int FireSSLServerAuthentication(Check21SSLServerAuthenticationEventParams *e) {...}
Remarks
During this event, the client can decide whether or not to continue with the connection process. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether or not to continue.
When Accept is False, Status shows why the verification failed (otherwise, Status contains the string OK). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.
SSLStatus Event (Check21 Class)
Fired when secure connection progress messages are available.
Syntax
ANSI (Cross Platform) virtual int FireSSLStatus(Check21SSLStatusEventParams *e);
typedef struct {
const char *Message; int reserved; } Check21SSLStatusEventParams;
Unicode (Windows) virtual INT FireSSLStatus(Check21SSLStatusEventParams *e);
typedef struct {
LPCWSTR Message; INT reserved; } Check21SSLStatusEventParams;
#define EID_CHECK21_SSLSTATUS 3 virtual INT INPAY_CALL FireSSLStatus(LPSTR &lpszMessage);
class Check21SSLStatusEventParams { public: const QString &Message(); int EventRetVal(); void SetEventRetVal(int iRetVal); };
// To handle, connect one or more slots to this signal. void SSLStatus(Check21SSLStatusEventParams *e);
// Or, subclass Check21 and override this emitter function. virtual int FireSSLStatus(Check21SSLStatusEventParams *e) {...}
Remarks
The event is fired for informational and logging purposes only. This event tracks the progress of the connection.
Status Event (Check21 Class)
Traces the commands sent to the server, and the respective replies.
Syntax
ANSI (Cross Platform) virtual int FireStatus(Check21StatusEventParams *e);
typedef struct {
const char *Message; int reserved; } Check21StatusEventParams;
Unicode (Windows) virtual INT FireStatus(Check21StatusEventParams *e);
typedef struct {
LPCWSTR Message; INT reserved; } Check21StatusEventParams;
#define EID_CHECK21_STATUS 4 virtual INT INPAY_CALL FireStatus(LPSTR &lpszMessage);
class Check21StatusEventParams { public: const QString &Message(); int EventRetVal(); void SetEventRetVal(int iRetVal); };
// To handle, connect one or more slots to this signal. void Status(Check21StatusEventParams *e);
// Or, subclass Check21 and override this emitter function. virtual int FireStatus(Check21StatusEventParams *e) {...}
Remarks
The Status event is useful for debugging purposes. It shows all the interaction between the client and the server, line by line.
Certificate Type
This is the digital certificate being used.
Syntax
InPayCertificate (declared in inpay.h)
Remarks
This type describes the current digital certificate. The certificate may be a public or private key. The fields are used to identify or select certificates.
- EffectiveDate
- ExpirationDate
- ExtendedKeyUsage
- Fingerprint
- FingerprintSHA1
- FingerprintSHA256
- Issuer
- PrivateKey
- PrivateKeyAvailable
- PrivateKeyContainer
- PublicKey
- PublicKeyAlgorithm
- PublicKeyLength
- SerialNumber
- SignatureAlgorithm
- Store
- StorePassword
- StoreType
- SubjectAltNames
- ThumbprintMD5
- ThumbprintSHA1
- ThumbprintSHA256
- Usage
- UsageFlags
- Version
- Subject
- Encoded
Fields
EffectiveDate
char* (read-only)
Default Value: ""
The date on which this certificate becomes valid. Before this date, it is not valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2000 15:00:00.
ExpirationDate
char* (read-only)
Default Value: ""
The date on which the certificate expires. After this date, the certificate will no longer be valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2001 15:00:00.
ExtendedKeyUsage
char* (read-only)
Default Value: ""
A comma-delimited list of extended key usage identifiers. These are the same as ASN.1 object identifiers (OIDs).
Fingerprint
char* (read-only)
Default Value: ""
The hex-encoded, 16-byte MD5 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: bc:2a:72:af:fe:58:17:43:7a:5f:ba:5a:7c:90:f7:02
FingerprintSHA1
char* (read-only)
Default Value: ""
The hex-encoded, 20-byte SHA-1 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 30:7b:fa:38:65:83:ff:da:b4:4e:07:3f:17:b8:a4:ed:80:be:ff:84
FingerprintSHA256
char* (read-only)
Default Value: ""
The hex-encoded, 32-byte SHA-256 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 6a:80:5c:33:a9:43:ea:b0:96:12:8a:64:96:30:ef:4a:8a:96:86:ce:f4:c7:be:10:24:8e:2b:60:9e:f3:59:53
Issuer
char* (read-only)
Default Value: ""
The issuer of the certificate. This field contains a string representation of the name of the issuing authority for the certificate.
PrivateKey
char* (read-only)
Default Value: ""
The private key of the certificate (if available). The key is provided as PEM/Base64-encoded data.
Note: The PrivateKey may be available but not exportable. In this case, PrivateKey returns an empty string.
PrivateKeyAvailable
int (read-only)
Default Value: FALSE
Whether a PrivateKey is available for the selected certificate. If PrivateKeyAvailable is True, the certificate may be used for authentication purposes (e.g., server authentication).
PrivateKeyContainer
char* (read-only)
Default Value: ""
The name of the PrivateKey container for the certificate (if available). This functionality is available only on Windows platforms.
PublicKey
char* (read-only)
Default Value: ""
The public key of the certificate. The key is provided as PEM/Base64-encoded data.
PublicKeyAlgorithm
char* (read-only)
Default Value: ""
The textual description of the certificate's public key algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_DH") or an object identifier (OID) string representing the algorithm.
PublicKeyLength
int (read-only)
Default Value: 0
The length of the certificate's public key (in bits). Common values are 512, 1024, and 2048.
SerialNumber
char* (read-only)
Default Value: ""
The serial number of the certificate encoded as a string. The number is encoded as a series of hexadecimal digits, with each pair representing a byte of the serial number.
SignatureAlgorithm
char* (read-only)
Default Value: ""
The text description of the certificate's signature algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_MD5RSA") or an object identifier (OID) string representing the algorithm.
Store
char*
Default Value: "MY"
The name of the certificate store for the client certificate.
The StoreType field denotes the type of the certificate store specified by Store. If the store is password-protected, specify the password in StorePassword.
Store is used in conjunction with the Subject field to specify client certificates. If Store has a value, and Subject or Encoded is set, a search for a certificate is initiated. Please see the Subject field for details.
Designations of certificate stores are platform dependent.
The following designations are the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is cstPFXFile, this property must be set to the name of the file. When the type is cstPFXBlob, the property must be set to the binary contents of a PFX file (i.e., PKCS#12 certificate store).
StorePassword
char*
Default Value: ""
If the type of certificate store requires a password, this field is used to specify the password needed to open the certificate store.
StoreType
int
Default Value: 0
The type of certificate store for this certificate.
The class supports both public and private keys in a variety of formats. When the cstAuto value is used, the class will automatically determine the type. This field can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user.
Note: This store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store.
Note: This store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS#12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in PFX (PKCS#12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates.
Note: This store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in Java Key Store (JKS) format.
Note: This store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS#7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS#7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store).
Note: This store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format.
Note: This store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS#11 interface.
To use a security key, the necessary data must first be collected using the CertMgr class. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS#11 DLL. The certificate information returned in the CertList event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the Store and set StorePassword to the PIN. Code Example. SSH Authentication with Security Key:
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
SubjectAltNames
char* (read-only)
Default Value: ""
Comma-separated lists of alternative subject names for the certificate.
ThumbprintMD5
char* (read-only)
Default Value: ""
The MD5 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
ThumbprintSHA1
char* (read-only)
Default Value: ""
The SHA-1 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
ThumbprintSHA256
char* (read-only)
Default Value: ""
The SHA-256 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
Usage
char* (read-only)
Default Value: ""
The text description of UsageFlags.
This value will be one or more of the following strings and will be separated by commas:
- Digital Signature
- Non-Repudiation
- Key Encipherment
- Data Encipherment
- Key Agreement
- Certificate Signing
- CRL Signing
- Encipher Only
If the provider is OpenSSL, the value is a comma-separated list of X.509 certificate extension names.
UsageFlags
int (read-only)
Default Value: 0
The flags that show intended use for the certificate. The value of UsageFlags is a combination of the following flags:
0x80 | Digital Signature |
0x40 | Non-Repudiation |
0x20 | Key Encipherment |
0x10 | Data Encipherment |
0x08 | Key Agreement |
0x04 | Certificate Signing |
0x02 | CRL Signing |
0x01 | Encipher Only |
Please see the Usage field for a text representation of UsageFlags.
This functionality currently is not available when the provider is OpenSSL.
Version
char* (read-only)
Default Value: ""
The certificate's version number. The possible values are the strings "V1", "V2", and "V3".
Subject
char*
Default Value: ""
The subject of the certificate used for client authentication.
This property must be set after all other certificate properties are set. When this property is set, a search is performed in the current certificate store to locate a certificate with a matching subject.
If a matching certificate is found, the field is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma-separated list of distinguished name fields and values. For instance, "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are as follows:
Field | Meaning |
CN | Common Name. This is commonly a hostname like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma, it must be quoted.
Encoded
char*
Default Value: ""
The certificate (PEM/Base64 encoded). This field is used to assign a specific certificate. The Store and Subject fields also may be used to specify a certificate.
When Encoded is set, a search is initiated in the current Store for the private key of the certificate. If the key is found, Subject is updated to reflect the full subject of the selected certificate; otherwise, Subject is set to an empty string.
Constructors
Certificate()
Creates a instance whose properties can be set. This is useful for use with when generating new certificates.
Certificate(const char* lpEncoded, int lenEncoded)
Parses Encoded as an X.509 public key.
Certificate(int iStoreType, const char* lpStore, int lenStore, const char* lpszStorePassword, const char* lpszSubject)
StoreType identifies the type of certificate store to use. See for descriptions of the different certificate stores. Store is a byte array containing the certificate data. StorePassword is the password used to protect the store.
After the store has been successfully opened, the component will attempt to find the certificate identified by Subject . This can be either a complete or a substring match of the X.509 certificate's subject Distinguished Name (DN). The Subject parameter can also take an MD5, SHA-1, or SHA-256 thumbprint of the certificate to load in a "Thumbprint=value" format.
CheckDetail Type
Contains information about a check to be written to file.
Syntax
InPayCheckDetail (declared in inpay.h)
Remarks
A CheckDetail type contains MICR information read off of a physical check, as well as the Bank of First Deposit's routing number and the name of the payee. A check may also optionally contain a scan of the front and back of the paper check.
- Amount
- BackImageCreationDate
- BackImageData
- BackImageFileName
- BackImageReferenceKey
- BOFDAccountNumber
- BOFDBranch
- BOFDConversionIndicator
- BOFDRoutingNumber
- BOFDTruncator
- CanRecreateImages
- FrontImageCreationDate
- FrontImageData
- FrontImageFileName
- FrontImageReferenceKey
- ImageCompression
- ImageCreatorRoutingNumber
- ImageFormat
- MICRAuxOnUs
- MICROnUs
- MICRProcessingCode
- MICRRoutingNumber
- PayeeName
- SequenceNumber
Fields
Amount
char*
Default Value: ""
The US dollar value of the check. This field is part of the Check detail record (type 25), and is 10 characters in length.
BackImageCreationDate
char*
Default Value: ""
Date assigned by the image creator for the image contained in BackImageData. This field is part of the Image View Detail record (type 50), and is in the format "YYYYMMDD".
BackImageData
char*
Default Value: ""
This field contains the scanned image of the back of the physical check, in the format specified by ImageFormat and compressed using the designated ImageCompression. You may either specify the raw binary image data in this field, or specify the path and filename of an image on disk in the BackImageFileName field. If both are specified BackImageData will be used. If both fields are left empty, no records referencing the back image of the check will be added to the file.
BackImageFileName
char*
Default Value: ""
This field contains location of a scanned image of the back of the physical check, in the format specified by ImageFormat and compressed using the designated ImageCompression. You may either specify the path and filename of an image on disk in this field, or you may set the raw binary image data in the BackImageData field. If both fields are specified BackImageData will be used and BackImageFileName will be ignored. If both fields are left empty, no records referencing the back image of the check will be added to the file.
BackImageReferenceKey
char*
Default Value: ""
A designator assigned by the ECE institution that uniquely identifies the BackImageData. This designator could be a key that would be used by the creating institution to located the unique associated image, or it could provide a full access path and name that would allow direct external look up and access of the image. For example, this could be a URL.
BOFDAccountNumber
char*
Default Value: ""
A number that identifies the depository account at the Bank of First Deposit. This field is part of the Check Detail Addendum A record (type 26), and is 18 characters in length.
BOFDBranch
char*
Default Value: ""
A code that identifies the branch at the Bank of First Deposit. This field is part of the Check Detail Addendum A record (type 26), and is 5 characters in length.
BOFDConversionIndicator
char*
Default Value: ""
A code that indicates the conversion within the processing institution between original paper check, image, and IRD. The indicator is specific to the action of this BOFD endorser. This field is part of the Check Detail Addendum A record (type 26), and may be set to one of the following values:
0 | Did not convert physical document. |
1 | Original paper converted to IRD. |
2 | Original paper converted to image. |
3 | IRD converted to another IRD. |
4 | Ird converted to image of IRD. |
5 | Image converted to an IRD. |
6 | Image converted to another image (ie: transcoded). |
7 | Did not convert image (ie: same as source). |
8 | Undetermined. |
BOFDRoutingNumber
char*
Default Value: ""
A number that identifies the Bank of First Deposit. This field is part of the Check Detail Addendum A record (type 26), and is exactly 9 characters long, including the check digit.
BOFDTruncator
int
Default Value: TRUE
Identifies if this BOFD is the truncator of the original check. This field is part of the Check Detail Addendum A record (type 26), and is True by default.
CanRecreateImages
int
Default Value: TRUE
A code that indicates whether the sender has the ability to recreate the check images (from the original source) for the duration of the agreed to retention time frame.
FrontImageCreationDate
char*
Default Value: ""
Date assigned by the image creator for the image contained in FrontImageData. This field is part of the Image View Detail record (type 50), and is in the format "YYYYMMDD".
FrontImageData
char*
Default Value: ""
This field contains the scanned image of the front of the physical check, in the format specified by ImageFormat and compressed using the designated ImageCompression. You may either specify the raw binary image data in this field, or specify the path and filename of an image on disk in the FrontImageFileName field. If both are specified FrontImageData will be used. If both fields are left empty, no records referencing the front image of the check will be added to the file.
FrontImageFileName
char*
Default Value: ""
This field contains location of a scanned image of the front of the physical check, in the format specified by ImageFormat and compressed using the designated ImageCompression. You may either specify the path and filename of an image on disk in this field, or you may set the raw binary image data in the FrontImageData field. If both fields are specified FrontImageData will be used and FrontImageFileName will be ignored. If both fields are left empty, no records referencing the front image of the check will be added to the file.
FrontImageReferenceKey
char*
Default Value: ""
A designator assigned by the ECE institution that uniquely identifies the FrontImageData. This designator could be a key that would be used by the creating institution to located the unique associated image, or it could provide a full access path and name that would allow direct external look up and access of the image. For example, this could be a URL.
ImageCompression
int
Default Value: 1
A code that identifies the algorithm or method used to compress the images stored in the FrontImageData and BackImageData fields. Values 0-20 may be used without a pre-existing agreement. Values 21-99 shall only be used when an agreement exists indicating that sender and receiver both support the specified image compression method and the method is specified below or on the X9 web site. This field is part of the Image View Detail record (type 50), and may be any of the values below:
icFacsimile (0) | Group 4 facsimile compression |
icJPEG (1) | JPEG Baseline |
icABIC (2) | ABIC |
3-20 | Reserved (agreement is not required) |
icPNG (21) | PNG |
icJBIG (22) | JBIG |
icJPEG2000 (23) | JPEG 2000 |
24-99 | Reserved for emerging image compression technologies as defined on the X9 web site. Only supported under agreement. |
ImageCreatorRoutingNumber
char*
Default Value: ""
A number that identifies the financial institution that created the image (if different from BOFDRoutingNumber). This field is part of the Image View Detail record (type 50), and is exactly 9 characters long, including the check digit.
If this field is not specified the Originator routing number will be used.
ImageFormat
int
Default Value: 0
A code that identifies the type of image format used for the images contained in the FrontImageData and BackImageData fields. Values 0-19 may e used without a pre-existing agreement. Values 20-99 shall only be used when an agreement exists indicating that the sender and receiver both support the specified image format type and the type is specified below or on the X9 web site. The image format type is also commonly specified by reference to the file extension used when the FrontImageData or BackImageData is saved as an image file. The file extension for each image format is included below for reference.
ifTIFF (0) | TIFF 6, extension: TIF. |
ifIOCA (1) | IOCA FS11, extension: ICA. |
2-19 | Reserved (agreement is not required) |
ifPNG (20) | Portable Network Graphics, extension: PNG. |
ifJFIF (21) | JPEG File Interchange Format, extension: JPG. |
ifSPIFF (22) | Still Picture Interchange File Format, extension: SPF. |
ifJBIG (23) | JBIG data stream, extension: JBG. |
ifJPEG2000 (24) | JPEG 2000, extension: JP2. |
25-99 | Reserved for image format and encapsulation technologies as defined on the X9 web site. Only supported under agreement. |
MICRAuxOnUs
char*
Default Value: ""
A code used on commercial checks at the discretion of the payor bank, read off of the MICR line on a check. This field is part of the Check detail record (type 25), and is 15 characters in length.
MICROnUs
char*
Default Value: ""
Account number data specified by the payor bank and read from the MICR line on a check. On-Us data usually consists of the payor's account number, a serial number or transaction code, or both.
ANS X9.37 requires the collecting bank to capture the entire On-Us field from the physical check. Blanks are to be suppressed, dashes are optional, and each On-Us symbol must be translated to a forward slash ('/'). This field is part of the Check detail record (type 25), and is 20 characters in length.
MICRProcessingCode
char*
Default Value: ""
The external processing code from the MICR line of a check, if present. This is also known as "Position 44",. and is used for special purposes as authorized by the Accredited Standards Committee X9. This field is part of the Check detail record (type 25), and is 1 character in length.
MICRRoutingNumber
char*
Default Value: ""
Payor bank routing number, read from the MICR line of a check. This number identifies the institution by or through which the item is payable. This field is part of the Check detail record (type 25), and is exactly 9 characters long, including the check digit.
PayeeName
char*
Default Value: ""
The name of the payee from the check. This field is part of the Check Detail Addendum A record (type 26), and is 15 characters in length.
SequenceNumber
char*
Default Value: ""
ECE Institution Item Sequence Number, assigned by the institution that creates the file. The ECE institution must construct the sequence number to guarantee uniqueness for a given RoutingNumber, BusinessDate, and CycleNumber. This field is part of the Check detail record (type 25) and Image View Data Record (type 52), and is 15 characters in length.
Constructors
CheckDetail()
FTPSettings Type
Used to connect to an FTP or FTPS server for uploading X9.37 files.
Syntax
InPayFTPSettings (declared in inpay.h)
Remarks
These ftp fields are only necessary when uploading an X9.37 file to an FTP or FTPS server. The RemoteHost and RemotePath fields specify the server you wish to connect to. RemotePath contains the path at which you wish to save the file, and RemoteFile indicates the filename that will be saved on the FTP server after upload. (It does not have to match the FileName property). User and Password contain your logon credentials for the FTP server.
Fields
Password
char*
Default Value: ""
The password to login with. This field must be set before the class begins a file upload.
RemoteFile
char*
Default Value: ""
The name of the file as it will appear on the server after upload. The RemoteFile can contain only the file name, an absolute path and filename, or a relative path based on RemotePath.
RemoteHost
char*
Default Value: ""
The domain name or IP address of the FTP server the file is to be uploaded to.
The RemoteHost field specifies the IP address (IP number in dotted internet format) or Domain Name of the FTP server. It is set before a connection is attempted and cannot be changed once a connection is in progress.
If the RemoteHost field is set to a Domain Name, a DNS request is initiated and upon successful termination of the request, the RemoteHost field is set to the corresponding address. If the search is not successful, an error is returned.
If the class is configured to use a SOCKS firewall, the value assigned to this property may be preceded with an "*". If this is the case, the host name is passed to the firewall unresolved and the firewall performs the DNS resolution.
RemotePath
char*
Default Value: ""
The current path on the FTP server. The RemotePath shows the current working directory on the FTP server. It can also be used to change the working directory by setting it to an absolute directory path, or a relative path with respect to the existing value of RemotePath.
If the first two bytes of the new path are "..", then a change to one level above in the directory tree is performed.
The RemotePath must be set before the class begins a file upload.
RemotePort
int
Default Value: 21
The port for the FTP service (default is 21). A valid port number (a value between 1 and 65535) is required for the connection to take place. The property must be set before a connection is attempted and cannot be changed once a connection is established. Any attempt to change this property while connected will fail with an error.
Timeout
int
Default Value: 60
A timeout to use when uploading via FTP.
When uploading the X9.37 file to the FTP RemoteHost, the class will use this field to determine how long to wait for the operation to complete before returning control. The Timeout field cannot be set to 0
The default value for the Timeout field is 60 (seconds).
User
char*
Default Value: ""
The user id to login as. This field must be set before the class begins a file upload.
Constructors
FTPSettings()
Origin Type
Specifies the originator of a file and the checks contained within.
Syntax
InPayOrigin (declared in inpay.h)
Remarks
These fields are used in many places in the different records that make up an X9.37 file.
Fields
ContactName
char*
Default Value: ""
A contact at the institution that creates the file. This field is part of the File Control record (type 99), and is 14 characters in length.
ContactPhone
char*
Default Value: ""
The phone number of the ContactName at the institution that created the file. This field is part of the Cash Letter Header record (type 10) and File Control record (type 99), and is 10 characters in length.
OriginName
char*
Default Value: ""
The short name of the ECE institution that created the file. This field is part of the Cash Letter Header record (type 10) and Cash Letter Control record (type 90), and is 14 characters in length.
RoutingNumber
char*
Default Value: ""
A number that identifies the ECE institution that originates the file. This field is part of the File Header record (type 01) and Cash Letter Header record (type 10), and Bundle Header record (type 20), and is exactly 9 characters long including the check digit.
Constructors
Origin()
Origin(const char* lpszOriginName, const char* lpszRoutingNumber, const char* lpszContactName, const char* lpszContactPhone)
InPayList Type
Syntax
InPayList<T> (declared in inpay.h)
Remarks
InPayList is a generic class that is used to hold a collection of objects of type T, where T is one of the custom types supported by the Check21 class.
Methods | |
GetCount |
This method returns the current size of the collection.
int GetCount() {}
|
SetCount |
This method sets the size of the collection. This method returns 0 if setting the size was successful; or -1 if the collection is ReadOnly. When adding additional objects to a collection call this method to specify the new size. Increasing the size of the collection preserves existing objects in the collection.
int SetCount(int count) {}
|
Get |
This method gets the item at the specified position. The index parameter specifies the index of the item in the collection. This method returns NULL if an invalid index is specified.
T* Get(int index) {}
|
Set |
This method sets the item at the specified position. The index parameter specifies the index of the item in the collection that is being set. This method returns -1 if an invalid index is specified. Note: Objects created using the new operator must be freed using the delete operator; they will not be automatically freed by the class.
T* Set(int index, T* value) {}
|
Config Settings (Check21 Class)
The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.Check21 Config Settings
" " (space) | Default value (not specified) |
A | Microfilm. |
B | Image. |
C | Paper. |
D | Microfilm and image. |
E | Microfilm and paper. |
F | Image and paper. |
G | Microfilm, image, and paper. |
H | Electronic Check Instrument. |
I | None. |
Y | Indicates ECE institution is BOFD. (default) |
N | Indicates ECE institution is not BOFD. |
U | Indicates ECE institution relationship to BOFD is undetermined. |
When set to True, the Check at the specified index 'i' will be sent as a Credit Record (61) within the X9.37 file. The DocumentationType is used in the creation of this record as are the following Checks fields: MICRAuxOnUs, MICRProcessingCode, MICRRoutingNumber, MICROnUs, Amount, and SequenceNumber. The default value is False.
1 | City. |
2 | City Group. |
3 | City Fine Sort. |
4 | RCPC. |
5 | RCPC Group. |
6 | RCPC Fine Sort. |
7 | High Dollar Group Sort. |
8 | Country. |
9 | Country Group Sort. |
0 | Country Fine Sort. |
A | Other District. |
B | Other District Group Sort. |
C | Mixed. |
D | City/RCPC Mixed. |
E | Payor Group Sort. |
0 | Will not accept any electronic information (default). |
1 | Will accept preliminary return notifications, returns, and final return notifications. |
2 | Will accept preliminary return notifications and returns. |
3 | Will accept preliminary return notifications and final return notifications. |
4 | Will accept returns and final return notifications. |
5 | Will accept preliminary return notifications only. |
6 | Will accept returns only. |
7 | Will accept final return notifications only. |
8 | Will accept preliminary return notifications, returns, final return notifications, and image returns. |
9 | Will accept preliminary return notifications, returns, and image returns. |
A | Will accept preliminary return notifications, final return notifications, and image returns. |
B | Will accept returns, final return notifications, and image returns. |
C | Will accept preliminary return notifications and image returns. |
D | Will accept returns and image returns. |
E | Will accept final return notifications and image returns. |
F | Will accept image returns only. |
Base Config Settings
The following is a list of valid code page identifiers:
Identifier | Name |
037 | IBM EBCDIC - U.S./Canada |
437 | OEM - United States |
500 | IBM EBCDIC - International |
708 | Arabic - ASMO 708 |
709 | Arabic - ASMO 449+, BCON V4 |
710 | Arabic - Transparent Arabic |
720 | Arabic - Transparent ASMO |
737 | OEM - Greek (formerly 437G) |
775 | OEM - Baltic |
850 | OEM - Multilingual Latin I |
852 | OEM - Latin II |
855 | OEM - Cyrillic (primarily Russian) |
857 | OEM - Turkish |
858 | OEM - Multilingual Latin I + Euro symbol |
860 | OEM - Portuguese |
861 | OEM - Icelandic |
862 | OEM - Hebrew |
863 | OEM - Canadian-French |
864 | OEM - Arabic |
865 | OEM - Nordic |
866 | OEM - Russian |
869 | OEM - Modern Greek |
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2) |
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15) |
875 | IBM EBCDIC - Modern Greek |
932 | ANSI/OEM - Japanese, Shift-JIS |
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore) |
949 | ANSI/OEM - Korean (Unified Hangul Code) |
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC) |
1026 | IBM EBCDIC - Turkish (Latin-5) |
1047 | IBM EBCDIC - Latin 1/Open System |
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol) |
1141 | IBM EBCDIC - Germany (20273 + Euro symbol) |
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol) |
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol) |
1144 | IBM EBCDIC - Italy (20280 + Euro symbol) |
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol) |
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol) |
1147 | IBM EBCDIC - France (20297 + Euro symbol) |
1148 | IBM EBCDIC - International (500 + Euro symbol) |
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol) |
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646) |
1201 | Unicode UCS-2 Big-Endian |
1250 | ANSI - Central European |
1251 | ANSI - Cyrillic |
1252 | ANSI - Latin I |
1253 | ANSI - Greek |
1254 | ANSI - Turkish |
1255 | ANSI - Hebrew |
1256 | ANSI - Arabic |
1257 | ANSI - Baltic |
1258 | ANSI/OEM - Vietnamese |
1361 | Korean (Johab) |
10000 | MAC - Roman |
10001 | MAC - Japanese |
10002 | MAC - Traditional Chinese (Big5) |
10003 | MAC - Korean |
10004 | MAC - Arabic |
10005 | MAC - Hebrew |
10006 | MAC - Greek I |
10007 | MAC - Cyrillic |
10008 | MAC - Simplified Chinese (GB 2312) |
10010 | MAC - Romania |
10017 | MAC - Ukraine |
10021 | MAC - Thai |
10029 | MAC - Latin II |
10079 | MAC - Icelandic |
10081 | MAC - Turkish |
10082 | MAC - Croatia |
12000 | Unicode UCS-4 Little-Endian |
12001 | Unicode UCS-4 Big-Endian |
20000 | CNS - Taiwan |
20001 | TCA - Taiwan |
20002 | Eten - Taiwan |
20003 | IBM5550 - Taiwan |
20004 | TeleText - Taiwan |
20005 | Wang - Taiwan |
20105 | IA5 IRV International Alphabet No. 5 (7-bit) |
20106 | IA5 German (7-bit) |
20107 | IA5 Swedish (7-bit) |
20108 | IA5 Norwegian (7-bit) |
20127 | US-ASCII (7-bit) |
20261 | T.61 |
20269 | ISO 6937 Non-Spacing Accent |
20273 | IBM EBCDIC - Germany |
20277 | IBM EBCDIC - Denmark/Norway |
20278 | IBM EBCDIC - Finland/Sweden |
20280 | IBM EBCDIC - Italy |
20284 | IBM EBCDIC - Latin America/Spain |
20285 | IBM EBCDIC - United Kingdom |
20290 | IBM EBCDIC - Japanese Katakana Extended |
20297 | IBM EBCDIC - France |
20420 | IBM EBCDIC - Arabic |
20423 | IBM EBCDIC - Greek |
20424 | IBM EBCDIC - Hebrew |
20833 | IBM EBCDIC - Korean Extended |
20838 | IBM EBCDIC - Thai |
20866 | Russian - KOI8-R |
20871 | IBM EBCDIC - Icelandic |
20880 | IBM EBCDIC - Cyrillic (Russian) |
20905 | IBM EBCDIC - Turkish |
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol) |
20932 | JIS X 0208-1990 & 0121-1990 |
20936 | Simplified Chinese (GB2312) |
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian) |
21027 | Extended Alpha Lowercase |
21866 | Ukrainian (KOI8-U) |
28591 | ISO 8859-1 Latin I |
28592 | ISO 8859-2 Central Europe |
28593 | ISO 8859-3 Latin 3 |
28594 | ISO 8859-4 Baltic |
28595 | ISO 8859-5 Cyrillic |
28596 | ISO 8859-6 Arabic |
28597 | ISO 8859-7 Greek |
28598 | ISO 8859-8 Hebrew |
28599 | ISO 8859-9 Latin 5 |
28605 | ISO 8859-15 Latin 9 |
29001 | Europa 3 |
38598 | ISO 8859-8 Hebrew |
50220 | ISO 2022 Japanese with no halfwidth Katakana |
50221 | ISO 2022 Japanese with halfwidth Katakana |
50222 | ISO 2022 Japanese JIS X 0201-1989 |
50225 | ISO 2022 Korean |
50227 | ISO 2022 Simplified Chinese |
50229 | ISO 2022 Traditional Chinese |
50930 | Japanese (Katakana) Extended |
50931 | US/Canada and Japanese |
50933 | Korean Extended and Korean |
50935 | Simplified Chinese Extended and Simplified Chinese |
50936 | Simplified Chinese |
50937 | US/Canada and Traditional Chinese |
50939 | Japanese (Latin) Extended and Japanese |
51932 | EUC - Japanese |
51936 | EUC - Simplified Chinese |
51949 | EUC - Korean |
51950 | EUC - Traditional Chinese |
52936 | HZ-GB2312 Simplified Chinese |
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte) |
57002 | ISCII Devanagari |
57003 | ISCII Bengali |
57004 | ISCII Tamil |
57005 | ISCII Telugu |
57006 | ISCII Assamese |
57007 | ISCII Oriya |
57008 | ISCII Kannada |
57009 | ISCII Malayalam |
57010 | ISCII Gujarati |
57011 | ISCII Punjabi |
65000 | Unicode UTF-7 |
65001 | Unicode UTF-8 |
Identifier | Name |
1 | ASCII |
2 | NEXTSTEP |
3 | JapaneseEUC |
4 | UTF8 |
5 | ISOLatin1 |
6 | Symbol |
7 | NonLossyASCII |
8 | ShiftJIS |
9 | ISOLatin2 |
10 | Unicode |
11 | WindowsCP1251 |
12 | WindowsCP1252 |
13 | WindowsCP1253 |
14 | WindowsCP1254 |
15 | WindowsCP1250 |
21 | ISO2022JP |
30 | MacOSRoman |
10 | UTF16String |
0x90000100 | UTF16BigEndian |
0x94000100 | UTF16LittleEndian |
0x8c000100 | UTF32String |
0x98000100 | UTF32BigEndian |
0x9c000100 | UTF32LittleEndian |
65536 | Proprietary |
- Product: The product the license is for.
- Product Key: The key the license was generated from.
- License Source: Where the license was found (e.g., RuntimeLicense, License File).
- License Type: The type of license installed (e.g., Royalty Free, Single Server).
- Last Valid Build: The last valid build number for which the license will work.
This setting only works on these classes: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer.
Setting this configuration setting to true tells the class to use the internal implementation instead of using the system security libraries.
On Windows, this setting is set to false by default. On Linux/macOS, this setting is set to true by default.
To use the system security libraries for Linux, OpenSSL support must be enabled. For more information on how to enable OpenSSL, please refer to the OpenSSL Notes section.
Trappable Errors (Check21 Class)
Error Handling (C++)
Call the GetLastErrorCode() method to obtain the last called method's result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. Known error codes are listed below. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.
Check21 Errors
143 | Busy performing current action |
The class may also return one of the following error codes, which are inherited from other classes.