first_data_gateway 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/README.md +144 -65
  4. data/Rakefile +2 -0
  5. data/docs/AVSResponse.md +9 -0
  6. data/docs/AccessTokenResponse.md +2 -3
  7. data/docs/AdditionalAmountRate.md +9 -0
  8. data/docs/AdditionalTransactionDetails.md +10 -0
  9. data/docs/Address.md +5 -5
  10. data/docs/Airline.md +14 -14
  11. data/docs/AirlineAncillaryServiceCategory.md +2 -2
  12. data/docs/AirlineTravelRoute.md +8 -8
  13. data/docs/AliPay.md +11 -0
  14. data/docs/Amount.md +2 -2
  15. data/docs/AmountComponents.md +8 -8
  16. data/docs/AuthenticationApi.md +19 -24
  17. data/docs/AuthenticationRequest.md +9 -0
  18. data/docs/AuthenticationResponseVerification.md +5 -4
  19. data/docs/AuthenticationResponseVerificationRequest.md +11 -0
  20. data/docs/BasicResponse.md +10 -0
  21. data/docs/BasketItem.md +2 -2
  22. data/docs/Billing.md +6 -5
  23. data/docs/BillingAddress.md +17 -0
  24. data/docs/BillingAddressPhone.md +9 -0
  25. data/docs/CarRental.md +9 -9
  26. data/docs/CarRentalExtraCharges.md +2 -2
  27. data/docs/Card.md +15 -0
  28. data/docs/CardInfo.md +13 -0
  29. data/docs/CardInfoLookupApi.md +68 -0
  30. data/docs/CardInfoLookupRequest.md +9 -0
  31. data/docs/CardInfoLookupResponse.md +12 -0
  32. data/docs/CardVerificationApi.md +68 -0
  33. data/docs/CardVerificationRequest.md +9 -0
  34. data/docs/CardVerificationsTransaction.md +2 -2
  35. data/docs/ChinaDomestic.md +15 -0
  36. data/docs/ClientLocale.md +3 -3
  37. data/docs/Contact.md +5 -5
  38. data/docs/CurrencyConversionApi.md +68 -0
  39. data/docs/Customer.md +19 -0
  40. data/docs/CustomerAddress.md +14 -0
  41. data/docs/CustomerAddressPhone.md +9 -0
  42. data/docs/Dcc.md +9 -0
  43. data/docs/Device.md +19 -0
  44. data/docs/DeviceNetworks.md +21 -0
  45. data/docs/Document.md +9 -0
  46. data/docs/Error.md +1 -1
  47. data/docs/ErrorDetails.md +1 -1
  48. data/docs/ErrorResponse.md +4 -4
  49. data/docs/ExchangeRateRequest.md +12 -0
  50. data/docs/ExchangeRateResponse.md +21 -0
  51. data/docs/Expiration.md +3 -3
  52. data/docs/FraudDetectApi.md +68 -0
  53. data/docs/FraudOrder.md +10 -0
  54. data/docs/FraudOrderItems.md +15 -0
  55. data/docs/FraudOrderShipToAddress.md +14 -0
  56. data/docs/Frequency.md +3 -3
  57. data/docs/IndustrySpecificExtensions.md +1 -1
  58. data/docs/InstallmentOptions.md +1 -1
  59. data/docs/Lodging.md +3 -3
  60. data/docs/LodgingExtraCharges.md +1 -1
  61. data/docs/Loyalty.md +10 -0
  62. data/docs/Merchant.md +11 -0
  63. data/docs/MerchantLocation.md +12 -0
  64. data/docs/MerchantLocationMerchantAddress.md +13 -0
  65. data/docs/Order.md +2 -2
  66. data/docs/OrderApi.md +107 -55
  67. data/docs/OrderErrorResponse.md +19 -0
  68. data/docs/OrderResponse.md +18 -0
  69. data/docs/PayPal.md +1 -1
  70. data/docs/Payment.md +18 -0
  71. data/docs/PaymentApi.md +164 -124
  72. data/docs/PaymentCard.md +10 -6
  73. data/docs/PaymentCardAuthenticationResult.md +1 -1
  74. data/docs/PaymentFacilitator.md +12 -0
  75. data/docs/PaymentIssuerResponse.md +10 -0
  76. data/docs/PaymentMethod.md +5 -2
  77. data/docs/PaymentPayMethod.md +13 -0
  78. data/docs/PaymentSchedulesApi.md +256 -0
  79. data/docs/PaymentSchedulesErrorResponse.md +14 -0
  80. data/docs/PaymentSchedulesRequest.md +10 -7
  81. data/docs/PaymentSchedulesResponse.md +7 -5
  82. data/docs/PaymentTokenApi.md +134 -0
  83. data/docs/PaymentTokenization.md +16 -0
  84. data/docs/PaymentTokenizationErrorResponse.md +19 -0
  85. data/docs/PaymentTokenizationRequest.md +11 -0
  86. data/docs/PaymentTokenizationResponse.md +18 -0
  87. data/docs/PaymentURLApi.md +68 -0
  88. data/docs/PaymentUrlErrorResponse.md +15 -0
  89. data/docs/PaymentUrlRequest.md +13 -3
  90. data/docs/PaymentUrlResponse.md +6 -5
  91. data/docs/PaymentVerification3ds.md +10 -0
  92. data/docs/PaymentVerificationAvs.md +10 -0
  93. data/docs/PaymentVerificationCvv.md +10 -0
  94. data/docs/PrimaryTransaction.md +7 -3
  95. data/docs/PrimaryTransactionAdditionalDetails.md +7 -5
  96. data/docs/ProcessorData.md +8 -4
  97. data/docs/PurchaseCards.md +9 -0
  98. data/docs/PurchaseCardsLevel2.md +12 -0
  99. data/docs/PurchaseCardsLevel3.md +8 -0
  100. data/docs/PurchaseCardsLevel3LineItems.md +16 -0
  101. data/docs/RecurringPaymentDetails.md +20 -0
  102. data/docs/RecurringPaymentDetailsResponse.md +19 -0
  103. data/docs/ReferencedOrder.md +9 -0
  104. data/docs/ResponseType.md +1 -1
  105. data/docs/ScoreOnlyRequest.md +21 -0
  106. data/docs/ScoreOnlyResponse.md +13 -0
  107. data/docs/ScoreOnlyResponseFraudScore.md +10 -0
  108. data/docs/ScoreOnlyResponseFraudScoreExplanations.md +10 -0
  109. data/docs/SecondaryTransaction.md +4 -1
  110. data/docs/SecondaryTransactionAdditionalDetails.md +8 -0
  111. data/docs/Secure3dResponse.md +8 -0
  112. data/docs/Sepa.md +1 -1
  113. data/docs/SepaMandate.md +3 -3
  114. data/docs/Shipping.md +1 -1
  115. data/docs/SoftDescriptor.md +9 -0
  116. data/docs/SplitShipment.md +3 -3
  117. data/docs/StoredCredential.md +4 -4
  118. data/docs/SubMerchantData.md +13 -0
  119. data/docs/Transaction.md +19 -0
  120. data/docs/TransactionErrorResponse.md +13 -11
  121. data/docs/TransactionOrigin.md +7 -0
  122. data/docs/TransactionResponse.md +13 -11
  123. data/docs/TransactionType.md +1 -1
  124. data/first_data_gateway.gemspec +9 -9
  125. data/git_push.sh +2 -2
  126. data/lib/openapi_client/.DS_Store +0 -0
  127. data/lib/{swagger_client → openapi_client}/api/authentication_api.rb +22 -27
  128. data/lib/openapi_client/api/card_info_lookup_api.rb +117 -0
  129. data/lib/openapi_client/api/card_verification_api.rb +117 -0
  130. data/lib/openapi_client/api/currency_conversion_api.rb +117 -0
  131. data/lib/openapi_client/api/fraud_detect_api.rb +122 -0
  132. data/lib/openapi_client/api/order_api.rb +327 -0
  133. data/lib/{swagger_client → openapi_client}/api/payment_api.rb +212 -111
  134. data/lib/openapi_client/api/payment_schedules_api.rb +411 -0
  135. data/lib/openapi_client/api/payment_token_api.rb +218 -0
  136. data/lib/openapi_client/api/payment_url_api.rb +117 -0
  137. data/lib/{swagger_client → openapi_client}/api_client.rb +50 -38
  138. data/lib/{swagger_client → openapi_client}/api_error.rb +6 -6
  139. data/lib/{swagger_client → openapi_client}/configuration.rb +49 -7
  140. data/lib/openapi_client/models/.DS_Store +0 -0
  141. data/lib/{swagger_client → openapi_client}/models/access_token_response.rb +20 -33
  142. data/lib/{swagger_client/models/secondary_transaction.rb → openapi_client/models/additional_amount_rate.rb} +25 -28
  143. data/lib/{swagger_client/models/primary_transaction_additional_details.rb → openapi_client/models/additional_transaction_details.rb} +68 -62
  144. data/lib/{swagger_client → openapi_client}/models/address.rb +33 -44
  145. data/lib/{swagger_client → openapi_client}/models/airline.rb +48 -47
  146. data/lib/{swagger_client → openapi_client}/models/airline_ancillary_service_category.rb +18 -21
  147. data/lib/{swagger_client → openapi_client}/models/airline_travel_route.rb +39 -42
  148. data/lib/openapi_client/models/ali_pay.rb +326 -0
  149. data/lib/{swagger_client → openapi_client}/models/amount.rb +18 -21
  150. data/lib/{swagger_client → openapi_client}/models/amount_components.rb +22 -19
  151. data/lib/{swagger_client/models/transaction_response_authentication_redirect.rb → openapi_client/models/authentication_request.rb} +33 -38
  152. data/lib/{swagger_client → openapi_client}/models/authentication_response_verification.rb +43 -30
  153. data/lib/{swagger_client/models/payment_url_request.rb → openapi_client/models/authentication_response_verification_request.rb} +35 -56
  154. data/lib/openapi_client/models/avs_response.rb +239 -0
  155. data/lib/openapi_client/models/basic_response.rb +209 -0
  156. data/lib/{swagger_client → openapi_client}/models/basket_item.rb +16 -20
  157. data/lib/{swagger_client → openapi_client}/models/billing.rb +65 -25
  158. data/lib/openapi_client/models/billing_address.rb +279 -0
  159. data/lib/{swagger_client/models/transaction_response_authentication_redirect_params.rb → openapi_client/models/billing_address_phone.rb} +31 -42
  160. data/lib/{swagger_client → openapi_client}/models/car_rental.rb +31 -31
  161. data/lib/{swagger_client → openapi_client}/models/car_rental_extra_charges.rb +18 -21
  162. data/lib/openapi_client/models/card.rb +254 -0
  163. data/lib/{swagger_client/models/payment_card.rb → openapi_client/models/card_info.rb} +68 -81
  164. data/lib/openapi_client/models/card_info_lookup_request.rb +214 -0
  165. data/lib/openapi_client/models/card_info_lookup_response.rb +265 -0
  166. data/lib/openapi_client/models/card_verification_request.rb +198 -0
  167. data/lib/{swagger_client → openapi_client}/models/card_verifications_transaction.rb +31 -20
  168. data/lib/openapi_client/models/china_domestic.rb +386 -0
  169. data/lib/{swagger_client → openapi_client}/models/client_locale.rb +19 -23
  170. data/lib/{swagger_client → openapi_client}/models/contact.rb +26 -31
  171. data/lib/openapi_client/models/customer.rb +333 -0
  172. data/lib/openapi_client/models/customer_address.rb +259 -0
  173. data/lib/openapi_client/models/customer_address_phone.rb +195 -0
  174. data/lib/openapi_client/models/dcc.rb +200 -0
  175. data/lib/openapi_client/models/device.rb +340 -0
  176. data/lib/openapi_client/models/device_networks.rb +353 -0
  177. data/lib/{swagger_client/models/payment_card_authentication_request.rb → openapi_client/models/document.rb} +62 -26
  178. data/lib/{swagger_client → openapi_client}/models/error.rb +14 -18
  179. data/lib/{swagger_client → openapi_client}/models/error_details.rb +14 -19
  180. data/lib/{swagger_client → openapi_client}/models/error_response.rb +22 -22
  181. data/lib/openapi_client/models/exchange_rate_request.rb +307 -0
  182. data/lib/openapi_client/models/exchange_rate_response.rb +319 -0
  183. data/lib/{swagger_client → openapi_client}/models/expiration.rb +18 -20
  184. data/lib/openapi_client/models/fraud_order.rb +206 -0
  185. data/lib/openapi_client/models/fraud_order_items.rb +253 -0
  186. data/lib/openapi_client/models/fraud_order_ship_to_address.rb +245 -0
  187. data/lib/{swagger_client → openapi_client}/models/frequency.rb +27 -30
  188. data/lib/{swagger_client → openapi_client}/models/industry_specific_extensions.rb +15 -19
  189. data/lib/{swagger_client → openapi_client}/models/installment_options.rb +22 -28
  190. data/lib/{swagger_client → openapi_client}/models/lodging.rb +19 -22
  191. data/lib/{swagger_client → openapi_client}/models/lodging_extra_charges.rb +17 -21
  192. data/lib/openapi_client/models/loyalty.rb +205 -0
  193. data/lib/openapi_client/models/merchant.rb +219 -0
  194. data/lib/openapi_client/models/merchant_location.rb +224 -0
  195. data/lib/openapi_client/models/merchant_location_merchant_address.rb +250 -0
  196. data/lib/{swagger_client/models/processor_data.rb → openapi_client/models/order.rb} +49 -47
  197. data/lib/openapi_client/models/order_error_response.rb +296 -0
  198. data/lib/openapi_client/models/order_response.rb +287 -0
  199. data/lib/{swagger_client → openapi_client}/models/pay_pal.rb +19 -23
  200. data/lib/openapi_client/models/payment.rb +346 -0
  201. data/lib/openapi_client/models/payment_card.rb +363 -0
  202. data/lib/{swagger_client → openapi_client}/models/payment_card_authentication_result.rb +32 -37
  203. data/lib/openapi_client/models/payment_facilitator.rb +292 -0
  204. data/lib/openapi_client/models/payment_issuer_response.rb +249 -0
  205. data/lib/openapi_client/models/payment_method.rb +278 -0
  206. data/lib/openapi_client/models/payment_pay_method.rb +278 -0
  207. data/lib/openapi_client/models/payment_schedules_error_response.rb +281 -0
  208. data/lib/{swagger_client → openapi_client}/models/payment_schedules_request.rb +83 -80
  209. data/lib/openapi_client/models/payment_schedules_response.rb +272 -0
  210. data/lib/openapi_client/models/payment_tokenization.rb +327 -0
  211. data/lib/openapi_client/models/payment_tokenization_error_response.rb +329 -0
  212. data/lib/{swagger_client/models/payment_method.rb → openapi_client/models/payment_tokenization_request.rb} +34 -37
  213. data/lib/openapi_client/models/payment_tokenization_response.rb +319 -0
  214. data/lib/openapi_client/models/payment_url_error_response.rb +292 -0
  215. data/lib/openapi_client/models/payment_url_request.rb +335 -0
  216. data/lib/{swagger_client → openapi_client}/models/payment_url_response.rb +35 -38
  217. data/lib/openapi_client/models/payment_verification3ds.rb +215 -0
  218. data/lib/openapi_client/models/payment_verification_avs.rb +215 -0
  219. data/lib/openapi_client/models/payment_verification_cvv.rb +215 -0
  220. data/lib/{swagger_client → openapi_client}/models/primary_transaction.rb +93 -31
  221. data/lib/openapi_client/models/primary_transaction_additional_details.rb +352 -0
  222. data/lib/openapi_client/models/processor_data.rb +272 -0
  223. data/lib/openapi_client/models/purchase_cards.rb +192 -0
  224. data/lib/openapi_client/models/purchase_cards_level2.rb +267 -0
  225. data/lib/openapi_client/models/purchase_cards_level3.rb +186 -0
  226. data/lib/openapi_client/models/purchase_cards_level3_line_items.rb +337 -0
  227. data/lib/openapi_client/models/recurring_payment_details.rb +399 -0
  228. data/lib/openapi_client/models/recurring_payment_details_response.rb +296 -0
  229. data/lib/{swagger_client/models/order.rb → openapi_client/models/referenced_order.rb} +23 -36
  230. data/lib/openapi_client/models/response_type.rb +37 -0
  231. data/lib/openapi_client/models/score_only_request.rb +389 -0
  232. data/lib/{swagger_client/models/payment_schedules_response.rb → openapi_client/models/score_only_response.rb} +56 -56
  233. data/lib/openapi_client/models/score_only_response_fraud_score.rb +208 -0
  234. data/lib/openapi_client/models/score_only_response_fraud_score_explanations.rb +201 -0
  235. data/lib/openapi_client/models/secondary_transaction.rb +220 -0
  236. data/lib/openapi_client/models/secondary_transaction_additional_details.rb +183 -0
  237. data/lib/openapi_client/models/secure3d_response.rb +184 -0
  238. data/lib/{swagger_client → openapi_client}/models/sepa.rb +30 -35
  239. data/lib/{swagger_client → openapi_client}/models/sepa_mandate.rb +32 -35
  240. data/lib/{swagger_client → openapi_client}/models/shipping.rb +17 -22
  241. data/lib/openapi_client/models/soft_descriptor.rb +215 -0
  242. data/lib/{swagger_client → openapi_client}/models/split_shipment.rb +17 -21
  243. data/lib/{swagger_client → openapi_client}/models/stored_credential.rb +28 -32
  244. data/lib/openapi_client/models/sub_merchant_data.rb +302 -0
  245. data/lib/openapi_client/models/transaction.rb +337 -0
  246. data/lib/{swagger_client → openapi_client}/models/transaction_error_response.rb +110 -80
  247. data/lib/openapi_client/models/transaction_origin.rb +32 -0
  248. data/lib/{swagger_client → openapi_client}/models/transaction_response.rb +112 -82
  249. data/lib/openapi_client/models/transaction_type.rb +36 -0
  250. data/lib/openapi_client/version.rb +15 -0
  251. data/lib/openapi_client.rb +158 -0
  252. data/lib/simple/client_context.rb +2 -2
  253. data/lib/simple/gateway.rb +274 -37
  254. data/spec/api/authentication_api_spec.rb +12 -12
  255. data/spec/api/card_info_lookup_api_spec.rb +53 -0
  256. data/spec/api/card_verification_api_spec.rb +53 -0
  257. data/spec/api/currency_conversion_api_spec.rb +53 -0
  258. data/spec/api/fraud_detect_api_spec.rb +53 -0
  259. data/spec/api/order_api_spec.rb +44 -23
  260. data/spec/api/payment_api_spec.rb +50 -26
  261. data/spec/api/payment_schedules_api_spec.rb +111 -0
  262. data/spec/api/payment_token_api_spec.rb +74 -0
  263. data/spec/api/payment_url_api_spec.rb +53 -0
  264. data/spec/api_client_spec.rb +66 -66
  265. data/spec/configuration_spec.rb +15 -15
  266. data/spec/models/access_token_response_spec.rb +16 -23
  267. data/spec/models/additional_amount_rate_spec.rb +47 -0
  268. data/spec/models/additional_transaction_details_spec.rb +53 -0
  269. data/spec/models/address_spec.rb +16 -17
  270. data/spec/models/airline_ancillary_service_category_spec.rb +14 -15
  271. data/spec/models/airline_spec.rb +27 -28
  272. data/spec/models/airline_travel_route_spec.rb +22 -23
  273. data/spec/models/ali_pay_spec.rb +63 -0
  274. data/spec/models/amount_components_spec.rb +16 -17
  275. data/spec/models/amount_spec.rb +12 -13
  276. data/spec/models/authentication_request_spec.rb +51 -0
  277. data/spec/models/authentication_response_verification_request_spec.rb +59 -0
  278. data/spec/models/authentication_response_verification_spec.rb +23 -18
  279. data/spec/models/avs_response_spec.rb +55 -0
  280. data/spec/models/basic_response_spec.rb +53 -0
  281. data/spec/models/basket_item_spec.rb +13 -14
  282. data/spec/models/billing_address_phone_spec.rb +47 -0
  283. data/spec/models/billing_address_spec.rb +95 -0
  284. data/spec/models/billing_spec.rb +25 -20
  285. data/spec/models/car_rental_extra_charges_spec.rb +14 -15
  286. data/spec/models/car_rental_spec.rb +17 -18
  287. data/spec/models/card_info_lookup_request_spec.rb +47 -0
  288. data/spec/models/card_info_lookup_response_spec.rb +69 -0
  289. data/spec/models/card_info_spec.rb +79 -0
  290. data/spec/models/card_spec.rb +83 -0
  291. data/spec/models/card_verification_request_spec.rb +47 -0
  292. data/spec/models/card_verifications_transaction_spec.rb +11 -12
  293. data/spec/models/china_domestic_spec.rb +83 -0
  294. data/spec/models/client_locale_spec.rb +11 -12
  295. data/spec/models/contact_spec.rb +13 -14
  296. data/spec/models/customer_address_phone_spec.rb +47 -0
  297. data/spec/models/customer_address_spec.rb +77 -0
  298. data/spec/models/customer_spec.rb +111 -0
  299. data/spec/models/dcc_spec.rb +47 -0
  300. data/spec/models/device_networks_spec.rb +123 -0
  301. data/spec/models/device_spec.rb +111 -0
  302. data/spec/models/document_spec.rb +51 -0
  303. data/spec/models/error_details_spec.rb +11 -12
  304. data/spec/models/error_response_spec.rb +13 -14
  305. data/spec/models/error_spec.rb +12 -13
  306. data/spec/models/exchange_rate_request_spec.rb +69 -0
  307. data/spec/models/exchange_rate_response_spec.rb +119 -0
  308. data/spec/models/expiration_spec.rb +11 -12
  309. data/spec/models/fraud_order_items_spec.rb +83 -0
  310. data/spec/models/fraud_order_ship_to_address_spec.rb +77 -0
  311. data/spec/models/fraud_order_spec.rb +53 -0
  312. data/spec/models/frequency_spec.rb +15 -16
  313. data/spec/models/industry_specific_extensions_spec.rb +12 -13
  314. data/spec/models/installment_options_spec.rb +12 -13
  315. data/spec/models/lodging_extra_charges_spec.rb +14 -15
  316. data/spec/models/lodging_spec.rb +14 -15
  317. data/spec/models/loyalty_spec.rb +53 -0
  318. data/spec/models/merchant_location_merchant_address_spec.rb +71 -0
  319. data/spec/models/merchant_location_spec.rb +65 -0
  320. data/spec/models/merchant_spec.rb +59 -0
  321. data/spec/models/order_error_response_spec.rb +107 -0
  322. data/spec/models/order_response_spec.rb +101 -0
  323. data/spec/models/order_spec.rb +12 -13
  324. data/spec/models/pay_pal_spec.rb +10 -11
  325. data/spec/models/payment_card_authentication_result_spec.rb +26 -27
  326. data/spec/models/payment_card_spec.rb +41 -22
  327. data/spec/models/payment_facilitator_spec.rb +65 -0
  328. data/spec/models/payment_issuer_response_spec.rb +57 -0
  329. data/spec/models/payment_method_spec.rb +35 -18
  330. data/spec/models/payment_pay_method_spec.rb +75 -0
  331. data/spec/models/payment_schedules_error_response_spec.rb +81 -0
  332. data/spec/models/payment_schedules_request_spec.rb +43 -30
  333. data/spec/models/payment_schedules_response_spec.rb +30 -19
  334. data/spec/models/payment_spec.rb +109 -0
  335. data/spec/models/payment_tokenization_error_response_spec.rb +111 -0
  336. data/spec/models/payment_tokenization_request_spec.rb +63 -0
  337. data/spec/models/payment_tokenization_response_spec.rb +105 -0
  338. data/spec/models/payment_tokenization_spec.rb +93 -0
  339. data/spec/models/payment_url_error_response_spec.rb +87 -0
  340. data/spec/models/payment_url_request_spec.rb +73 -14
  341. data/spec/models/payment_url_response_spec.rb +25 -20
  342. data/spec/models/payment_verification3ds_spec.rb +53 -0
  343. data/spec/models/payment_verification_avs_spec.rb +53 -0
  344. data/spec/models/payment_verification_cvv_spec.rb +53 -0
  345. data/spec/models/primary_transaction_additional_details_spec.rb +28 -17
  346. data/spec/models/primary_transaction_spec.rb +45 -22
  347. data/spec/models/processor_data_spec.rb +41 -14
  348. data/spec/models/purchase_cards_level2_spec.rb +65 -0
  349. data/spec/models/purchase_cards_level3_line_items_spec.rb +89 -0
  350. data/spec/models/purchase_cards_level3_spec.rb +41 -0
  351. data/spec/models/purchase_cards_spec.rb +47 -0
  352. data/spec/models/recurring_payment_details_response_spec.rb +107 -0
  353. data/spec/models/recurring_payment_details_spec.rb +117 -0
  354. data/spec/models/referenced_order_spec.rb +47 -0
  355. data/spec/models/response_type_spec.rb +9 -10
  356. data/spec/models/score_only_request_spec.rb +127 -0
  357. data/spec/models/score_only_response_fraud_score_explanations_spec.rb +53 -0
  358. data/spec/models/score_only_response_fraud_score_spec.rb +53 -0
  359. data/spec/models/score_only_response_spec.rb +75 -0
  360. data/spec/models/secondary_transaction_additional_details_spec.rb +41 -0
  361. data/spec/models/secondary_transaction_spec.rb +29 -12
  362. data/spec/models/secure3d_response_spec.rb +41 -0
  363. data/spec/models/sepa_mandate_spec.rb +17 -18
  364. data/spec/models/sepa_spec.rb +14 -15
  365. data/spec/models/shipping_spec.rb +12 -13
  366. data/spec/models/soft_descriptor_spec.rb +47 -0
  367. data/spec/models/split_shipment_spec.rb +11 -12
  368. data/spec/models/stored_credential_spec.rb +21 -22
  369. data/spec/models/sub_merchant_data_spec.rb +71 -0
  370. data/spec/models/transaction_error_response_spec.rb +62 -51
  371. data/spec/models/transaction_origin_spec.rb +35 -0
  372. data/spec/models/transaction_response_spec.rb +61 -50
  373. data/spec/models/transaction_spec.rb +115 -0
  374. data/spec/models/transaction_type_spec.rb +9 -10
  375. data/spec/spec_helper.rb +6 -6
  376. metadata +339 -69
  377. data/docs/PaymentCardAuthenticationRequest.md +0 -8
  378. data/docs/TransactionResponseAuthenticationRedirect.md +0 -10
  379. data/docs/TransactionResponseAuthenticationRedirectParams.md +0 -10
  380. data/lib/swagger_client/api/order_api.rb +0 -229
  381. data/lib/swagger_client/models/response_type.rb +0 -37
  382. data/lib/swagger_client/models/transaction_type.rb +0 -36
  383. data/lib/swagger_client/version.rb +0 -15
  384. data/lib/swagger_client.rb +0 -91
  385. data/spec/models/payment_card_authentication_request_spec.rb +0 -46
  386. data/spec/models/transaction_response_authentication_redirect_params_spec.rb +0 -54
  387. data/spec/models/transaction_response_authentication_redirect_spec.rb +0 -58
