Data Entry
Introduction
The JHA SmartPay mRDC™ Web Service offers the ability to allow a merchant user to enter extra transaction and customer information with the check for reporting purposes. This feature is controlled by the financial institution or Partner and is optional, but if they have chosen to allow their customers to use this feature, the integrator should allow the customer enter additional transaction/customer information within the mRDC application.
Getting Started
Tasks covered in this guide
- Add extra transaction information using data entry to the deposit within the deposit workflow.
Required prerequisites before you continue
- You will need to obtain your test credentials to try any of the examples in this guide. You should receive these from the Integrations team near the start of your project.
- Review the Single Check Deposit Guide for an understanding of how to start the deposit workflow.
- Download the mRDC Web Service WSDL file from the Downloads menu.
Data Entry Workflow
Integrator Mobile Deposit Flow | EPS mRDC Mobile Deposit Flow | ||||
EPS Web Service | |||||
1. | |||||
2. | |||||
3. | |||||
|
Step 1 After the user has initiated the deposit workflow, but before the AddItem request, send the GetSettings request.
GetSettings
Request Example
{
"__type":"GetSettingsRequest:#JackHenry.Eps.Mobile.RDC",
"RequestDate":"/Date(1692650646000-0500)/",
"RequestId":"AS65F4AS65D4AS6D5AS",
"Credentials":{
"PhoneKey":"65465146876",
"SecurityToken":"String Content"
}
}
If the GetSettings response provides a value of "True" for ShowDataEntry, proceed with the rest of this workflow.
Log the following information from the GetSettings response for use in subsequent requests:
- "SecurityToken" - New token should be used in the next request.
GetSettings
Response Example
{
"RequestId": "AS65F4AS65D4AS6D5AS",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"PhoneKey": "65465146876",
"SecurityToken": "String Content"
},
"AllowCreateCustomer": true,
"AllowSaveUsername": true,
"AllowUpdateCustomer": true,
"EnablePasswordChange": true,
"GeoLocationAccess": 0,
"ShowCustomBatchId": false,
"ShowDataEntry": true,
"MiSnapLicense": null,
"MiSnapLicenseIntegrator": null
}
Step 2.1 Send the GetDataFields request. This method is designed for collecting transaction data.
The LocationReference is a required field within the next two steps. This value should have been retrieved from the GetLocations request in the Single or Multi Check Deposit workflow.
GetDataFields
Request Example
{
"__type":"GetDataFieldsRequest:#JackHenry.Eps.Mobile.RDC",
"RequestDate":"/Date(1692650646000-0500)/",
"RequestId":"string",
"LocationReference":"L:T2PR",
"Credentials":{
"PhoneKey":"string",
"SecurityToken":"String Content"
}
}
The GetDataFields response reveals which fields to display to the customer:
- "Text" property - The display label.
- "IsRequired" property - Dictates whether the user must enter a value.
- "Validation" property - Provides a regex to match the value against.
- "ValidationMessage" property - The message to display if the validation fails.
GetDataFields
Response Example
{
"RequestId": "string",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"PhoneKey": "string",
"SecurityToken": "String Content"
},
"DataFields": [
{
"FieldName": "TransactionId",
"FieldType": 0,
"IsRequired": false,
"Text": "Transaction Number",
"Validation": "",
"ValidationMessage": "",
"Value": null
},
{
"FieldName": "TransactionData1",
"FieldType": 0,
"IsRequired": false,
"Text": "Memo Field",
"Validation": "",
"ValidationMessage": "",
"Value": null
},
{
"FieldName": "TransactionData2",
"FieldType": 0,
"IsRequired": false,
"Text": "Invoice Field",
"Validation": "",
"ValidationMessage": "",
"Value": null
}
]
}
Step 2.2 Send the GetCustomerFields request. This method is designed for collecting customer information.
The CustomerType is an enumeration identifying the type of customer or end user you intend to create and required field. Possible values are Individual or Business.
GetCustomerFields
Request Example
{
"__type":"GetCustomerFieldsRequest:#JackHenry.Eps.Mobile.RDC",
"RequestDate":"/Date(1692650646000-0500)/",
"RequestId":"string",
"LocationReference":"L:T2PR",
"CustomerType":0,
"Credentials":{
"PhoneKey":"string",
"SecurityToken":"String Content"
}
}
The GetCustomerFields response reveals which fields to display to the customer:
- "Text" property - The display label.
- "IsRequired" property - Dictates whether the user must enter a value.
- "Validation" property - Provides a regex to match the value against.
- "ValidationMessage" property - The message to display if the validation fails.
GetCustomerFields
Response Example
{
"RequestId": "string",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"PhoneKey": "string",
"SecurityToken": "string content"
},
"CustomerFields": [
{
"FieldName": "CustomerNumber",
"FieldType": 1,
"IsRequired": false,
"Text": "Customer Number",
"Validation": "",
"ValidationMessage": "",
"Value": null
},
{
"FieldName": "LastName",
"FieldType": 1,
"IsRequired": true,
"Text": "Last Name",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "FirstName",
"FieldType": 1,
"IsRequired": true,
"Text": "First Name",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "Address1",
"FieldType": 1,
"IsRequired": true,
"Text": "Address",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "Address2",
"FieldType": 1,
"IsRequired": true,
"Text": "Suite/APT#",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "City",
"FieldType": 1,
"IsRequired": true,
"Text": "City",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "State",
"FieldType": 1,
"IsRequired": true,
"Text": "State/Region",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "PostalCode",
"FieldType": 1,
"IsRequired": true,
"Text": "Postal Code",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "Country",
"FieldType": 1,
"IsRequired": true,
"Text": "Country",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "DaytimePhone",
"FieldType": 1,
"IsRequired": false,
"Text": "Daytime Phone",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "DaytimePhoneExt",
"FieldType": 1,
"IsRequired": false,
"Text": "Daytime Phone Extension",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "EveningPhone",
"FieldType": 1,
"IsRequired": false,
"Text": "Evening Phone",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "EveningPhoneExt",
"FieldType": 1,
"IsRequired": false,
"Text": "Evening Phone Extension",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "DLNumber",
"FieldType": 1,
"IsRequired": false,
"Text": "Driver's License Number",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "DLState",
"FieldType": 1,
"IsRequired": false,
"Text": "Driver's License State",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "SSNFedTaxId",
"FieldType": 1,
"IsRequired": false,
"Text": "SSN",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "Email",
"FieldType": 1,
"IsRequired": false,
"Text": "Email",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "Fax",
"FieldType": 1,
"IsRequired": false,
"Text": "Fax Number",
"Validation": null,
"ValidationMessage": null,
"Value": null
},
{
"FieldName": "CustomerData1",
"FieldType": 1,
"IsRequired": false,
"Text": "Customer DBA",
"Validation": "",
"ValidationMessage": "",
"Value": null
},
{
"FieldName": "CustomerData2",
"FieldType": 1,
"IsRequired": false,
"Text": "Customer Tax ID",
"Validation": "",
"ValidationMessage": "",
"Value": null
}
]
}
Step 2.3 Display the AddItem screen to the user with the data entry and customer fields from the GetDataFields and GetCustomerFields responses. The user will then input the values for data entry and item information.
Step 3 Send the AddItemRequest value with the DataFields properties collected from the previous step.
AddItem
Request Example
{
"__type":"AddItemRequest:#JackHenry.Eps.Mobile.RDC",
"RequestDate":"/Date(1692650646000-0500)/",
"RequestId":"6S54FD652154654F154654S3D2F1SD3",
"Credentials":{
"SecurityToken":"String Content",
"PhoneKey":"string"
},
"BatchReference":"B:HC925R1",
"LocationReference":"L:T2PR",
"DataFields":[
{
"__type":"DataField:#JackHenry.Eps.Mobile.RDC",
"FieldName":"TransactionData2",
"Text":"Invoice Field",
"IsRequired":false,
"Value":"Invoice 1235454",
"Validation":"",
"ValidationMessage":"",
"FieldType":0
}
],
"Amount":5.00,
"FrontImage":"FrontImage",
"BackImage":"BackImage"
}
Log the following information from the AddItemResponse for use in subsequent requests:
- "SecurityToken" - New token should be used in the next request.
- "BatchReference" - A unique ID to identify an open batch that can be used in subsequent requests.
- "ItemReference" - The unique value assigned to each item that can be used to get more details about this item.
AddItem
Response Example
{
"RequestId": "6S54FD652154654F154654S3D2F1SD3",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"PhoneKey": "string",
"SecurityToken": "String Content"
},
"Item": {
"Amount": 5.0000,
"BatchReference": "B:HC925R1",
"Customer": null,
"DataFields": [
{
"FieldName": "TransactionId",
"FieldType": 0,
"IsRequired": false,
"Text": "Transaction Number",
"Validation": "",
"ValidationMessage": "",
"Value": "3091b1c5-7939-4e3d-a441-ce6a86a41725-0"
},
{
"FieldName": "TransactionData1",
"FieldType": 0,
"IsRequired": false,
"Text": "Memo Field",
"Validation": "",
"ValidationMessage": "",
"Value": ""
},
{
"FieldName": "TransactionData2",
"FieldType": 0,
"IsRequired": false,
"Text": "Invoice Field",
"Validation": "",
"ValidationMessage": "",
"Value": "Invoice 1235454"
}
],
"Events": [
{
"Date": "/Date(1709758295343-0600)/",
"Description": "Check Decision Performed"
},
{
"Date": "/Date(1709758295327-0600)/",
"Description": "Created"
}
],
"IQAStatus": "Nothing",
"ItemReference": "I:86JPWH5",
"ProcessingStatus": null,
"ProcessingStatusDescription": null,
"Status": "ItemStatus04",
"StatusDescription": "Created",
"TransactionReferenceNumber": null
}
}
Handling Errors and Failed Requests
Not all requests will be successful. This is a common error message you should be ready to handle.
- Timeout waiting for response: Systems should be designed to wait 5 seconds to receive a response before timing out. If a timeout occurs, you can attempt to retry the request or reach out through your normal support channels for assistance.
Next steps
- Review the API Reference
Please review the API Reference to see all APIs and their technical specifications.
- Explore other guides
We have other guides to show how to leverage our APIs in other common use cases. If your situation or question is not covered in the current guide, consult another resource.
- Get certified and move into production
Ready to put your new code into production use? Refer to this process guide that explains our certification steps and how to contact us to get started.