Class: FdxV660Api::RequestForPaymentsController

Inherits:
BaseController show all
Defined in:
lib/fdx_v660_api/controllers/request_for_payments_controller.rb

Overview

RequestForPaymentsController

Constant Summary

Constants inherited from BaseController

BaseController::GLOBAL_ERRORS

Instance Attribute Summary

Attributes inherited from BaseController

#config, #http_call_back

Instance Method Summary collapse

Methods inherited from BaseController

#initialize, #new_parameter, #new_request_builder, #new_response_handler, user_agent, user_agent_parameters

Constructor Details

This class inherits a constructor from FdxV660Api::BaseController

Instance Method Details

#get_request_for_payment(x_fapi_interaction_id, rfp_id, fdx_api_actor_type: nil, fdx_api_data_provider_id: nil, fdx_api_data_recipient_id: nil) ⇒ ApiResponse

Get the details for a request for payment identifier for this interaction, as defined by [FAPI 2.0 Implementation Advice, 2.2.1 x-fapi-interaction-id](https://openid.bitbucket.io/fapi/fapi-2_0-implement ation_advice.html#name-x-fapi-interaction-id) Uniquely identifies a request for payment whether the customer is present (USER) or it is a BATCH operation financial institution responding to the request for the data recipient(s) on whose behalf the request is being made

Parameters:

  • x_fapi_interaction_id (UUID | String)

    Required parameter: Unique

  • rfp_id (String)

    Required parameter: Request for payment identifier.

  • fdx_api_actor_type (FdxApiActorType) (defaults to: nil)

    Optional parameter: Identifies

  • fdx_api_data_provider_id (String) (defaults to: nil)

    Optional parameter: ID for the

  • fdx_api_data_recipient_id (Array[String]) (defaults to: nil)

    Optional parameter: ID(s)

Returns:

  • (ApiResponse)

    Complete http response with raw body and status code.



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/fdx_v660_api/controllers/request_for_payments_controller.rb', line 139

def get_request_for_payment(x_fapi_interaction_id,
                            rfp_id,
                            fdx_api_actor_type: nil,
                            fdx_api_data_provider_id: nil,
                            fdx_api_data_recipient_id: nil)
  @api_call
    .request(new_request_builder(HttpMethodEnum::GET,
                                 '/request-for-payments/{rfpId}',
                                 Server::DEFAULT)
               .header_param(new_parameter(x_fapi_interaction_id, key: 'x-fapi-interaction-id')
                              .is_required(true))
               .template_param(new_parameter(rfp_id, key: 'rfpId')
                                .is_required(true)
                                .should_encode(true))
               .header_param(new_parameter(fdx_api_actor_type, key: 'FDX-API-Actor-Type'))
               .header_param(new_parameter(fdx_api_data_provider_id, key: 'FDX-API-Data-Provider-Id'))
               .header_param(new_parameter(fdx_api_data_recipient_id, key: 'FDX-API-Data-Recipient-Id'))
               .header_param(new_parameter('application/json', key: 'accept')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(RequestForPaymentEntity.method(:from_hash))
                .is_api_response(true)
                .local_error('404',
                             'Request for payment with provided ID was not found',
                             ErrorException)
                .local_error('500',
                             'Catch-all exception where request was not processed due to an'\
                              ' internal outage/issue. Consider other more specific errors'\
                              ' before using this error',
                             ErrorException)
                .local_error('501',
                             'Error when FdxVersion in Header is not one of those'\
                              ' implemented at backend',
                             ErrorException)
                .local_error('503',
                             'System is down for maintenance',
                             ErrorException))
    .execute
end

#search_for_request_for_payments(x_fapi_interaction_id, fdx_api_actor_type: nil, fdx_api_data_provider_id: nil, fdx_api_data_recipient_id: nil, account_id: nil, start_date: nil, end_date: nil, status: nil, updated_since: nil, page_key: nil, limit: nil) ⇒ ApiResponse

Search for request for payments identifier for this interaction, as defined by [FAPI 2.0 Implementation Advice, 2.2.1 x-fapi-interaction-id](https://openid.bitbucket.io/fapi/fapi-2_0-implement ation_advice.html#name-x-fapi-interaction-id) whether the customer is present (USER) or it is a BATCH operation financial institution responding to the request for the data recipient(s) on whose behalf the request is being made in searching or authorization. Optional retrieval of elements (ISO 8601 format). Provider to define the date ranges and behaviors they will support. Example of defined behavior: - Recipients need to either specify both start date and end date or neither. If both start date and end date are not specified; default provided. Default range: 7 Days of past data. (Today's date - 6 days both dates are inclusive) - Recipient can specify the same start date and end date. The returned data will reflect transactions from that date - If start date and end date both are specified and if start date is later than end date, return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec - If start Date and end date both are specified and if start date is older than what the Data Provider supports, then the Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec. Example: If today is 5/14/2024 and the DP supports 24 months, the start date should be 5/14/2022 and newer; it should not be 5/13/2022 or older - If start date is specified but end date is not specified or vice versa; Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec of elements (ISO 8601 format). Provider to define the date ranges and behaviors they will support. Example of defined behavior: - Recipients need to either specify both start date and end date or neither. If both start date and end date are not specified; default provided. Default range: 7 Days of past data. (Today's date - 6 days both dates are inclusive) - Recipient can specify the same start date and end date. The returned data will reflect transactions from that date - If start date and end date both are specified and if start date is later than end date, return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec

  • If start Date and end date both are specified and if start date is older than what the Data Provider supports, then the Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec. Example: If today is 5/14/2024 and the DP supports 24 months, the start date should be 5/14/2022 and newer; it should not be 5/13/2022 or older - If start date is specified but end date is not specified or vice versa; Data Provider should return 'invalid date range' error code: 703, HTTPS 400 per the FDX spec - If end date is today's date, the most recent transactions from the time the request is received will be returned more request for payment status enums to filter the payments being requested. Comma separated been created or updated since the nextUpdateId provider to send the next set of records. Pagination can be implemented per provider's preference consumer wishes to receive. Providers should implement reasonable default/maximum/minimum values based on their internal architecture and update their documentation accordingly

Parameters:

  • x_fapi_interaction_id (UUID | String)

    Required parameter: Unique

  • fdx_api_actor_type (FdxApiActorType) (defaults to: nil)

    Optional parameter: Identifies

  • fdx_api_data_provider_id (String) (defaults to: nil)

    Optional parameter: ID for the

  • fdx_api_data_recipient_id (Array[String]) (defaults to: nil)

    Optional parameter: ID(s)

  • account_id (String) (defaults to: nil)

    Optional parameter: Account Identifier for use

  • start_date (Date) (defaults to: nil)

    Optional parameter: Start date for use in

  • end_date (Date) (defaults to: nil)

    Optional parameter: End date for use in retrieval

  • status (Array[RequestForPaymentStatus]) (defaults to: nil)

    Optional parameter: One or

  • updated_since (String) (defaults to: nil)

    Optional parameter: Return items that have

  • page_key (String) (defaults to: nil)

    Optional parameter: Opaque cursor used by the

  • limit (Integer) (defaults to: nil)

    Optional parameter: Number of elements that the

Returns:

  • (ApiResponse)

    Complete http response with raw body and status code.



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/fdx_v660_api/controllers/request_for_payments_controller.rb', line 74

def search_for_request_for_payments(x_fapi_interaction_id,
                                    fdx_api_actor_type: nil,
                                    fdx_api_data_provider_id: nil,
                                    fdx_api_data_recipient_id: nil,
                                    account_id: nil,
                                    start_date: nil,
                                    end_date: nil,
                                    status: nil,
                                    updated_since: nil,
                                    page_key: nil,
                                    limit: nil)
  @api_call
    .request(new_request_builder(HttpMethodEnum::GET,
                                 '/request-for-payments',
                                 Server::DEFAULT)
               .header_param(new_parameter(x_fapi_interaction_id, key: 'x-fapi-interaction-id')
                              .is_required(true))
               .header_param(new_parameter(fdx_api_actor_type, key: 'FDX-API-Actor-Type'))
               .header_param(new_parameter(fdx_api_data_provider_id, key: 'FDX-API-Data-Provider-Id'))
               .header_param(new_parameter(fdx_api_data_recipient_id, key: 'FDX-API-Data-Recipient-Id'))
               .query_param(new_parameter(, key: 'accountId'))
               .query_param(new_parameter(start_date, key: 'startDate'))
               .query_param(new_parameter(end_date, key: 'endDate'))
               .query_param(new_parameter(status, key: 'status'))
               .query_param(new_parameter(updated_since, key: 'updatedSince'))
               .query_param(new_parameter(page_key, key: 'pageKey'))
               .query_param(new_parameter(limit, key: 'limit'))
               .header_param(new_parameter('application/json', key: 'accept')))
    .response(new_response_handler
                .deserializer(APIHelper.method(:custom_type_deserializer))
                .deserialize_into(RequestForPaymentsEntity.method(:from_hash))
                .is_api_response(true)
                .local_error('404',
                             'Data not found for request parameters',
                             ErrorException)
                .local_error('500',
                             'Catch-all exception where request was not processed due to an'\
                              ' internal outage/issue. Consider other more specific errors'\
                              ' before using this error',
                             ErrorException)
                .local_error('501',
                             'Error when FdxVersion in Header is not one of those'\
                              ' implemented at backend',
                             ErrorException)
                .local_error('503',
                             'System is down for maintenance',
                             ErrorException))
    .execute
end