@@ -1,27 +1,29 @@
1
1
  =begin
2
- #Payment Gateway API Specification
2
+ #Payment Gateway API Specification.
3
3
 
4
- #Payment Gateway API for payment processing.
4
+ #Payment Gateway API for payment processing. Version 6.4.0.20181018.001
5
5
 
6
- OpenAPI spec version: 0.0.1
6
+ OpenAPI spec version: 6.4.0.20181018.001
7
7
 
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: unset
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: unset
10
10
 
11
11
  =end
12
12
 
13
13
  require 'date'
14
14
 
15
- module SwaggerClient
15
+ module OpenapiClient
16
16
  # Model for primary financial transactions
17
17
  class PrimaryTransaction
18
18
  attr_accessor :transaction_type
19
19
 
20
- # An optional Outlet ID for clients that support multiple stores in the same app.
20
+ # An optional outlet ID for clients that support multiple stores in the same app.
21
21
  attr_accessor :store_id
22
22
 
23
- # The unique client Transaction ID from the Request header, if supplied.
24
- attr_accessor :client_transaction_id
23
+ # The unique merchant transaction ID from the Request header, if supplied.
24
+ attr_accessor :merchant_transaction_id
25
+
26
+ attr_accessor :transaction_origin
25
27
 
26
28
  attr_accessor :amount
27
29
 
@@ -40,13 +42,19 @@ module SwaggerClient
40
42
 
41
43
  attr_accessor :stored_credentials
42
44
 
45
+ attr_accessor :purchase_card
46
+
47
+ attr_accessor :payment_facilitator
48
+
49
+ attr_accessor :soft_descriptor
43
50
 
44
51
  # Attribute mapping from ruby-style variable name to JSON key.
45
52
  def self.attribute_map
46
53
  {
47
54
  :'transaction_type' => :'transactionType',
48
55
  :'store_id' => :'storeId',
49
- :'client_transaction_id' => :'clientTransactionId',
56
+ :'merchant_transaction_id' => :'merchantTransactionId',
57
+ :'transaction_origin' => :'transactionOrigin',
50
58
  :'amount' => :'amount',
51
59
  :'payment_method' => :'paymentMethod',
52
60
  :'order' => :'order',
@@ -54,16 +62,20 @@ module SwaggerClient
54
62
  :'split_shipment' => :'splitShipment',
55
63
  :'additional_details' => :'additionalDetails',
56
64
  :'industry_specific_extensions' => :'industrySpecificExtensions',
57
- :'stored_credentials' => :'storedCredentials'
65
+ :'stored_credentials' => :'storedCredentials',
66
+ :'purchase_card' => :'purchaseCard',
67
+ :'payment_facilitator' => :'paymentFacilitator',
68
+ :'soft_descriptor' => :'softDescriptor'
58
69
  }
59
70
  end
60
71
 
61
72
  # Attribute type mapping.
62
- def self.swagger_types
73
+ def self.openapi_types
63
74
  {
64
75
  :'transaction_type' => :'TransactionType',
65
76
  :'store_id' => :'String',
66
- :'client_transaction_id' => :'String',
77
+ :'merchant_transaction_id' => :'String',
78
+ :'transaction_origin' => :'TransactionOrigin',
67
79
  :'amount' => :'Amount',
68
80
  :'payment_method' => :'PaymentMethod',
69
81
  :'order' => :'Order',
@@ -71,7 +83,10 @@ module SwaggerClient
71
83
  :'split_shipment' => :'SplitShipment',
72
84
  :'additional_details' => :'PrimaryTransactionAdditionalDetails',
73
85
  :'industry_specific_extensions' => :'IndustrySpecificExtensions',
74
- :'stored_credentials' => :'StoredCredential'
86
+ :'stored_credentials' => :'StoredCredential',
87
+ :'purchase_card' => :'PurchaseCards',
88
+ :'payment_facilitator' => :'PaymentFacilitator',
89
+ :'soft_descriptor' => :'SoftDescriptor'
75
90
  }
76
91
  end
77
92
 
@@ -81,7 +96,7 @@ module SwaggerClient
81
96
  return unless attributes.is_a?(Hash)
82
97
 
83
98
  # convert string to symbol for hash key
84
- attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
99
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
85
100
 
86
101
  if attributes.has_key?(:'transactionType')
87
102
  self.transaction_type = attributes[:'transactionType']
@@ -91,8 +106,12 @@ module SwaggerClient
91
106
  self.store_id = attributes[:'storeId']
92
107
  end
93
108
 
94
- if attributes.has_key?(:'clientTransactionId')
95
- self.client_transaction_id = attributes[:'clientTransactionId']
109
+ if attributes.has_key?(:'merchantTransactionId')
110
+ self.merchant_transaction_id = attributes[:'merchantTransactionId']
111
+ end
112
+
113
+ if attributes.has_key?(:'transactionOrigin')
114
+ self.transaction_origin = attributes[:'transactionOrigin']
96
115
  end
97
116
 
98
117
  if attributes.has_key?(:'amount')
@@ -129,6 +148,17 @@ module SwaggerClient
129
148
  self.stored_credentials = attributes[:'storedCredentials']
130
149
  end
131
150
 
151
+ if attributes.has_key?(:'purchaseCard')
152
+ self.purchase_card = attributes[:'purchaseCard']
153
+ end
154
+
155
+ if attributes.has_key?(:'paymentFacilitator')
156
+ self.payment_facilitator = attributes[:'paymentFacilitator']
157
+ end
158
+
159
+ if attributes.has_key?(:'softDescriptor')
160
+ self.soft_descriptor = attributes[:'softDescriptor']
161
+ end
132
162
  end
133
163
 
134
164
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -136,27 +166,57 @@ module SwaggerClient
136
166
  def list_invalid_properties
137
167
  invalid_properties = Array.new
138
168
  if @transaction_type.nil?
139
- invalid_properties.push("invalid value for 'transaction_type', transaction_type cannot be nil.")
169
+ invalid_properties.push('invalid value for "transaction_type", transaction_type cannot be nil.')
170
+ end
171
+
172
+ if !@store_id.nil? && @store_id.to_s.length > 20
173
+ invalid_properties.push('invalid value for "store_id", the character length must be smaller than or equal to 20.')
174
+ end
175
+
176
+ if !@merchant_transaction_id.nil? && @merchant_transaction_id.to_s.length > 40
177
+ invalid_properties.push('invalid value for "merchant_transaction_id", the character length must be smaller than or equal to 40.')
140
178
  end
141
179
 
142
180
  if @amount.nil?
143
- invalid_properties.push("invalid value for 'amount', amount cannot be nil.")
181
+ invalid_properties.push('invalid value for "amount", amount cannot be nil.')
144
182
  end
145
183
 
146
184
  if @payment_method.nil?
147
- invalid_properties.push("invalid value for 'payment_method', payment_method cannot be nil.")
185
+ invalid_properties.push('invalid value for "payment_method", payment_method cannot be nil.')
148
186
  end
149
187
 
150
- return invalid_properties
188
+ invalid_properties
151
189
  end
152
190
 
153
191
  # Check to see if the all the properties in the model are valid
154
192
  # @return true if the model is valid
155
193
  def valid?
156
194
  return false if @transaction_type.nil?
195
+ return false if !@store_id.nil? && @store_id.to_s.length > 20
196
+ return false if !@merchant_transaction_id.nil? && @merchant_transaction_id.to_s.length > 40
157
197
  return false if @amount.nil?
158
198
  return false if @payment_method.nil?
159
- return true
199
+ true
200
+ end
201
+
202
+ # Custom attribute writer method with validation
203
+ # @param [Object] store_id Value to be assigned
204
+ def store_id=(store_id)
205
+ if !store_id.nil? && store_id.to_s.length > 20
206
+ fail ArgumentError, 'invalid value for "store_id", the character length must be smaller than or equal to 20.'
207
+ end
208
+
209
+ @store_id = store_id
210
+ end
211
+
212
+ # Custom attribute writer method with validation
213
+ # @param [Object] merchant_transaction_id Value to be assigned
214
+ def merchant_transaction_id=(merchant_transaction_id)
215
+ if !merchant_transaction_id.nil? && merchant_transaction_id.to_s.length > 40
216
+ fail ArgumentError, 'invalid value for "merchant_transaction_id", the character length must be smaller than or equal to 40.'
217
+ end
218
+
219
+ @merchant_transaction_id = merchant_transaction_id
160
220
  end
161
221
 
162
222
  # Checks equality by comparing each attribute.
@@ -166,7 +226,8 @@ module SwaggerClient
166
226
  self.class == o.class &&
167
227
  transaction_type == o.transaction_type &&
168
228
  store_id == o.store_id &&
169
- client_transaction_id == o.client_transaction_id &&
229
+ merchant_transaction_id == o.merchant_transaction_id &&
230
+ transaction_origin == o.transaction_origin &&
170
231
  amount == o.amount &&
171
232
  payment_method == o.payment_method &&
172
233
  order == o.order &&
@@ -174,7 +235,10 @@ module SwaggerClient
174
235
  split_shipment == o.split_shipment &&
175
236
  additional_details == o.additional_details &&
176
237
  industry_specific_extensions == o.industry_specific_extensions &&
177
- stored_credentials == o.stored_credentials
238
+ stored_credentials == o.stored_credentials &&
239
+ purchase_card == o.purchase_card &&
240
+ payment_facilitator == o.payment_facilitator &&
241
+ soft_descriptor == o.soft_descriptor
178
242
  end
179
243
 
180
244
  # @see the `==` method
@@ -186,7 +250,7 @@ module SwaggerClient
186
250
  # Calculates hash code according to all attributes.
187
251
  # @return [Fixnum] Hash code
188
252
  def hash
189
- [transaction_type, store_id, client_transaction_id, amount, payment_method, order, basket_items, split_shipment, additional_details, industry_specific_extensions, stored_credentials].hash
253
+ [transaction_type, store_id, merchant_transaction_id, transaction_origin, amount, payment_method, order, basket_items, split_shipment, additional_details, industry_specific_extensions, stored_credentials, purchase_card, payment_facilitator, soft_descriptor].hash
190
254
  end
191
255
 
192
256
  # Builds the object from hash
@@ -194,12 +258,12 @@ module SwaggerClient
194
258
  # @return [Object] Returns the model itself
195
259
  def build_from_hash(attributes)
196
260
  return nil unless attributes.is_a?(Hash)
197
- self.class.swagger_types.each_pair do |key, type|
261
+ self.class.openapi_types.each_pair do |key, type|
198
262
  if type =~ /\AArray<(.*)>/i
199
263
  # check to ensure the input is an array given that the the attribute
200
264
  # is documented as an array but the input is not
201
265
  if attributes[self.class.attribute_map[key]].is_a?(Array)
202
- self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
266
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
203
267
  end
204
268
  elsif !attributes[self.class.attribute_map[key]].nil?
205
269
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
@@ -246,7 +310,7 @@ module SwaggerClient
246
310
  end
247
311
  end
248
312
  else # model
249
- temp_model = SwaggerClient.const_get(type).new
313
+ temp_model = OpenapiClient.const_get(type).new
250
314
  temp_model.build_from_hash(value)
251
315
  end
252
316
  end
@@ -281,7 +345,7 @@ module SwaggerClient
281
345
  # @return [Hash] Returns the value in the form of hash
282
346
  def _to_hash(value)
283
347
  if value.is_a?(Array)
284
- value.compact.map{ |v| _to_hash(v) }
348
+ value.compact.map { |v| _to_hash(v) }
285
349
  elsif value.is_a?(Hash)
286
350
  {}.tap do |hash|
287
351
  value.each { |k, v| hash[k] = _to_hash(v) }
@@ -292,7 +356,5 @@ module SwaggerClient
292
356
  value
293
357
  end
294
358
  end
295
-
296
359
  end
297
-
298
360
  end
@@ -0,0 +1,352 @@
1
+ =begin
2
+ #Payment Gateway API Specification.
3
+
4
+ #Payment Gateway API for payment processing. Version 6.4.0.20181018.001
5
+
6
+ OpenAPI spec version: 6.4.0.20181018.001
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: unset
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module OpenapiClient
16
+ class PrimaryTransactionAdditionalDetails
17
+ # For FORCED_TICKET only. Stores the six digit reference number you have received as the result of a successful external authorization (e.g. by phone). The Gateway needs this number for uniquely mapping a ForcedTicket transaction to a previously performed external authorization.]
18
+ attr_accessor :reference_number
19
+
20
+ # Comments for the payment
21
+ attr_accessor :comments
22
+
23
+ # The name of sub-merchant for the payment facilitator
24
+ attr_accessor :dynamic_merchant_name
25
+
26
+ # Invoice number
27
+ attr_accessor :invoice_number
28
+
29
+ # Purchase order number
30
+ attr_accessor :purchase_order_number
31
+
32
+ # Valid values are 'FIRST', 'REPEAT' and 'STANDING_INSTRUCTION'.
33
+ attr_accessor :recurring_type
34
+
35
+ attr_accessor :installment_options
36
+
37
+ # Use this field to override merchant configured MCC value
38
+ attr_accessor :mcc
39
+
40
+ attr_accessor :dcc
41
+
42
+ # Attribute mapping from ruby-style variable name to JSON key.
43
+ def self.attribute_map
44
+ {
45
+ :'reference_number' => :'referenceNumber',
46
+ :'comments' => :'comments',
47
+ :'dynamic_merchant_name' => :'dynamicMerchantName',
48
+ :'invoice_number' => :'invoiceNumber',
49
+ :'purchase_order_number' => :'purchaseOrderNumber',
50
+ :'recurring_type' => :'recurringType',
51
+ :'installment_options' => :'installmentOptions',
52
+ :'mcc' => :'mcc',
53
+ :'dcc' => :'dcc'
54
+ }
55
+ end
56
+
57
+ # Attribute type mapping.
58
+ def self.openapi_types
59
+ {
60
+ :'reference_number' => :'String',
61
+ :'comments' => :'String',
62
+ :'dynamic_merchant_name' => :'String',
63
+ :'invoice_number' => :'String',
64
+ :'purchase_order_number' => :'String',
65
+ :'recurring_type' => :'String',
66
+ :'installment_options' => :'InstallmentOptions',
67
+ :'mcc' => :'String',
68
+ :'dcc' => :'Dcc'
69
+ }
70
+ end
71
+
72
+ # Initializes the object
73
+ # @param [Hash] attributes Model attributes in the form of hash
74
+ def initialize(attributes = {})
75
+ return unless attributes.is_a?(Hash)
76
+
77
+ # convert string to symbol for hash key
78
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
79
+
80
+ if attributes.has_key?(:'referenceNumber')
81
+ self.reference_number = attributes[:'referenceNumber']
82
+ end
83
+
84
+ if attributes.has_key?(:'comments')
85
+ self.comments = attributes[:'comments']
86
+ end
87
+
88
+ if attributes.has_key?(:'dynamicMerchantName')
89
+ self.dynamic_merchant_name = attributes[:'dynamicMerchantName']
90
+ end
91
+
92
+ if attributes.has_key?(:'invoiceNumber')
93
+ self.invoice_number = attributes[:'invoiceNumber']
94
+ end
95
+
96
+ if attributes.has_key?(:'purchaseOrderNumber')
97
+ self.purchase_order_number = attributes[:'purchaseOrderNumber']
98
+ end
99
+
100
+ if attributes.has_key?(:'recurringType')
101
+ self.recurring_type = attributes[:'recurringType']
102
+ end
103
+
104
+ if attributes.has_key?(:'installmentOptions')
105
+ self.installment_options = attributes[:'installmentOptions']
106
+ end
107
+
108
+ if attributes.has_key?(:'mcc')
109
+ self.mcc = attributes[:'mcc']
110
+ end
111
+
112
+ if attributes.has_key?(:'dcc')
113
+ self.dcc = attributes[:'dcc']
114
+ end
115
+ end
116
+
117
+ # Show invalid properties with the reasons. Usually used together with valid?
118
+ # @return Array for valid properties with the reasons
119
+ def list_invalid_properties
120
+ invalid_properties = Array.new
121
+ if !@reference_number.nil? && @reference_number.to_s.length > 8
122
+ invalid_properties.push('invalid value for "reference_number", the character length must be smaller than or equal to 8.')
123
+ end
124
+
125
+ if !@comments.nil? && @comments.to_s.length > 1024
126
+ invalid_properties.push('invalid value for "comments", the character length must be smaller than or equal to 1024.')
127
+ end
128
+
129
+ if !@dynamic_merchant_name.nil? && @dynamic_merchant_name.to_s.length > 100
130
+ invalid_properties.push('invalid value for "dynamic_merchant_name", the character length must be smaller than or equal to 100.')
131
+ end
132
+
133
+ if !@invoice_number.nil? && @invoice_number.to_s.length > 48
134
+ invalid_properties.push('invalid value for "invoice_number", the character length must be smaller than or equal to 48.')
135
+ end
136
+
137
+ if !@purchase_order_number.nil? && @purchase_order_number.to_s.length > 128
138
+ invalid_properties.push('invalid value for "purchase_order_number", the character length must be smaller than or equal to 128.')
139
+ end
140
+
141
+ if !@mcc.nil? && @mcc.to_s.length > 4
142
+ invalid_properties.push('invalid value for "mcc", the character length must be smaller than or equal to 4.')
143
+ end
144
+
145
+ invalid_properties
146
+ end
147
+
148
+ # Check to see if the all the properties in the model are valid
149
+ # @return true if the model is valid
150
+ def valid?
151
+ return false if !@reference_number.nil? && @reference_number.to_s.length > 8
152
+ return false if !@comments.nil? && @comments.to_s.length > 1024
153
+ return false if !@dynamic_merchant_name.nil? && @dynamic_merchant_name.to_s.length > 100
154
+ return false if !@invoice_number.nil? && @invoice_number.to_s.length > 48
155
+ return false if !@purchase_order_number.nil? && @purchase_order_number.to_s.length > 128
156
+ return false if !@mcc.nil? && @mcc.to_s.length > 4
157
+ true
158
+ end
159
+
160
+ # Custom attribute writer method with validation
161
+ # @param [Object] reference_number Value to be assigned
162
+ def reference_number=(reference_number)
163
+ if !reference_number.nil? && reference_number.to_s.length > 8
164
+ fail ArgumentError, 'invalid value for "reference_number", the character length must be smaller than or equal to 8.'
165
+ end
166
+
167
+ @reference_number = reference_number
168
+ end
169
+
170
+ # Custom attribute writer method with validation
171
+ # @param [Object] comments Value to be assigned
172
+ def comments=(comments)
173
+ if !comments.nil? && comments.to_s.length > 1024
174
+ fail ArgumentError, 'invalid value for "comments", the character length must be smaller than or equal to 1024.'
175
+ end
176
+
177
+ @comments = comments
178
+ end
179
+
180
+ # Custom attribute writer method with validation
181
+ # @param [Object] dynamic_merchant_name Value to be assigned
182
+ def dynamic_merchant_name=(dynamic_merchant_name)
183
+ if !dynamic_merchant_name.nil? && dynamic_merchant_name.to_s.length > 100
184
+ fail ArgumentError, 'invalid value for "dynamic_merchant_name", the character length must be smaller than or equal to 100.'
185
+ end
186
+
187
+ @dynamic_merchant_name = dynamic_merchant_name
188
+ end
189
+
190
+ # Custom attribute writer method with validation
191
+ # @param [Object] invoice_number Value to be assigned
192
+ def invoice_number=(invoice_number)
193
+ if !invoice_number.nil? && invoice_number.to_s.length > 48
194
+ fail ArgumentError, 'invalid value for "invoice_number", the character length must be smaller than or equal to 48.'
195
+ end
196
+
197
+ @invoice_number = invoice_number
198
+ end
199
+
200
+ # Custom attribute writer method with validation
201
+ # @param [Object] purchase_order_number Value to be assigned
202
+ def purchase_order_number=(purchase_order_number)
203
+ if !purchase_order_number.nil? && purchase_order_number.to_s.length > 128
204
+ fail ArgumentError, 'invalid value for "purchase_order_number", the character length must be smaller than or equal to 128.'
205
+ end
206
+
207
+ @purchase_order_number = purchase_order_number
208
+ end
209
+
210
+ # Custom attribute writer method with validation
211
+ # @param [Object] mcc Value to be assigned
212
+ def mcc=(mcc)
213
+ if !mcc.nil? && mcc.to_s.length > 4
214
+ fail ArgumentError, 'invalid value for "mcc", the character length must be smaller than or equal to 4.'
215
+ end
216
+
217
+ @mcc = mcc
218
+ end
219
+
220
+ # Checks equality by comparing each attribute.
221
+ # @param [Object] Object to be compared
222
+ def ==(o)
223
+ return true if self.equal?(o)
224
+ self.class == o.class &&
225
+ reference_number == o.reference_number &&
226
+ comments == o.comments &&
227
+ dynamic_merchant_name == o.dynamic_merchant_name &&
228
+ invoice_number == o.invoice_number &&
229
+ purchase_order_number == o.purchase_order_number &&
230
+ recurring_type == o.recurring_type &&
231
+ installment_options == o.installment_options &&
232
+ mcc == o.mcc &&
233
+ dcc == o.dcc
234
+ end
235
+
236
+ # @see the `==` method
237
+ # @param [Object] Object to be compared
238
+ def eql?(o)
239
+ self == o
240
+ end
241
+
242
+ # Calculates hash code according to all attributes.
243
+ # @return [Fixnum] Hash code
244
+ def hash
245
+ [reference_number, comments, dynamic_merchant_name, invoice_number, purchase_order_number, recurring_type, installment_options, mcc, dcc].hash
246
+ end
247
+
248
+ # Builds the object from hash
249
+ # @param [Hash] attributes Model attributes in the form of hash
250
+ # @return [Object] Returns the model itself
251
+ def build_from_hash(attributes)
252
+ return nil unless attributes.is_a?(Hash)
253
+ self.class.openapi_types.each_pair do |key, type|
254
+ if type =~ /\AArray<(.*)>/i
255
+ # check to ensure the input is an array given that the the attribute
256
+ # is documented as an array but the input is not
257
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
258
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
259
+ end
260
+ elsif !attributes[self.class.attribute_map[key]].nil?
261
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
262
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
263
+ end
264
+
265
+ self
266
+ end
267
+
268
+ # Deserializes the data based on type
269
+ # @param string type Data type
270
+ # @param string value Value to be deserialized
271
+ # @return [Object] Deserialized data
272
+ def _deserialize(type, value)
273
+ case type.to_sym
274
+ when :DateTime
275
+ DateTime.parse(value)
276
+ when :Date
277
+ Date.parse(value)
278
+ when :String
279
+ value.to_s
280
+ when :Integer
281
+ value.to_i
282
+ when :Float
283
+ value.to_f
284
+ when :BOOLEAN
285
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
286
+ true
287
+ else
288
+ false
289
+ end
290
+ when :Object
291
+ # generic object (usually a Hash), return directly
292
+ value
293
+ when /\AArray<(?<inner_type>.+)>\z/
294
+ inner_type = Regexp.last_match[:inner_type]
295
+ value.map { |v| _deserialize(inner_type, v) }
296
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
297
+ k_type = Regexp.last_match[:k_type]
298
+ v_type = Regexp.last_match[:v_type]
299
+ {}.tap do |hash|
300
+ value.each do |k, v|
301
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
302
+ end
303
+ end
304
+ else # model
305
+ temp_model = OpenapiClient.const_get(type).new
306
+ temp_model.build_from_hash(value)
307
+ end
308
+ end
309
+
310
+ # Returns the string representation of the object
311
+ # @return [String] String presentation of the object
312
+ def to_s
313
+ to_hash.to_s
314
+ end
315
+
316
+ # to_body is an alias to to_hash (backward compatibility)
317
+ # @return [Hash] Returns the object in the form of hash
318
+ def to_body
319
+ to_hash
320
+ end
321
+
322
+ # Returns the object in the form of hash
323
+ # @return [Hash] Returns the object in the form of hash
324
+ def to_hash
325
+ hash = {}
326
+ self.class.attribute_map.each_pair do |attr, param|
327
+ value = self.send(attr)
328
+ next if value.nil?
329
+ hash[param] = _to_hash(value)
330
+ end
331
+ hash
332
+ end
333
+
334
+ # Outputs non-array value in the form of hash
335
+ # For object, use to_hash. Otherwise, just return the value
336
+ # @param [Object] value Any valid value
337
+ # @return [Hash] Returns the value in the form of hash
338
+ def _to_hash(value)
339
+ if value.is_a?(Array)
340
+ value.compact.map { |v| _to_hash(v) }
341
+ elsif value.is_a?(Hash)
342
+ {}.tap do |hash|
343
+ value.each { |k, v| hash[k] = _to_hash(v) }
344
+ end
345
+ elsif value.respond_to? :to_hash
346
+ value.to_hash
347
+ else
348
+ value
349
+ end
350
+ end
351
+ end
352
+ end