-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Payflow: add THREEDSVERSION and DSTRANSACTIONID when present #4075
Conversation
ea4e816
to
4f5b8a7
Compare
CHANGELOG
Outdated
@@ -55,6 +55,7 @@ | |||
* Payeezy: Add support for `add_soft_descriptors` [rachelkirk] #4069 | |||
* Stripe Payment Intents: Add support for network_transaction_id field [cdmackeyfree] #4060 | |||
* Worldpay: Support 'CAPTURED' response for authorize transactions [naashton] #4070 | |||
* Payflow: add THREEDSVERSION and DSTRANSACTIONID when present git push #4075 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
git push
? :)
Hello @dsmcclain @cdmackeyfree ! In Payflow: Define store method #4066, you managed to get only 8 remote test failures and, today, I get 10 failures on I am running
without changing the active_merchant/test/fixtures.yml Lines 722 to 726 in fd8e7be
Would you know what I am not doing properly? Do you still get only 8 failures? TY! |
- "frictionless" and "challenge required" were inverted, see https://docs.3dsecure.io/3dsv2/specification_210.html#attr-ARes-transStatus Y - Authentication/ Account Verification Successful C - Challenge Required; Additional authentication is required using the CReq/CRes
- Generalize `three_d_secure_option` and `assert_three_d_secure` test methods, in preparation for testing the version and DS transaction ID, in the next commit. - Group 3DS helper methods
fd8e7be
to
20e3238
Compare
Hello @bbraschi! I am now seeing 10 failing remote tests on The additional failures are
This indicates to me that there is a limit to the number of transactions or the frequency of transactions that can be performed using the same account data. If I change the value of the I don't believe the Payflow test environment requires you to use specific account numbers for testing ACH transactions, so I don't see any problem with changing that |
Schema received from PayPal: <element name = "BuyerAuthResult">
<complexType content = "elementOnly">
<sequence>
<element name = "Status" type = "BuyerAuthStatusEnum"/>
<element name = "AuthenticationId" type = "Base64Sha1StringType" minOccurs="0" maxOccurs="1"/>
<element name = "PAReq" type = "BuyerAuthMesgType" minOccurs="0" maxOccurs="1" />
<element name = "ACSUrl" type = "uriReference" minOccurs="0" maxOccurs="1" />
<element name = "ECI" type = "ECIType" minOccurs="0" maxOccurs="1" />
<element name = "CAVV" type = "Base64Sha1StringType" minOccurs="0" maxOccurs="1" />
<element name = "XID" type = "Base64Sha1StringType" minOccurs="0" maxOccurs="1" />
<element name = "DSTransactionID" type = "DSTransactionIDType" minOccurs="0" maxOccurs="1" />
<element name = "ThreeDSVersion" type = "ThreeDSVersionType" minOccurs="0" maxOccurs="1" />
<element name = "AuthenticationStatus" type = "BuyerAuthStatusEnum"/>
</sequence>
</complexType>
</element> |
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Note2: additional Rubocop fixes are introduced.:x Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Note2: additional Rubocop fixes are introduced.:x Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed
* Stripe: Add remote tests set up to avoid exceed the max external accounts limit Summary: ---------- This PR add the verification of number of external accounts created in stripe and delete accounts to avoid the error of maximum number of accounts exceeded Unit tests execution Finished in 13.744862 seconds. 5010 tests, 74852 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 364.50 tests/s, 5445.82 assertions/s Remote test execution remote_stripe_test.rb Finished in 200.632001 seconds. 74 tests, 339 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 0.37 tests/s, 1.69 assertions/s remote_stripe_payment_intents_test.rb Finished in 187.727749 seconds. 66 tests, 313 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 0.35 tests/s, 1.67 assertions/s Running RuboCop... Inspecting 725 files 725 files inspected, no offenses detected RuboCop: 725 files inspected, no offenses detected Closes #4239 * Stripe: Add support for `skip_radar_rules` Adds the option to pass `skip_radar_rules`, which allows a radar-enabled account to create Charges or Intents without applying any radar screening to the transaction. Also fixes a rubocop error and two date-specific test failures. CE-2234 725 files inspected, no offenses detected 5018 tests, 74825 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_stripe_test 75 tests, 342 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Loaded suite test/remote/gateways/remote_stripe_payment_intents_test 68 tests, 318 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * CyberSource: Add tax fields (#4251) Added `userPO`, `taxable`, `nationalTaxIndicator`, `taxAmount`, and `nationalTax` in the cyber source implementation. CE-2240 Remote: 101 tests, 520 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 94.0594% passed Unit: 5020 tests, 74836 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 725 files inspected, no offenses detected * Kushki: Add support for `metadata` CE-2246 Remote: 14 tests, 45 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 16 tests, 104 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Local: 5020 tests, 74837 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * IPG: Add redact Closes #4254 Added `redact` method in IPG implementation to delete vaulted payment method. CE-2283 Remote: 17 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 5021 tests, 74840 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 725 files inspected, no offenses detected * Wompi: Update sandbox and production endpoints CE-2276 Remote: 14 tests, 36 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 12 tests, 51 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Local: 5020 tests, 74836 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Orbital: Add SCA Merchant Initiated field (#4256) Added `sca_merchant_initiated` field in orbital implementation to support master card eci 7 to exempt from SCA when flag is set. CE-2236 Remote: 77 tests, 349 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 5022 tests, 74849 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 725 files inspected, no offenses detected * GlobalCollect: Update Production Endpoint (#4196) * GlobalCollect: Update Production Endpoint The production url for Ingenico (Global Collect) is https://world.api-ingenico.com. Currently, Ingenico redirects to the new url but it has been advised that we update the `live_url`. [Ingenico endpoints](https://epayments-api.developer-ingenico.com/s2sapi/v1/en_US/java/endpoints.html?paymentPlatform=ALL) CE-2116 Unit: 31 tests, 154 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 29 tests, 72 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.5517% passed * Cashnet: Transforms amounts into integers * PayTrace: Add unstore method Closes #4262 Added `unstore` method to redact store token in paytrace implementation along with its remote test. CE-2286 Remote: 27 tests, 69 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 5022 tests, 74849 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 725 files inspected, no offenses detected * Mundipagg: Fix unit test Closes #4263 Fixed unit test case for gateway id that was sending remote call to gateway in mundipagg implementation. CE-2206 Unit: 5022 tests, 74850 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 725 files inspected, no offenses detected Remote: 41 tests, 101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Decidir Plus: Add Gateway Adapter This is a PR to add the gateway adapter for Decidir Plus Things to note in this PR: * No auth/capture or void/cancel transactions * Payment Method's must be `stored` and the returned third party token will be used in combination with other card data in subsequent `purchase` and `refund` transactions * The reference token is comprised of the `stored` payment method's `id` (returned from Decidir+) and the `bin` of the payment method, separated by a pipe (`|`) * Authorization is handled by an `apikey` passed into the headers. Either the `public_key` for the tokenization endpoint or `private_key` for the rest * Some fields that are stubbed in with defaults ARE REQUIRED in order for the transaction to be successful (i.e., `purchase` will fail without `sub_payments` array) CE-2145 Unit: 6 tests, 20 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 8 tests, 27 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Add support for Apple Pay and Google Pay tokens to CheckoutV2Gateway Maintain default eci of 05 for vts NTs Closes #4235 Remote: 43 tests, 110 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 40 tests, 234 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Local: 5034 tests, 74935 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected * Decidir Plus: Update payment reference What changed? * Refactored purchase method to pass arguments to other methods that are responsible for appending the `post` hash with data for a `purchase` transaction * `token` and `bin` are parsed from a `payment` of String type instead of a `payment_id` in the `options` hash CE-2145 Unit: 6 tests, 20 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 8 tests, 27 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Paysafe: Update redact method -`redact` method changed to `unstore` CE-2285 Remote: 31 tests, 94 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 16 tests, 77 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Local: 5034 tests, 74935 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected * CyberSource: Add line_items for authorize method Added `line_items` field to be passed in for authorize method in cyber source implementation. CE-2240 Remote: 101 tests, 520 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 94.0594% passed Unit: 5023 tests, 74856 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 725 files inspected, no offenses detected Closes #4268 * CheckoutV2: Support processing channel and marketplace sub entity ID Closes #4236 * Elavon: `third_party_token` bug fix CE-2242 Line 301 in add_auth_purchase_params was causing an extra ssl_token field with a nil value to be added to the request. The changes remove the extra ssl_token, which has eliminated the invalid card errors. I’ve added some logic in the commit method and the authorization_from method to handle the third_party_token coming from the store call. Unit Tests: 47 tests, 243 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: 39 tests, 176 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 97.4359% passed test_successful_special_character_encoding_truncation(RemoteElavonTest) is failing currently on master and on my branch. (the remote test results have been a bit inconsistent for me yesterday and today) Local: 5035 tests, 74943 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Add metadata to network_tokenization_credit_card Some payment gateways require attributes that cannot currently be instantiated with network_tokenization_credit_card. For example - some gateways require deviceManufacturerIdentifer and paymentDataType to be passed in for apple pay which can now be stored in the metadata. * Use kwargs instead of hash in NetworkTokenizationCreditCardTest * Decidir Plus: Sub Payment Fields Add `sub_payment` fields to `purchase` transactions. This field needs to be set in the post body, regardless of whether or not it is populated with data. Fix country code for this gateway. CE-2145 Unit: 7 tests, 25 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 9 tests, 30 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Pin Payments: add unstore support Decidir Plus: Sub Payment Fields Add `sub_payment` fields to `purchase` transactions. This field needs to be set in the post body, regardless of whether or not it is populated with data. Fix country code for this gateway. CE-2145 Unit: 7 tests, 25 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 9 tests, 30 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Orbital: Add support for $0 verify SUMMARY Added verify with $0 amount into Orbital Gateway Discover card type does'nt support $0.00 auth instead use $1.00 Closes #4275 JIRA TICKET NUMBER GWI-71 UNIT TEST Finished in 0.661291 seconds. ----------------------------------------------------------------------------------------------------------------- 135 tests, 779 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed ------------------------------------------------------------------------------------------------------------------ 204.15 tests/s, 1178.00 assertions/s REMOTE TEST Finished in 211.728643 seconds. ----------------------------------------------------------------------------------------------------------------- 80 tests, 355 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed ----------------------------------------------------------------------------------------------------------------- 0.38 tests/s, 1.68 assertions/s RUBOCOP 726 files inspected, no offenses detected * Update AM inline documentation with all supported cardtypes Closes #4283 * PayWay: Update endpoints and response code * updated Production and test endpoint URLs (old ones are deprecated as of Jan 31st 2022 and just return aywayCode only for gateway_specific_response_field message field * Adds commit from https://github.com/DanAtPayway/active_merchant/pull/1/commits/b96319f41284faba982138d277688e3056141803 Loaded suite test/remote/gateways/remote_payway_dot_com_test 16 tests, 43 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Loaded suite test/unit/gateways/payway_dot_com_test 16 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed bundle exec rake test:local 5038 tests, 74959 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Running RuboCop... 728 files inspected, no offenses detected * CyberSource: Add line_item for purchase Closes #4282 Added `line_items` field to be passed in purchase method also for cyber source implementation. CE-2240 Unit: 5044 tests, 74980 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 101 tests, 520 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 94.0594% passed * Release v1.125.0 * GlobalCollect: Add support for Naranja and Cabal card types Also fixes an issue in the remote tests that caused intermittent failures. CE-2319 unit 5035 tests, 74943 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed rubocop 728 files inspected, no offenses detected remote Loaded suite test/remote/gateways/remote_global_collect_test 31 tests, 78 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed * PayFlow Pro: Add Stored Credentials Added support for `stored_credential` to allow recurring payments of cardholder and merchant in payflow pro implementation. CE-2244 Closes #4277 Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed Unit: 5036 tests, 74956 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected * Decidir Plus: Fraud Detection Fields Add support for fraud detection with Decidir Plus. This PR includes a method to add `fraud_detection` fields to the post body of a `purchase` transaction. The `csmdds` subfield of `fraud_detection` is expected to be given as an array of hashes with a `code` and `description` value. CE-2337 Unit: 8 tests, 30 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 10 tests, 33 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Orbital: Don't void $0 auths for Verify DESCRIPTION: Omit voiding the auths used for Verify if the amount is 0 JIRA TICKET NUMBER: GWI-71 UNIT TEST OUTPUT: Finished in 0.72229 seconds. 135 tests, 779 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 186.91 tests/s, 1078.51 assertions/s REMOTE TEST OUTPUT: Finished in 83.136148 seconds. ---------------------------------------------------------------------------------------------------------------------------- 80 tests, 355 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed ---------------------------------------------------------------------------------------------------------------------------- 0.96 tests/s, 4.27 assertions/s RUBOCOP OUTPUT: Inspecting 729 files 729 files inspected, no offenses detected * StripePI: Enable Apple Pay and Google Pay payment methods Summary: --------------------------------------- In order to add Apple Pay and Google Pay support to Stripe Payment Intents this commit enables the option to store those payment methods for use in the Payment Intent creation. GWI-50/52 Closes #4285 Local Tests: --------------------------------------- Finished in 0.058908 seconds. 37 tests, 190 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 313.834588 seconds. 74 tests, 329 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: --------------------------------------- 728 files inspected, no offenses detected * Fix prior commit and changelog PR reference * PaySafe: Update unstore method to support profile id Updated `unstore` method so that profile id can be sent from authorization in paysafe implementation. [CE-2285](https://spreedly.atlassian.net/browse/CE-2285) Unit: 5048 tests, 75003 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 31 tests, 94 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Closes #4282 * CyberSource: Add national tax indicator field Closes #4299 Added `national_tax_indicator` in purchase and authorize calls for cyber source implementation. CE-2338 Unit: 5050 tests, 75009 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 103 tests, 520 assertions, 7 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 93.2039% passed * Credorax: Update OpCode for Credit transactions Credit should now be using `O=35` instead of `O=6` CE-2235 Rubocop: 728 files inspected, no offenses detected Unit: 5038 tests, 74956 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 45 tests, 164 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Stripe PI: confirm_intent should have add_payment_method_types Stripe supports passing payment_method_types as an optional parameter for the `confirm_intent` endpoint. Adding this support allows for users to change the payment method on a transaction and attempt to complete it in one request. ECS-2193 Test Summary Local: 5048 tests, 75004 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 37 tests, 191 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 72 tests, 329 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Revert "Credorax: Update OpCode for Credit transactions" This reverts commit 13eccbd9f24a761abaecc9ecf7d36e1c1a420a62. Unit: 5050 tests, 75010 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: Loaded suite test/remote/gateways/remote_credorax_test 45 tests, 164 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * NMI: Update gateway credentials to accept security_key Summary ------------------------- Add security_key as a valid authentication value Description ------------------------- Nmi need to be able authenticate using uname/pwrod and also a security_key, because when customer use the onboarding API they cannot generate the uname and pwrod, they generate a security_key. they do not intend on deprecating Uname and Password any time in the future. JIRA ticket number ------------------------- GWI-75 Unit test ------------------------- Finished in 9.413358 seconds. 52 tests, 394 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 5.52 tests/s, 41.86 assertions/s Remote test ------------------------- Finished in 120.659157 seconds. 49 tests, 178 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 0.41 tests/s, 1.48 assertions/s Rubocop ------------------------- 729 files inspected, no offenses detected Closes #4302 * NMI: Small test fix Unit: 52 tests, 394 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Paysafe: Fix commit method for unstore operation closes #4303 Fixed commit method for `unstore` operation in paysafe implementation to parse the response correctly for empty strings. CE-2285 Unit: 5052 tests, 75017 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 31 tests, 94 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Update EBanx Integration to include `order_number` closes #4304 * BlueSnap: Add support for Idempotency Key Add the ability to optionally send Idempotency Key as a header on BlueSnap transactions. ECS-2343 Unit: 41 tests, 237 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 49 tests, 166 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Paymentez: Add verify order functionality Added verify order functionality to approve pending transaction to perform otp transaction flow in paymentez gateway. CE-1920 closes #4267 Unit: 5022 tests, 74850 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 725 files inspected, no offenses detected Remote: 32 tests, 68 assertions, 7 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 78.125% passed * BlueSnap: Update refund Updated `refund` method to include transaction id in its url for blue snap implementation CE-2351 closes #4307 * Decidir Plus: Fraud Detection Fields (#4284) Add support for fraud detection with Decidir Plus. This PR includes a method to add `fraud_detection` fields to the post body of a `purchase` transaction. The `csmdds` subfield of `fraud_detection` is expected to be given as an array of hashes with a `code` and `description` value. CE-2337 Unit: 8 tests, 30 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 10 tests, 33 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Co-authored-by: naashton <nashton@gmail.com> * Paymentez: Fix authorize for core (#4310) Fixed `authorize` to call `purchase` so that capture can be made on core for paymentez implementation. CE-1920 Remote: 33 tests, 83 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 87.8788% passed Unit: 5057 tests, 75059 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected On-behalf-of: Nicholas Ashton <nashton@gmail.com> * Orbital: refactor gateway adapter and indicate support for network tokenization CE-2332 Rubocop: 728 files inspected, no offenses detected Unit: 5061 tests, 75075 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 80 tests, 355 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * IPG: Remove Uruguay from supported countries (#4311) Removed `uruguay` from supported countries along with its currency code and test case changes in ipg implementation. CE-2374 Unit: 5057 tests, 75059 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 17 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Decidir: Add sub_payments sub-fields to gateway - Decidir already included sending an empty `sub_payments` hash with purchase transactions, but did not include appropriate sub-fields. The gateway adapter now includes the following sub-fields: `site_id`, `installments`, and `amount` as part of the `sub_payments` hash when provided. - Minor test file refactoring - 2 rubocop fixes for unrelated file CE-2361 Local: 5062 tests, 75078 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 38 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 24 tests, 84 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * DecidirPlus: Add `unstore` method Added `unstore` method along with its required changes in purchase to receive valid token in decidir plus implementation. CE-2144 Remote: 16 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 5064 tests, 75089 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected * Priority: Add additional fields to purchase and capture requests closes #4301 Rubocop: 728 files inspected, no offenses detected Unit Tests: 5061 tests, 75075 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: Loaded suite test/remote/gateways/remote_priority_test 20 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Decidir & Decidir Plus: Revise handling of sub_payment sub-fields The gateway expects the `sub_payments` sub-fields `installments` and `amount` to be integers instead of strings CE-2361 Local: 5063 tests, 75084 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Decidir Tests Unit: 38 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 24 tests, 84 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Decidir Plus Tests Unit: 11 tests, 44 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 15 tests, 51 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * DecidirPlus: Update unstore implementation Updated `unstore` implementation to get customer token as a params instead of authorization to support core functionality. CE-2144 Unit: 5064 tests, 75089 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 16 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Closes #4320 * GlobalCollect: Improve success criteria removes code comment replaces lost end statement removes outdated parameter to authorization_from/1 adds changelog commit remove changelog until merge removes conflict notation returns changelog * Revert "GlobalCollect: Improve success criteria" This reverts commit 64c7d2442b757a0578293e210de8216c3f9a58c9. * CyberSource: Add option for zero amount verify Summary: --------------------------------------- In order to be able to use $0 authorizations this commit add the gateway specific field "zero_amount_auth" as an option, so I can verify my customers Credit Cards, depeding on the acquirng bank, whithout making any charges to them. Local Tests: --------------------------------------- 115 tests, 562 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- 105 tests, 526 assertions, 7 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 93.3333% passed RuboCop: --------------------------------------- 728 files inspected, no offenses detected Closes #4313 * Decidir Plus: Improve response messaging Improve the quality of the `message` we return in the response from the gateway. These changes will account for a `status` of `rejected` and check for an error message returned in the `status_details` from Decidir Plus and will also account for `fraud_detection` responses CE-2387 Unit: 13 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 16 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * PayU Latam: Refactor/fix failing remote tests CE-586 This PR has some refactoring of the `message_from` method. It also updates several tests that were failing due to changes in the gateway's response. PayU Latam now supports `capture` so tests that were added by a previous contributor were uncommented out. Local: 5057 tests, 75059 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 38 tests, 101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 37 tests, 146 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Adyen: Add currencies with three decimals places Summary: --------------------------------------- In order to add currencies with three decimal places, this commit include for currencies_with_three_decimal_places: Bahraini Dinar, Iraqi Dinar, Jordanian Dinar, Kuwaiti Dinar, Libyan Dinar, Rial Omani, and Tunisian Dinar. Local Tests: --------------------------------------- 90 tests, 464 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Note: This need an Spreedly member with an IP added to the whitelist for testing. RuboCop: 728 files inspected, no offenses detected Closes #4322 * parent 5931f624cdc3881dc5344fe24407f14daacebc24 author David Perry <dperry@spreedly.com> 1571318981 -0400 committer Peter Oas <oas.peter@gmail.com> 1645031358 -0500 GlobalCollect: Improve success criteria Test Summary: Local: 5069 tests, 75103 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 33 tests, 158 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 33 tests, 86 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.9697% passed Note: the failing test in the remote tests is `test_successful_purchase_with_installments(RemoteGlobalCollectTest)` which is unrelated to the success criteria refactored by this commit. Co-authored-by: David Perry <curiousepic@gmail.com> update changelog * Priority Payment Systems - Clean up/refactor gateway file and tests - Refactor gateway file to follow field naming standards with snake_case and add conditional logic - Revise variables in test files to match snake_case formatting Local: 5066 tests, 75095 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 11 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 20 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Closes #4327 * SafeCharge: Change Verify to send 0 amount Also updates tests to reflect new `verify` flow. CE-190 Rubocop: 728 files inspected, no offenses detected Unit: 5068 tests, 75098 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_safe_charge_test 30 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * DLocal: Add support for `force_type` field CE-2421 Rubocop: 728 files inspected, no offenses detected Unit: 5069 tests, 75101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_d_local_test 29 tests, 76 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.5517% passed * Barclaycard SmartPay: Support more nonstandard currencies Summary: This PR updates the currencies fractions list Test Execution: Finished in 92.308372 seconds. 38 tests, 90 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.8421% passed Failures not related with the code update, pending to the audit work on this gateway to fix RuboCop: 728 files inspected, no offenses detected Closes #4335 * Decidir Plus: `name_override` option on `store` Add support to override the payment method name value with one given in the options hash. CE-2149 Unit: 1 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 17 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Stripe PI: test shipping address (#4344) Tested shipping address field to be passed in to the stripe pi gateway. CE-2425 Remote: 73 tests, 327 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 94.5205% passed Unit: 5070 tests, 75113 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected * Priority: Update `add_purchases_data` method The `add_purchases_data` method tried to call `empty?` on the options hash. When the `:purchases` key was unavailable `empty?` was called on a `nil` value which returned a no method error. This fix avoids the no method error by using an `unless` statement to check that the options key exists CE-2443 Local: 5070 tests, 75114 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 11 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 20 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Stripe PI: Update `shipping` to `shipping_address` Updated field name from `shipping` to `shipping_address` to make it consistent with other gateways. CE-2425 Unit: 5070 tests, 75114 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 74 tests, 319 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 91.8919% passed Closes #4347 * DecidirPlus: Handle `payment_method_id` by `card_brand` Determine `payment_method_id` based on `card_brand` passed in the options hash for auth and purchase transactions CE-2424 Unit: 13 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote0: 17 tests, 58 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * DecidirPlus: `debit` and `payment_method_id` fields Add support for `debit` and `payment_method_id` gateway fields. Decidir+ requires that transactions after `store` need to contain a `payment_method_id` that corresponds to the `payment_method` tokenized on the initial `store` call. `payment_method_id`'s are also different for debit and credit cards, so the `debit` option allows for users to pass that value manually. CE-2424 Unit: 13 tests, 55 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 22 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Adds Application ID to Adyen Gateway * Priority: Add support for `replay_id` field `replay_id` can be thought of like an `idempotency_key`. When `replay_id` is sent the expected behavior is that if the gateway can find a duplicate `replay_id` attached to previous transaction they return that original response. This only works with `purchase` and `authorize`. `void` and `refund` should be sent w/ out `replay_id`. CE-2403 Local: 5072 tests, 75128 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 13 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Moneris: ensure all remote tests pass Prior to this change, only 97% of tests passed. Requirements: - Ensure your `fixtures.yml` uses `store5/yesguy` from [Testing a Solution](https://developer.moneris.com/More/Testing/Testing%20a%20Solution) document ECS-1882 Unit: 51 tests, 274 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 40 tests, 212 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Stripe PI: standardize shipping_address fields CE-2467 Rubocop: 728 files inspected, no offenses detected Unit: 5073 tests, 75132 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_stripe_payment_intents_test 74 tests, 337 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Airwallex: Support gateway * Addition of invalid_amount attributed to amount_too_small error from Stripe * Litle: Translate google_pay as android_pay Description ------------------------- We need unify the source as :android_pay if the network token is google_pay or android_pay JIRA ticket number ------------------------- GWI-96 Unit test ------------------------- Finished in 0.137911 seconds. 54 tests, 230 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 391.56 tests/s, 1667.74 assertions/s Remote test ------------------------- Finished in 35.502618 seconds. 50 tests, 209 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74% passed 1.41 tests/s, 5.89 assertions/s Rubocop ------------------------- 729 files inspected, no offenses detected Closes #4331 * Payflow Pro: Add 3DS Support This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed * Payflow Pro: Add 3DS Support This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - #3362 - #4075 - #4113 - #4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed * Litle: Update schema version to 12.3 and test correction Summary: This PR updates the used schema to the latest version available according to the docs on https://vantiv.github.io/latest-versions/ Test Execution: Finished in 38.911867 seconds. 50 tests, 227 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 92% passed Several failing tests corrected according to docs in the following pages: https://vantiv.github.io/sandbox/#howItWorks https://developer.worldpay.com/assets/pdf/us-ecom-pdf/Worldpay_eComm_cnpAPI_Reference_Guide_APIV12.12_V2.16.pdf RuboCop: 728 files inspected, no offenses detected Closes #4340 * Braintree: Add ACH support for store Summary: ------------------------------ This commit modifies the store method to add support for bank accounts in order to enable ACH transactions on purchases, for that is needed an extra work to simulate the tokenization flow that Braintree enables for the front-end libraries to create token-nonces for payment methods. This nonce is a requirement to store the bank account and set a flag to require a verification via network checking. Test Execution: ------------------------------ Remote: Finished in 261.78288 seconds. 97 tests, 525 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: Finished in 16.583145 seconds. 5045 tests, 74984 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop ------------------------------ Inspecting 730 files 730 files inspected, no offenses detected Closes #4285 * Revert "Litle: Update schema version to 12.3 and test correction" This reverts commit 75f9272c3acdf15d4b872a1bc97a9b11a53601a1. Reverting due to an unknown issue causing failures at Litle. * Small Rubocop Fixes Fixes a few linting errors Unit: 5100 tests, 75255 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 733 files inspected, no offenses detected * Added Simetrik gateway and tests Closes #4339 Rubocop: 736 files inspected, no offenses detected Unit: 5112 tests, 75337 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_simetrik_test 12 tests, 61 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * EBANX: Change amount for Mexico and Chile Merchants using Ebanx are seeing transactions being denied at the card verify flow due to the minimum amount expected in this type of transaction. Increase the value to be accepted by the acquirers in the card verify flow. When using local currencies we end up doing the verify using the local currency, and in those cases 100 may be less than the minimum value for a valid transaction in some countries. Remote: 26 tests, 70 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.1538% passed Unit: 5069 tests, 75101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Closes #4337 * DecidirPlus: Add new fields (#4361) Added decidir plus additional fields: `establishment_name`, `aggregate_data`, `sub_payments`, `card_holder_identification_type`, `card_holder_identification_number`, `card_door_number`, `card_holder_birthday`. CE-2485 Remote: 25 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 5115 tests, 75352 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected * DecidirPlus: Update `error_code` method (#4364) Updated `error_code_from` method to contain reason id in the error code response. CE-2490 Unit: 5113 tests, 75341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected Remote: 23 tests, 77 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Dlocal: Add three_ds mpi support Summary: ------------------------------ This PR adds support for third party three ds authentication data on the DLocal gateway. Test Execution: ------------------------------ Remote Finished in 19.797433 seconds. 31 tests, 79 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 93.5484% passed Unit Finished in 30.997677 seconds. 5076 tests, 75140 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 728 files inspected, no offenses detected Closes #4345 * Stripe PI: add request_three_d_secure to setup_intent ECS-2391 Merchants that want to trigger 3DS flows manually use the `request_three_d_secure` field when creating an intent to do that. This was already added to `create_intent`, this commit adds it to the `create_setup_intent` as well. Test Summary Local: 5123 tests, 75395 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 39 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 75 tests, 353 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Adyen: Add custom amount for `verify` (#4369) Added custom amount field `verify_amount` for verify action in adyen gateway implementation. CE-2483 Remote: 122 tests, 438 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98.3607% passed Unit: 5124 tests, 75400 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected * * Stripe PI: Pass options for tokenizing Apple/Google Pay Previously, we were not including the full options when making a tokenization call for Apple and Google Pay, meaning that connected/ destination account info was not being included in the tokenization process. This change now supplies the full options has to that call. Local Tests: --------------------------------------- 39 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- 76 tests, 341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: --------------------------------------- 736 files inspected, no offenses detected Closes #4368 * Dlocal: Format 3DS mpi enrollment data correctly Summary: ------------------------------ This corrects the formatting of the enrollment response data when passing 3DS MPI data. Test Execution: ------------------------------ Remote (1 unrelated failure) 31 tests, 80 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed Unit 32 tests, 142 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 728 files inspected, no offenses detected * Airwallex: QA * Moneris: Add 3DS MPI Fields Support The field names, test values and logic parsing follow the guides available in Moneri's [About 3D Secure 2.0](https://developer.moneris.com/livedemo/3ds2/reference/guide/php) guides. **Caveats** ==== The available magic test data do not make it possible to trigger reliable fail-scenarios for MPI-driven authentications. ECS-1882 --- Test Summary Note: failing tests are same ones as in `master` branch Local: 5125 tests, 75361 assertions, 0 failures, 17 errors, 0 pendings, 0 omissions, 0 notifications 99.6683% passed Unit: 53 tests, 284 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 44 tests, 223 assertions, 0 failures, 0 errors, 0 pendings, 1 omissions, 0 notifications 100% passed * Duplicate(concat) Address sent - card_connect is concat. address1 and 2 causing a AVS error (#4362) Co-authored-by: Nicholas Ashton <nashton@gmail.com> * Cybersource: Removes Pinless Debit Transaction Functionality and Testing Local: 5123 tests, 75396 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 114 tests, 554 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 104 tests, 528 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.1538% passed * Litle: Add support for Level 2 and 3 enhanced data ------ Summary: This PR includes the enhanced data to enable level 2 and 3 data support in this gateway Test Execution: ------- Finished in 37.183788 seconds. 54 tests, 221 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 75.9259% passed Failing tests are not related to this requirement RuboCop: 736 files inspected, no offenses detected Closes #4360 * Rapyd: Add gateway support - To note: the gateway doesn’t support void transactions for card payment methods, they must be run as refunds - The gateway does not accept a refund unless the original transaction has been completed/closed/captured. Due to this, the verify method has to run a purchase and then a refund as opposed to the standard authorize and void - Stylistic refactoring and cleaning up of some redundant code CE-2394 Local: 5127 tests, 75381 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 15 tests, 44 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 19 tests, 51 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Cybersource: Removes Pinless Debit Transaction Functionality and Testing Local: 5129 tests, 75429 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 114 tests, 554 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Note: `test_successful_asynchronous_adjust` needs test creds where async adjust is enabled to succeed. Remote: 104 tests, 533 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 99.0385% passed * Airwallex: trap error when payment intent fails; send address correctly * Airwallex: Add `descriptor` field; update logic for sending `request_id` and `merchant_order_id` CE-2530 Rubocop: 739 files inspected, no offenses detected Unit: 5145 tests, 75476 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications Remote: Loaded suite test/remote/gateways/remote_airwallex_test 18 tests, 46 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications * Visanet Peru: use timestamp for purchase number Unit: 16 tests, 96 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 18 tests, 27 assertions, 16 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 11.1111% passed CE-1846 * Adyen: Fix `error_code_from` for unknown errors Updated `error_code_from` to respond with default gateway error code in case error is not listed in `STANDARD_ERROR_CODE_MAPPING`. CE-2512 Closes #4381 Remote: 123 tests, 440 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98.374% passed Unit: 5146 tests, 75480 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected * Orbital: Add `tandem` support in orbital Added support for tandem implementation in orbital and test case coverage. CE-2432 Closes #4376 * Credorax: Add `recipient` fields Added `recipient_street_address`, `recipient_city`, `recipient_province_code`, and `recipient_country_code` fields to pass recipient information for refund operation. CE-2500 Unit: 5148 tests, 75508 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Remote: 46 tests, 157 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.9565% passed Closes #4384 * Airwallex: Add Stored Credential support CE-2300 Unit: 28 tests, 105 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 22 tests, 50 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Rapyd: Add `metadata` and `ewallet_id` options Add support to pass `metadata` on `purchase`, `authorize`, and `refund` transactions and `ewallet_id` on `purchase` and `authorize` transactions. `metadata` can contain any collection of data so long as it is a json object. CE-2396 Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 21 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Priority: Refactor gateway integration, add additional fields to request CE-2491 Rubocop: 739 files inspected, no offenses dtected Unit: 5159 tests, 75564 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passede * Rapyd: Update `type` option to `pm_type` Field name change to `pm_type` to be more specific CE-2396 Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 21 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Priority: Update `verify` method signature Adds the unusued `options` argument to the `verify` method so that the method accepts two arguments, according to ActiveMerchant standards. Rubocop: 739 files inspected, no offenses detected Unit: 5159 tests, 75564 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Conekta: Fix remote test Description ------------------------- We need to check if all remote test are passing successfully Updating test cards' year and removing unusual test JIRA ticket number ------------------------- GWI-141 Unit test ------------------------- Finished in 0.011947 seconds. 13 tests, 85 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 1088.14 tests/s, 7114.76 assertions/s Remote test ------------------------- Finished in 54.175181 seconds. 15 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 0.28 tests/s, 1.03 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Closes #4386 * Priority: add `settled` and `voided` to list of successful response statuses Rubocop: 739 files inspected, no offenses dtected Unit: 5161 tests, 75570 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passede * NMI: Update post URL Summary: This PR updates the url of NMI to the most recent url according to the docs up to date Test Execution: Unit test Finished in 8.867635 seconds. 52 tests, 394 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 95.969518 seconds. 49 tests, 178 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: 739 files inspected, no offenses detected Closes #4380 * Multiple Gateways: Resolve `when/case` bug CE-2541 There is a bug in the `case` statements where we are attempting to resolve it conditionally with an `||`, but `case` takes a single value or list of values Unit: BluePay: 30 tests, 142 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Paysafe: 16 tests, 77 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 40 tests, 236 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: CheckoutV2: 43 tests, 110 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed BluePay: 19 tests, 90 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Paysafe: 31 tests, 94 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Airwallex: Add 3DS Global Support Add support for Spreedly's 3DS Global Solution. One notable distinction is that Airwallex only supports three digit 3DS versions. Versions returned from the MPI are formatted to meet that requirement. Ex: 2.0 => 2.0.0 CE-2301 Unit: 31 tests, 130 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 3 unrelated tests failing 25 tests, 56 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 88% passed * Add Cartes Bancaires bin ranges (#4398) Add bin ranges so that we can identify the French card brand Cartes Bancaires * Release v1.126.0 (#4402) * Airwallex: Add support for `original_transaction_id` The `original_transaction_id` field allows users to manually override the `network_transaction_id`. This is useful when testing MITs using Stored Credentials on Airwallex because they only allow specific values to be passed which they do not return, and would normally be passed automatically in a standard MIT Stored Credentials flow. This PR also cleans up remote and unit tests for Airwallex stored creds. CE-2560 Unit: 33 tests, 176 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 27 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Securion Pay: Pass external 3DS data Summary: ------------------------------ This PR includes the fields and logic required to send external 3ds data in SecurionPay transactions. Test Execution: ------------------------------ Unit test Finished in 0.033598 seconds. 33 tests, 188 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 30.68658 seconds. 27 tests, 91 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 81.4815% passed Failures not related with the added code RuboCop: ------------------------------ 739 files inspected, no offenses detected * Airwallex: Update Stored Credential testing Airwallex requires specific NTID values in order to test the full Stored Credential flow from CIT auth to MIT purchase. These values are now automatically populated based on card `brand`. This PR also removes the `original_transaction_id` GSF. CE-2593 Unit: 33 tests, 176 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 26 tests, 61 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed * Simetrik: Fix integer and float types CE-2407 This PR does some refactoring and updates some value types that were being passed incorrectly. The scrub method has also been updated. Remote Tests: 12 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit Tests: 12 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Local Tests: 5167 tests, 75646 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: 739 files inspected, no offenses detected * Monei: add cardholderName field Monei's sandbox does not care if this field gets passed or not, but its omission will cause failures in production. CE-2562 Rubocop: 739 files inspected, no offenses detected Unit: 5174 tests, 75676 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Co-authored-by: Johan Herrera <jherrera@spreedly.com> Co-authored-by: Dylan McClain <dylan.mcclain@gmail.com> Co-authored-by: ajawadmirza <73054822+ajawadmirza@users.noreply.github.com> Co-authored-by: Rachel Kirk <rachel.elizabeth.kirk@gmail.com> Co-authored-by: ajawadmirza <Abdul.Razzaque@visionetsystems.com> Co-authored-by: Nicholas Ashton <nashton@gmail.com> Co-authored-by: Peter Oas <oas.peter@gmail.com> Co-authored-by: AMHOL <andyholland1991@aol.com> Co-authored-by: Mo O'Connor <mo@spreedly.com> Co-authored-by: Mark Sim <mark.sim@shopify.com> Co-authored-by: Chris Kruger <montdidier@users.noreply.github.com> Co-authored-by: Javier Pedroza <jpedroza@spreedly.com> Co-authored-by: Ali Hassan Mirza <ali.hassan.mirzaa+100@gmail.com> Co-authored-by: Jessi <59324139+jessiagee@users.noreply.github.com> Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010562.local> Co-authored-by: David Perry <dperry@spreedly.com> Co-authored-by: aenand <aenand@spreedly.com> Co-authored-by: drkjc <derek@spreedly.com> Co-authored-by: priorityspreedly <98357113+priorityspreedly@users.noreply.github.com> Co-authored-by: Esmit Perez <esmit@spreedly.com> Co-authored-by: Ruthan <ruthan@spreedly.com> Co-authored-by: David Little <david.little@shopify.com> Co-authored-by: cristian <Heavyblade@users.noreply.github.com> Co-authored-by: Felipe Velásquez Montoya <felipe.velasquez.montoya@simetrik.com> Co-authored-by: Flávia Monique <flacorsi@gmail.com> Co-authored-by: Leah Riffell <34531014+leahriffell@users.noreply.github.com>
Summary: --------------------------------------- In order to be able to use $0 authorizations this commit add the gateway specific field "zero_amount_auth" as an option, so I can verify my customers Credit Cards, depeding on the acquirng bank, whithout making any charges to them. Local Tests: --------------------------------------- 115 tests, 562 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- 105 tests, 526 assertions, 7 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 93.3333% passed RuboCop: --------------------------------------- 728 files inspected, no offenses detected Closes activemerchant#4313 Decidir Plus: Improve response messaging Improve the quality of the `message` we return in the response from the gateway. These changes will account for a `status` of `rejected` and check for an error message returned in the `status_details` from Decidir Plus and will also account for `fraud_detection` responses CE-2387 Unit: 13 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 16 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed PayU Latam: Refactor/fix failing remote tests CE-586 This PR has some refactoring of the `message_from` method. It also updates several tests that were failing due to changes in the gateway's response. PayU Latam now supports `capture` so tests that were added by a previous contributor were uncommented out. Local: 5057 tests, 75059 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 38 tests, 101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 37 tests, 146 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adyen: Add currencies with three decimals places Summary: --------------------------------------- In order to add currencies with three decimal places, this commit include for currencies_with_three_decimal_places: Bahraini Dinar, Iraqi Dinar, Jordanian Dinar, Kuwaiti Dinar, Libyan Dinar, Rial Omani, and Tunisian Dinar. Local Tests: --------------------------------------- 90 tests, 464 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Note: This need an Spreedly member with an IP added to the whitelist for testing. RuboCop: 728 files inspected, no offenses detected Closes activemerchant#4322 parent 5931f62 author David Perry <dperry@spreedly.com> 1571318981 -0400 committer Peter Oas <oas.peter@gmail.com> 1645031358 -0500 GlobalCollect: Improve success criteria Test Summary: Local: 5069 tests, 75103 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 33 tests, 158 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 33 tests, 86 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.9697% passed Note: the failing test in the remote tests is `test_successful_purchase_with_installments(RemoteGlobalCollectTest)` which is unrelated to the success criteria refactored by this commit. Co-authored-by: David Perry <curiousepic@gmail.com> update changelog Priority Payment Systems - Clean up/refactor gateway file and tests - Refactor gateway file to follow field naming standards with snake_case and add conditional logic - Revise variables in test files to match snake_case formatting Local: 5066 tests, 75095 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 11 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 20 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Closes activemerchant#4327 SafeCharge: Change Verify to send 0 amount Also updates tests to reflect new `verify` flow. CE-190 Rubocop: 728 files inspected, no offenses detected Unit: 5068 tests, 75098 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_safe_charge_test 30 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed DLocal: Add support for `force_type` field CE-2421 Rubocop: 728 files inspected, no offenses detected Unit: 5069 tests, 75101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_d_local_test 29 tests, 76 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.5517% passed Barclaycard SmartPay: Support more nonstandard currencies Summary: This PR updates the currencies fractions list Test Execution: Finished in 92.308372 seconds. 38 tests, 90 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.8421% passed Failures not related with the code update, pending to the audit work on this gateway to fix RuboCop: 728 files inspected, no offenses detected Closes activemerchant#4335 Decidir Plus: `name_override` option on `store` Add support to override the payment method name value with one given in the options hash. CE-2149 Unit: 1 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 17 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Stripe PI: test shipping address (activemerchant#4344) Tested shipping address field to be passed in to the stripe pi gateway. CE-2425 Remote: 73 tests, 327 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 94.5205% passed Unit: 5070 tests, 75113 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Priority: Update `add_purchases_data` method The `add_purchases_data` method tried to call `empty?` on the options hash. When the `:purchases` key was unavailable `empty?` was called on a `nil` value which returned a no method error. This fix avoids the no method error by using an `unless` statement to check that the options key exists CE-2443 Local: 5070 tests, 75114 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 11 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 20 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Stripe PI: Update `shipping` to `shipping_address` Updated field name from `shipping` to `shipping_address` to make it consistent with other gateways. CE-2425 Unit: 5070 tests, 75114 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 74 tests, 319 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 91.8919% passed Closes activemerchant#4347 DecidirPlus: Handle `payment_method_id` by `card_brand` Determine `payment_method_id` based on `card_brand` passed in the options hash for auth and purchase transactions CE-2424 Unit: 13 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote0: 17 tests, 58 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed DecidirPlus: `debit` and `payment_method_id` fields Add support for `debit` and `payment_method_id` gateway fields. Decidir+ requires that transactions after `store` need to contain a `payment_method_id` that corresponds to the `payment_method` tokenized on the initial `store` call. `payment_method_id`'s are also different for debit and credit cards, so the `debit` option allows for users to pass that value manually. CE-2424 Unit: 13 tests, 55 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 22 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adds Application ID to Adyen Gateway Priority: Add support for `replay_id` field `replay_id` can be thought of like an `idempotency_key`. When `replay_id` is sent the expected behavior is that if the gateway can find a duplicate `replay_id` attached to previous transaction they return that original response. This only works with `purchase` and `authorize`. `void` and `refund` should be sent w/ out `replay_id`. CE-2403 Local: 5072 tests, 75128 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 13 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Moneris: ensure all remote tests pass Prior to this change, only 97% of tests passed. Requirements: - Ensure your `fixtures.yml` uses `store5/yesguy` from [Testing a Solution](https://developer.moneris.com/More/Testing/Testing%20a%20Solution) document ECS-1882 Unit: 51 tests, 274 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 40 tests, 212 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Stripe PI: standardize shipping_address fields CE-2467 Rubocop: 728 files inspected, no offenses detected Unit: 5073 tests, 75132 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_stripe_payment_intents_test 74 tests, 337 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Airwallex: Support gateway Addition of invalid_amount attributed to amount_too_small error from Stripe Litle: Translate google_pay as android_pay Description ------------------------- We need unify the source as :android_pay if the network token is google_pay or android_pay JIRA ticket number ------------------------- GWI-96 Unit test ------------------------- Finished in 0.137911 seconds. 54 tests, 230 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 391.56 tests/s, 1667.74 assertions/s Remote test ------------------------- Finished in 35.502618 seconds. 50 tests, 209 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74% passed 1.41 tests/s, 5.89 assertions/s Rubocop ------------------------- 729 files inspected, no offenses detected Closes activemerchant#4331 Payflow Pro: Add 3DS Support This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - activemerchant#3362 - activemerchant#4075 - activemerchant#4113 - activemerchant#4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed Payflow Pro: Add 3DS Support This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - activemerchant#3362 - activemerchant#4075 - activemerchant#4113 - activemerchant#4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed Litle: Update schema version to 12.3 and test correction Summary: This PR updates the used schema to the latest version available according to the docs on https://vantiv.github.io/latest-versions/ Test Execution: Finished in 38.911867 seconds. 50 tests, 227 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 92% passed Several failing tests corrected according to docs in the following pages: https://vantiv.github.io/sandbox/#howItWorks https://developer.worldpay.com/assets/pdf/us-ecom-pdf/Worldpay_eComm_cnpAPI_Reference_Guide_APIV12.12_V2.16.pdf RuboCop: 728 files inspected, no offenses detected Closes activemerchant#4340 Braintree: Add ACH support for store Summary: ------------------------------ This commit modifies the store method to add support for bank accounts in order to enable ACH transactions on purchases, for that is needed an extra work to simulate the tokenization flow that Braintree enables for the front-end libraries to create token-nonces for payment methods. This nonce is a requirement to store the bank account and set a flag to require a verification via network checking. Test Execution: ------------------------------ Remote: Finished in 261.78288 seconds. 97 tests, 525 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: Finished in 16.583145 seconds. 5045 tests, 74984 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop ------------------------------ Inspecting 730 files 730 files inspected, no offenses detected Closes activemerchant#4285 Revert "Litle: Update schema version to 12.3 and test correction" This reverts commit 75f9272. Reverting due to an unknown issue causing failures at Litle. Small Rubocop Fixes Fixes a few linting errors Unit: 5100 tests, 75255 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 733 files inspected, no offenses detected Added Simetrik gateway and tests Closes activemerchant#4339 Rubocop: 736 files inspected, no offenses detected Unit: 5112 tests, 75337 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_simetrik_test 12 tests, 61 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed EBANX: Change amount for Mexico and Chile Merchants using Ebanx are seeing transactions being denied at the card verify flow due to the minimum amount expected in this type of transaction. Increase the value to be accepted by the acquirers in the card verify flow. When using local currencies we end up doing the verify using the local currency, and in those cases 100 may be less than the minimum value for a valid transaction in some countries. Remote: 26 tests, 70 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.1538% passed Unit: 5069 tests, 75101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Closes activemerchant#4337 DecidirPlus: Add new fields (activemerchant#4361) Added decidir plus additional fields: `establishment_name`, `aggregate_data`, `sub_payments`, `card_holder_identification_type`, `card_holder_identification_number`, `card_door_number`, `card_holder_birthday`. CE-2485 Remote: 25 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 5115 tests, 75352 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected DecidirPlus: Update `error_code` method (activemerchant#4364) Updated `error_code_from` method to contain reason id in the error code response. CE-2490 Unit: 5113 tests, 75341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected Remote: 23 tests, 77 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Dlocal: Add three_ds mpi support Summary: ------------------------------ This PR adds support for third party three ds authentication data on the DLocal gateway. Test Execution: ------------------------------ Remote Finished in 19.797433 seconds. 31 tests, 79 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 93.5484% passed Unit Finished in 30.997677 seconds. 5076 tests, 75140 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 728 files inspected, no offenses detected Closes activemerchant#4345 Stripe PI: add request_three_d_secure to setup_intent ECS-2391 Merchants that want to trigger 3DS flows manually use the `request_three_d_secure` field when creating an intent to do that. This was already added to `create_intent`, this commit adds it to the `create_setup_intent` as well. Test Summary Local: 5123 tests, 75395 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 39 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 75 tests, 353 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adyen: Add custom amount for `verify` (activemerchant#4369) Added custom amount field `verify_amount` for verify action in adyen gateway implementation. CE-2483 Remote: 122 tests, 438 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98.3607% passed Unit: 5124 tests, 75400 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected * Stripe PI: Pass options for tokenizing Apple/Google Pay Previously, we were not including the full options when making a tokenization call for Apple and Google Pay, meaning that connected/ destination account info was not being included in the tokenization process. This change now supplies the full options has to that call. Local Tests: --------------------------------------- 39 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- 76 tests, 341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: --------------------------------------- 736 files inspected, no offenses detected Closes activemerchant#4368 Dlocal: Format 3DS mpi enrollment data correctly Summary: ------------------------------ This corrects the formatting of the enrollment response data when passing 3DS MPI data. Test Execution: ------------------------------ Remote (1 unrelated failure) 31 tests, 80 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed Unit 32 tests, 142 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 728 files inspected, no offenses detected Airwallex: QA Moneris: Add 3DS MPI Fields Support The field names, test values and logic parsing follow the guides available in Moneri's [About 3D Secure 2.0](https://developer.moneris.com/livedemo/3ds2/reference/guide/php) guides. **Caveats** ==== The available magic test data do not make it possible to trigger reliable fail-scenarios for MPI-driven authentications. ECS-1882 --- Test Summary Note: failing tests are same ones as in `master` branch Local: 5125 tests, 75361 assertions, 0 failures, 17 errors, 0 pendings, 0 omissions, 0 notifications 99.6683% passed Unit: 53 tests, 284 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 44 tests, 223 assertions, 0 failures, 0 errors, 0 pendings, 1 omissions, 0 notifications 100% passed Duplicate(concat) Address sent - card_connect is concat. address1 and 2 causing a AVS error (activemerchant#4362) Co-authored-by: Nicholas Ashton <nashton@gmail.com> Cybersource: Removes Pinless Debit Transaction Functionality and Testing Local: 5123 tests, 75396 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 114 tests, 554 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 104 tests, 528 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.1538% passed Litle: Add support for Level 2 and 3 enhanced data ------ Summary: This PR includes the enhanced data to enable level 2 and 3 data support in this gateway Test Execution: ------- Finished in 37.183788 seconds. 54 tests, 221 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 75.9259% passed Failing tests are not related to this requirement RuboCop: 736 files inspected, no offenses detected Closes activemerchant#4360 Rapyd: Add gateway support - To note: the gateway doesn’t support void transactions for card payment methods, they must be run as refunds - The gateway does not accept a refund unless the original transaction has been completed/closed/captured. Due to this, the verify method has to run a purchase and then a refund as opposed to the standard authorize and void - Stylistic refactoring and cleaning up of some redundant code CE-2394 Local: 5127 tests, 75381 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 15 tests, 44 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 19 tests, 51 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Cybersource: Removes Pinless Debit Transaction Functionality and Testing Local: 5129 tests, 75429 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 114 tests, 554 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Note: `test_successful_asynchronous_adjust` needs test creds where async adjust is enabled to succeed. Remote: 104 tests, 533 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 99.0385% passed Airwallex: trap error when payment intent fails; send address correctly Airwallex: Add `descriptor` field; update logic for sending `request_id` and `merchant_order_id` CE-2530 Rubocop: 739 files inspected, no offenses detected Unit: 5145 tests, 75476 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications Remote: Loaded suite test/remote/gateways/remote_airwallex_test 18 tests, 46 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications Visanet Peru: use timestamp for purchase number Unit: 16 tests, 96 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 18 tests, 27 assertions, 16 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 11.1111% passed CE-1846 Adyen: Fix `error_code_from` for unknown errors Updated `error_code_from` to respond with default gateway error code in case error is not listed in `STANDARD_ERROR_CODE_MAPPING`. CE-2512 Closes activemerchant#4381 Remote: 123 tests, 440 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98.374% passed Unit: 5146 tests, 75480 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Orbital: Add `tandem` support in orbital Added support for tandem implementation in orbital and test case coverage. CE-2432 Closes activemerchant#4376 Credorax: Add `recipient` fields Added `recipient_street_address`, `recipient_city`, `recipient_province_code`, and `recipient_country_code` fields to pass recipient information for refund operation. CE-2500 Unit: 5148 tests, 75508 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Remote: 46 tests, 157 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.9565% passed Closes activemerchant#4384 Airwallex: Add Stored Credential support CE-2300 Unit: 28 tests, 105 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 22 tests, 50 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rapyd: Add `metadata` and `ewallet_id` options Add support to pass `metadata` on `purchase`, `authorize`, and `refund` transactions and `ewallet_id` on `purchase` and `authorize` transactions. `metadata` can contain any collection of data so long as it is a json object. CE-2396 Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 21 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Priority: Refactor gateway integration, add additional fields to request CE-2491 Rubocop: 739 files inspected, no offenses dtected Unit: 5159 tests, 75564 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passede Rapyd: Update `type` option to `pm_type` Field name change to `pm_type` to be more specific CE-2396 Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 21 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Priority: Update `verify` method signature Adds the unusued `options` argument to the `verify` method so that the method accepts two arguments, according to ActiveMerchant standards. Rubocop: 739 files inspected, no offenses detected Unit: 5159 tests, 75564 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Conekta: Fix remote test Description ------------------------- We need to check if all remote test are passing successfully Updating test cards' year and removing unusual test JIRA ticket number ------------------------- GWI-141 Unit test ------------------------- Finished in 0.011947 seconds. 13 tests, 85 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 1088.14 tests/s, 7114.76 assertions/s Remote test ------------------------- Finished in 54.175181 seconds. 15 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 0.28 tests/s, 1.03 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Closes activemerchant#4386 Priority: add `settled` and `voided` to list of successful response statuses Rubocop: 739 files inspected, no offenses dtected Unit: 5161 tests, 75570 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passede NMI: Update post URL Summary: This PR updates the url of NMI to the most recent url according to the docs up to date Test Execution: Unit test Finished in 8.867635 seconds. 52 tests, 394 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 95.969518 seconds. 49 tests, 178 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: 739 files inspected, no offenses detected Closes activemerchant#4380 Multiple Gateways: Resolve `when/case` bug CE-2541 There is a bug in the `case` statements where we are attempting to resolve it conditionally with an `||`, but `case` takes a single value or list of values Unit: BluePay: 30 tests, 142 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Paysafe: 16 tests, 77 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 40 tests, 236 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: CheckoutV2: 43 tests, 110 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed BluePay: 19 tests, 90 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Paysafe: 31 tests, 94 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Airwallex: Add 3DS Global Support Add support for Spreedly's 3DS Global Solution. One notable distinction is that Airwallex only supports three digit 3DS versions. Versions returned from the MPI are formatted to meet that requirement. Ex: 2.0 => 2.0.0 CE-2301 Unit: 31 tests, 130 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 3 unrelated tests failing 25 tests, 56 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 88% passed Add Cartes Bancaires bin ranges (activemerchant#4398) Add bin ranges so that we can identify the French card brand Cartes Bancaires Release v1.126.0 (activemerchant#4402) Airwallex: Add support for `original_transaction_id` The `original_transaction_id` field allows users to manually override the `network_transaction_id`. This is useful when testing MITs using Stored Credentials on Airwallex because they only allow specific values to be passed which they do not return, and would normally be passed automatically in a standard MIT Stored Credentials flow. This PR also cleans up remote and unit tests for Airwallex stored creds. CE-2560 Unit: 33 tests, 176 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 27 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Securion Pay: Pass external 3DS data Summary: ------------------------------ This PR includes the fields and logic required to send external 3ds data in SecurionPay transactions. Test Execution: ------------------------------ Unit test Finished in 0.033598 seconds. 33 tests, 188 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 30.68658 seconds. 27 tests, 91 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 81.4815% passed Failures not related with the added code RuboCop: ------------------------------ 739 files inspected, no offenses detected Airwallex: Update Stored Credential testing Airwallex requires specific NTID values in order to test the full Stored Credential flow from CIT auth to MIT purchase. These values are now automatically populated based on card `brand`. This PR also removes the `original_transaction_id` GSF. CE-2593 Unit: 33 tests, 176 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 26 tests, 61 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Simetrik: Fix integer and float types CE-2407 This PR does some refactoring and updates some value types that were being passed incorrectly. The scrub method has also been updated. Remote Tests: 12 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit Tests: 12 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Local Tests: 5167 tests, 75646 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: 739 files inspected, no offenses detected Monei: add cardholderName field Monei's sandbox does not care if this field gets passed or not, but its omission will cause failures in production. CE-2562 Rubocop: 739 files inspected, no offenses detected Unit: 5174 tests, 75676 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Credorax: convert country codes Convert 2 character country code to 3 characters country code as required by the gateway for j9 parameter. [CE-2573](https://spreedly.atlassian.net/browse/CE-2573) Rubocop: 739 files inspected, no offenses detected Unit: 5173 tests, 75673 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 46 tests, 157 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.9565% passed Closes activemerchant#4408 BlueSnap: parse refund-transaction-id correctly This change updates the `authorize_from` method to account for the presence of `refund-transaction-id` on select refund transactions. CE-2522 Rubocop: 739 files inspected, no offenses detected Unit: 5174 tests, 75678 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_blue_snap_test 50 tests, 169 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98% passed Worldpay: Add level II and level III data Description ------------------------- Send customer and tax information (level II) and product-related information (level III) Closes activemerchant#4393 Unit test ------------------------- Finished in 0.660699 seconds. 102 tests, 603 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 154.38 tests/s, 912.67 assertions/s Remote test ------------------------- Finished in 81.188813 seconds. 99 tests, 412 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 1.22 tests/s, 5.07 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Fix Changelog ordering Worldpay: extract issuer response code The data is embedded in XML attributes and was therefore not included in the parsed response. CE-2546 Rubocop: 739 files inspected, no offenses detected Unit: 5175 tests, 75682 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_worldpay_test 94 tests, 392 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Vantiv: Read saleResponse duplicate attribute The LitleGateway parse method reads elements and their text values, but does not read any of the elements attributes. Here we read one very specific attribute (probably not worth generalizing just yet). Here we're interested in a litle saleResponse that may or may not have the attribute "duplicate='true'". All AM litle saleResposnes will include duplicate: true/false. Note on testing: Remote test for this feature is missing. It looks like the testvantivcnp api does not return the duplicate attribute the same way the production api does. Additionally, something seems to have changed in the testvantivcnp api such that existing remote tests fail. PR coming soon with fixes for existing tests. CE-2506 Local: 5175 tests, 75684 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 13 failed tests, same as master. See note above. Linting: 739 files inspected, no offenses detected Ogone: Add support for 3dsv2 Summary: --------------------------------------- In order to support 3dsv2 this commit add the mandatory,recommended and optionals fields required for those transactions Closes activemerchant#4410 Local Tests: --------------------------------------- Finished in 0.124174 seconds. 48 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 103.344988 seconds. 32 tests, 132 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.875% passed RuboCop: --------------------------------------- 739 files inspected, no offenses detected BlueSnap: Add stored credential Added `stored_credential` support by adding `transaction-initiator` and `original-network-transaction-id` in the request parameters for blue snap gateway implementation. CE-2536 Rubocop: 739 files inspected, no offenses detected Unit: 5180 tests, 75721 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 52 tests, 177 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications Closes activemerchant#4414 98.0769% passed Monei: Support `lang` field CE-2615 Unit: 19 tests, 69 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Add Maestro BINs There are a number of Maestro BINs that were missing in Active Merchant and need to be added. This PR adds those BIN values. local: 5181 tests, 75726 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed unit: 5181 tests, 75726 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Wompi: Redirect `refund` to `void` Refunds issued before 9PM Colombia time will fail. To fix this Wompi is developing a `refund_or_void` endpoint, which will determine the time and run the proper transaction. To avoid failures in the meantime all refunds will now be run as `void` calls. This is temporary. I've created a new unit test to cover the `refund to void` flow and have commented out the the other refund tests, which are superflous at the moment. CE-2635 Unit: 11 tests, 49 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 12 tests, 31 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rapyd: 3DS Support Add support for 3DS v2 fields for Rapyd Rapyd supports the standard transaction fields for 3DS: `3d_version`, `cavv`, `eci`, `xid`, `ds_trans_id` Fields can be passed, regardless of the version being used. Documentation for simulating a 3DS transaction can be found in the Rapyd documentation for [Simulating 3DS Authentication](https://docs.rapyd.net/build-with-rapyd/reference/testing-for-payments-api#simulating-3ds-authentication-api-method) CE-2596-rapyd_3ds Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 23 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adyen: Update API version Summary: ------------------------------ This PR changes the PAYMENT_API_VERSION updating it to a newer version. According to changelog and previous update there is not any additional requirements to handle the update Closes activemerchant#4418 Test Execution: ------------------------------ Unit test Finished in 0.06828 seconds. 94 tests, 479 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 163.203064 seconds. 123 tests, 439 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 97.561% passed -------------------------- Failures not related with the added code RuboCop: ------------------------------ 739 files inspected, no offenses detected Revert "Adyen: Update API version" This reverts commit de83769. Temporary reversion for logistical considerations. Revert "Revert "Adyen: Update API version"" This reverts commit 0a274fd. Ogone: Updated home gateway URL Summary: --------------------------------------- In order to add update the home gateway URL for Ogone this commit change the homepage_url to https://www.ingenico.com/login/ogone/ Closes activemerchant#4419 Local Tests: --------------------------------------- 49 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 86.941743 seconds. 32 tests, 132 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.875% passed RuboCop: --------------------------------------- 739 files inspected, no offenses detected Credorax: Update url gateway and credit cards Closes activemerchant#4417 Unit test ------------------------- Finished in 0.300459 seconds. 78 tests, 374 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 259.60 tests/s, 1244.76 assertions/s Remote test ------------------------- Finished in 264.711517 seconds. 46 tests, 157 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.9565% passed 0.17 tests/s, 0.59 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Kushki: send extra_taxes on all currency types DLocal: fix Idempotency Header bug The `X-Idempotency-Key` header was not being sent in requests. CE-2655 Rubocop: 739 files inspected, no offenses detected Unit: 5185 tests, 75757 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 31 tests, 80 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed DLocal: Mark support for additional countries Summary: --------------------------------------- In order to add support to an updated list of countries this commit add to the supported_countries the next ones: El Salvador (SV), Guatemala (GT), Japan (JP), Tanzania (TZ), Thailand (TH) and Uganda (UG) Closes activemerchant#4427 Local Tests: --------------------------------------- 33 tests, 144 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 18.186212 seconds. 31 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed RuboCop: --------------------------------------- 739 files inspected, no offenses detected Authorize.net: Enable zero auth for allowed cards Summary: ------------------------------ This PR modifies the verify operation to perform zero auth when is permitted Closes # 4430 Test Execution: ------------------------------ Unit test Finished in 0.271949 seconds. 108 tests, 640 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 89.63354 seconds. 75 tests, 272 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 739 files inspected, no offenses detected Rapyd: Additional Fields Add support for: * `complete_payment_url` * `error_payment_url` * `description` * `statement_descriptor` These fields are subfields of the `payment` object CE-2606 Unit: 18 tests, 76 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 23 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Authorize Net: Fix verify test names Braintree Blue: Return client token in AM response Test Summary Local: 5187 tests, 75716 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications 99.6337% passed Unit: 90 tests, 200 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 97 tests, 528 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Simetrik: Hard-codes Audience field Closes activemerchant#4433 Plexo: Add new gateway Added plexo gateway implementation along with remote and unit test cases. CE-2536 Unit: 5201 tests, 75845 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 742 files inspected, no offenses detected Remote: 15 tests, 43 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed CyberSource: Add bank account payment method support Summary: ------------------------------ This PR adds some test cases to ensure the current ACH implementation for CyberSource and modifies the credit method so it is able to support 'follow on' credits on transactions created with ACH debits. Note: The 3 failing remote tests correspond to authentication failures because of the lack of a latam related account. Closes activemerchant#4428 Test Execution: ------------------------------ Remote Finished in 89.497321 seconds. 110 tests, 555 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 97.2727% passed Unit Finished in 23.96186 seconds. 5183 tests, 75749 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 739 files inspected, no offenses detected Revert "Authorize.net: Enable zero auth for allowed cards" This reverts commit 3e82573. Rapyd: Zero Dollar Auth Add support for $0 auth (verify). In order to successfully pass a $0 verify, the value much be an int. CE-2618 Unit: 16 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 23 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rapyd: Scrub ACH Scrub the `account_number` and `routing_number` from the transcript CE-2622 Unit: 17 tests, 69 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 24 tests, 69 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed VisaNet Peru: purchase_number bug fix CE-2624 This updates the existing time stamp logic and filters it to be an even more specific slice of time, and appends two randomly generated numbers to the end of the string. The existing unit test (def generate_purchase_number_stamp on line 145) seemed sufficient and is passing. 16 of 18 remote tests are failing and have been for at least 6 months. Unit: 16 tests, 96 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 18 tests, 27 assertions, 16 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 11.1111% passed Local: 5184 tests, 75754 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed CardConnect: Add support for 3ds V2 mpi data Description ------------------------- In order to support 3dsv2 properly this PR does an update to the recommended files used for this transactions Closes activemerchant#4429 Unit test ------------------------- Finished in 0.938125 seconds. 27 tests, 109 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 28.78 tests/s, 116.19 assertions/s Remote test ------------------------- Finished in 29.117144 seconds. 25 tests, 58 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 92% passed 0.86 tests/s, 1.99 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Rapyd: Support `store` and `unstore` Add support for `store` and `unstore` transactions. `store` at a minimum, requires the payment method and the customer name to create a customer object at the Rapyd gateway. Refactor `authorization_from` function to include the payment method token in the `authorization` we return. Change the `add_payment` function to be more consistent and use `is_a?({PaymentObject})` check instead of the custom method of checking. CE-2602 Unit: 19 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 26 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Orbital: Update API version to 9.0 Summary: --------------------------------------- In order to have the recent gateway api version this commit update the version from 8.1 to 9.0 Closes activemerchant#4440 Local Tests: --------------------------------------- 137 tests, 785 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 153.303693 seconds. 118 tests, 492 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Plexo: Update implementation for `plexo` Closes activemerchant#4441 Added `meta_data` fields along with tests and updated response to reorder amount field to support implementation in core. CE-2567 Unit: 5208 tests, 75877 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 742 files inspected, no offenses detected Remote: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Plexo: Change field name to `metadata` (activemerchant#4443) Changed field name from `meta_data` to `metadata` as per the standards of the gateway field. CE-2567 Unit: 5208 tests, 75877 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 742 files inspected, no offenses detected Remote: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed priority - new fork active merchant from jan 2022 plus extra required fields remove expirydate from card input priority - new fork active merchant from jan 2022 plus extra required fields priority - add Pos data and L3 fields priority - update POS data fields with WIX priority - remove cardPresent from PosData obj priority - remove comments for priority credentials priority - fix commits priority - fix snake case remove expirydate from card input add fix expiry date priority - new fork active merchant from jan 2022 plus extra required fields remove expirydate from card input remove expirydate from card input priority - add general credit
Summary: --------------------------------------- In order to be able to use $0 authorizations this commit add the gateway specific field "zero_amount_auth" as an option, so I can verify my customers Credit Cards, depeding on the acquirng bank, whithout making any charges to them. Local Tests: --------------------------------------- 115 tests, 562 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- 105 tests, 526 assertions, 7 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 93.3333% passed RuboCop: --------------------------------------- 728 files inspected, no offenses detected Closes activemerchant#4313 Decidir Plus: Improve response messaging Improve the quality of the `message` we return in the response from the gateway. These changes will account for a `status` of `rejected` and check for an error message returned in the `status_details` from Decidir Plus and will also account for `fraud_detection` responses CE-2387 Unit: 13 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 16 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed PayU Latam: Refactor/fix failing remote tests CE-586 This PR has some refactoring of the `message_from` method. It also updates several tests that were failing due to changes in the gateway's response. PayU Latam now supports `capture` so tests that were added by a previous contributor were uncommented out. Local: 5057 tests, 75059 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 38 tests, 101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 37 tests, 146 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adyen: Add currencies with three decimals places Summary: --------------------------------------- In order to add currencies with three decimal places, this commit include for currencies_with_three_decimal_places: Bahraini Dinar, Iraqi Dinar, Jordanian Dinar, Kuwaiti Dinar, Libyan Dinar, Rial Omani, and Tunisian Dinar. Local Tests: --------------------------------------- 90 tests, 464 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Note: This need an Spreedly member with an IP added to the whitelist for testing. RuboCop: 728 files inspected, no offenses detected Closes activemerchant#4322 parent 5931f62 author David Perry <dperry@spreedly.com> 1571318981 -0400 committer Peter Oas <oas.peter@gmail.com> 1645031358 -0500 GlobalCollect: Improve success criteria Test Summary: Local: 5069 tests, 75103 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 33 tests, 158 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 33 tests, 86 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.9697% passed Note: the failing test in the remote tests is `test_successful_purchase_with_installments(RemoteGlobalCollectTest)` which is unrelated to the success criteria refactored by this commit. Co-authored-by: David Perry <curiousepic@gmail.com> update changelog Priority Payment Systems - Clean up/refactor gateway file and tests - Refactor gateway file to follow field naming standards with snake_case and add conditional logic - Revise variables in test files to match snake_case formatting Local: 5066 tests, 75095 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 11 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 20 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Closes activemerchant#4327 SafeCharge: Change Verify to send 0 amount Also updates tests to reflect new `verify` flow. CE-190 Rubocop: 728 files inspected, no offenses detected Unit: 5068 tests, 75098 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_safe_charge_test 30 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed DLocal: Add support for `force_type` field CE-2421 Rubocop: 728 files inspected, no offenses detected Unit: 5069 tests, 75101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_d_local_test 29 tests, 76 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.5517% passed Barclaycard SmartPay: Support more nonstandard currencies Summary: This PR updates the currencies fractions list Test Execution: Finished in 92.308372 seconds. 38 tests, 90 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.8421% passed Failures not related with the code update, pending to the audit work on this gateway to fix RuboCop: 728 files inspected, no offenses detected Closes activemerchant#4335 Decidir Plus: `name_override` option on `store` Add support to override the payment method name value with one given in the options hash. CE-2149 Unit: 1 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 17 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Stripe PI: test shipping address (activemerchant#4344) Tested shipping address field to be passed in to the stripe pi gateway. CE-2425 Remote: 73 tests, 327 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 94.5205% passed Unit: 5070 tests, 75113 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Priority: Update `add_purchases_data` method The `add_purchases_data` method tried to call `empty?` on the options hash. When the `:purchases` key was unavailable `empty?` was called on a `nil` value which returned a no method error. This fix avoids the no method error by using an `unless` statement to check that the options key exists CE-2443 Local: 5070 tests, 75114 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 11 tests, 60 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 20 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Stripe PI: Update `shipping` to `shipping_address` Updated field name from `shipping` to `shipping_address` to make it consistent with other gateways. CE-2425 Unit: 5070 tests, 75114 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Remote: 74 tests, 319 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 91.8919% passed Closes activemerchant#4347 DecidirPlus: Handle `payment_method_id` by `card_brand` Determine `payment_method_id` based on `card_brand` passed in the options hash for auth and purchase transactions CE-2424 Unit: 13 tests, 53 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote0: 17 tests, 58 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed DecidirPlus: `debit` and `payment_method_id` fields Add support for `debit` and `payment_method_id` gateway fields. Decidir+ requires that transactions after `store` need to contain a `payment_method_id` that corresponds to the `payment_method` tokenized on the initial `store` call. `payment_method_id`'s are also different for debit and credit cards, so the `debit` option allows for users to pass that value manually. CE-2424 Unit: 13 tests, 55 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 22 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adds Application ID to Adyen Gateway Priority: Add support for `replay_id` field `replay_id` can be thought of like an `idempotency_key`. When `replay_id` is sent the expected behavior is that if the gateway can find a duplicate `replay_id` attached to previous transaction they return that original response. This only works with `purchase` and `authorize`. `void` and `refund` should be sent w/ out `replay_id`. CE-2403 Local: 5072 tests, 75128 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 13 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Moneris: ensure all remote tests pass Prior to this change, only 97% of tests passed. Requirements: - Ensure your `fixtures.yml` uses `store5/yesguy` from [Testing a Solution](https://developer.moneris.com/More/Testing/Testing%20a%20Solution) document ECS-1882 Unit: 51 tests, 274 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 40 tests, 212 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Stripe PI: standardize shipping_address fields CE-2467 Rubocop: 728 files inspected, no offenses detected Unit: 5073 tests, 75132 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_stripe_payment_intents_test 74 tests, 337 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Airwallex: Support gateway Addition of invalid_amount attributed to amount_too_small error from Stripe Litle: Translate google_pay as android_pay Description ------------------------- We need unify the source as :android_pay if the network token is google_pay or android_pay JIRA ticket number ------------------------- GWI-96 Unit test ------------------------- Finished in 0.137911 seconds. 54 tests, 230 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 391.56 tests/s, 1667.74 assertions/s Remote test ------------------------- Finished in 35.502618 seconds. 50 tests, 209 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74% passed 1.41 tests/s, 5.89 assertions/s Rubocop ------------------------- 729 files inspected, no offenses detected Closes activemerchant#4331 Payflow Pro: Add 3DS Support This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - activemerchant#3362 - activemerchant#4075 - activemerchant#4113 - activemerchant#4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed Payflow Pro: Add 3DS Support This commit introduces MPI-compatible way to pass 3DS authentication parameters, as documented in [Payflow's 3-D Secure with 3rd-Party Merchant Plug-ins ](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/). Prior to this change, we would pass the fields via the `BuyerAuthResult` inside the `Card` node. Unfortunately, there's no explicit mention of these, and as far as I can see, this was inferred via a series of commits, and even then, some of the links referenced in them, are broken :(, these are the commits: - activemerchant#3362 - activemerchant#4075 - activemerchant#4113 - activemerchant#4168 Current Reference documentation, as of March 2022: - [How to send 3-D Secure authentication data](https://developer.paypal.com/api/nvp-soap/payflow/3d-secure-mpi/#link-payflowfields) "Legacy" documentation for 3DS data: - [BuyerAuthStatusEnum, page 109](https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_xmlpay_guide.pdf) ECS-2350 Note: the 10 failing tests are the same ones that fail in `master`. Rubocop: 731 files inspected, no offenses detected Unit: 57 tests, 361 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 39 tests, 169 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 74.359% passed Litle: Update schema version to 12.3 and test correction Summary: This PR updates the used schema to the latest version available according to the docs on https://vantiv.github.io/latest-versions/ Test Execution: Finished in 38.911867 seconds. 50 tests, 227 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 92% passed Several failing tests corrected according to docs in the following pages: https://vantiv.github.io/sandbox/#howItWorks https://developer.worldpay.com/assets/pdf/us-ecom-pdf/Worldpay_eComm_cnpAPI_Reference_Guide_APIV12.12_V2.16.pdf RuboCop: 728 files inspected, no offenses detected Closes activemerchant#4340 Braintree: Add ACH support for store Summary: ------------------------------ This commit modifies the store method to add support for bank accounts in order to enable ACH transactions on purchases, for that is needed an extra work to simulate the tokenization flow that Braintree enables for the front-end libraries to create token-nonces for payment methods. This nonce is a requirement to store the bank account and set a flag to require a verification via network checking. Test Execution: ------------------------------ Remote: Finished in 261.78288 seconds. 97 tests, 525 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: Finished in 16.583145 seconds. 5045 tests, 74984 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop ------------------------------ Inspecting 730 files 730 files inspected, no offenses detected Closes activemerchant#4285 Revert "Litle: Update schema version to 12.3 and test correction" This reverts commit 75f9272. Reverting due to an unknown issue causing failures at Litle. Small Rubocop Fixes Fixes a few linting errors Unit: 5100 tests, 75255 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 733 files inspected, no offenses detected Added Simetrik gateway and tests Closes activemerchant#4339 Rubocop: 736 files inspected, no offenses detected Unit: 5112 tests, 75337 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_simetrik_test 12 tests, 61 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed EBANX: Change amount for Mexico and Chile Merchants using Ebanx are seeing transactions being denied at the card verify flow due to the minimum amount expected in this type of transaction. Increase the value to be accepted by the acquirers in the card verify flow. When using local currencies we end up doing the verify using the local currency, and in those cases 100 may be less than the minimum value for a valid transaction in some countries. Remote: 26 tests, 70 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.1538% passed Unit: 5069 tests, 75101 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 728 files inspected, no offenses detected Closes activemerchant#4337 DecidirPlus: Add new fields (activemerchant#4361) Added decidir plus additional fields: `establishment_name`, `aggregate_data`, `sub_payments`, `card_holder_identification_type`, `card_holder_identification_number`, `card_door_number`, `card_holder_birthday`. CE-2485 Remote: 25 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 5115 tests, 75352 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected DecidirPlus: Update `error_code` method (activemerchant#4364) Updated `error_code_from` method to contain reason id in the error code response. CE-2490 Unit: 5113 tests, 75341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected Remote: 23 tests, 77 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Dlocal: Add three_ds mpi support Summary: ------------------------------ This PR adds support for third party three ds authentication data on the DLocal gateway. Test Execution: ------------------------------ Remote Finished in 19.797433 seconds. 31 tests, 79 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 93.5484% passed Unit Finished in 30.997677 seconds. 5076 tests, 75140 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 728 files inspected, no offenses detected Closes activemerchant#4345 Stripe PI: add request_three_d_secure to setup_intent ECS-2391 Merchants that want to trigger 3DS flows manually use the `request_three_d_secure` field when creating an intent to do that. This was already added to `create_intent`, this commit adds it to the `create_setup_intent` as well. Test Summary Local: 5123 tests, 75395 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit: 39 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 75 tests, 353 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adyen: Add custom amount for `verify` (activemerchant#4369) Added custom amount field `verify_amount` for verify action in adyen gateway implementation. CE-2483 Remote: 122 tests, 438 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98.3607% passed Unit: 5124 tests, 75400 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 736 files inspected, no offenses detected * Stripe PI: Pass options for tokenizing Apple/Google Pay Previously, we were not including the full options when making a tokenization call for Apple and Google Pay, meaning that connected/ destination account info was not being included in the tokenization process. This change now supplies the full options has to that call. Local Tests: --------------------------------------- 39 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- 76 tests, 341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: --------------------------------------- 736 files inspected, no offenses detected Closes activemerchant#4368 Dlocal: Format 3DS mpi enrollment data correctly Summary: ------------------------------ This corrects the formatting of the enrollment response data when passing 3DS MPI data. Test Execution: ------------------------------ Remote (1 unrelated failure) 31 tests, 80 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed Unit 32 tests, 142 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 728 files inspected, no offenses detected Airwallex: QA Moneris: Add 3DS MPI Fields Support The field names, test values and logic parsing follow the guides available in Moneri's [About 3D Secure 2.0](https://developer.moneris.com/livedemo/3ds2/reference/guide/php) guides. **Caveats** ==== The available magic test data do not make it possible to trigger reliable fail-scenarios for MPI-driven authentications. ECS-1882 --- Test Summary Note: failing tests are same ones as in `master` branch Local: 5125 tests, 75361 assertions, 0 failures, 17 errors, 0 pendings, 0 omissions, 0 notifications 99.6683% passed Unit: 53 tests, 284 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 44 tests, 223 assertions, 0 failures, 0 errors, 0 pendings, 1 omissions, 0 notifications 100% passed Duplicate(concat) Address sent - card_connect is concat. address1 and 2 causing a AVS error (activemerchant#4362) Co-authored-by: Nicholas Ashton <nashton@gmail.com> Cybersource: Removes Pinless Debit Transaction Functionality and Testing Local: 5123 tests, 75396 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 114 tests, 554 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 104 tests, 528 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.1538% passed Litle: Add support for Level 2 and 3 enhanced data ------ Summary: This PR includes the enhanced data to enable level 2 and 3 data support in this gateway Test Execution: ------- Finished in 37.183788 seconds. 54 tests, 221 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 75.9259% passed Failing tests are not related to this requirement RuboCop: 736 files inspected, no offenses detected Closes activemerchant#4360 Rapyd: Add gateway support - To note: the gateway doesn’t support void transactions for card payment methods, they must be run as refunds - The gateway does not accept a refund unless the original transaction has been completed/closed/captured. Due to this, the verify method has to run a purchase and then a refund as opposed to the standard authorize and void - Stylistic refactoring and cleaning up of some redundant code CE-2394 Local: 5127 tests, 75381 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 15 tests, 44 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 19 tests, 51 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Cybersource: Removes Pinless Debit Transaction Functionality and Testing Local: 5129 tests, 75429 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Unit: 114 tests, 554 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Note: `test_successful_asynchronous_adjust` needs test creds where async adjust is enabled to succeed. Remote: 104 tests, 533 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 99.0385% passed Airwallex: trap error when payment intent fails; send address correctly Airwallex: Add `descriptor` field; update logic for sending `request_id` and `merchant_order_id` CE-2530 Rubocop: 739 files inspected, no offenses detected Unit: 5145 tests, 75476 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications Remote: Loaded suite test/remote/gateways/remote_airwallex_test 18 tests, 46 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications Visanet Peru: use timestamp for purchase number Unit: 16 tests, 96 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 18 tests, 27 assertions, 16 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 11.1111% passed CE-1846 Adyen: Fix `error_code_from` for unknown errors Updated `error_code_from` to respond with default gateway error code in case error is not listed in `STANDARD_ERROR_CODE_MAPPING`. CE-2512 Closes activemerchant#4381 Remote: 123 tests, 440 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98.374% passed Unit: 5146 tests, 75480 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Orbital: Add `tandem` support in orbital Added support for tandem implementation in orbital and test case coverage. CE-2432 Closes activemerchant#4376 Credorax: Add `recipient` fields Added `recipient_street_address`, `recipient_city`, `recipient_province_code`, and `recipient_country_code` fields to pass recipient information for refund operation. CE-2500 Unit: 5148 tests, 75508 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 739 files inspected, no offenses detected Remote: 46 tests, 157 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.9565% passed Closes activemerchant#4384 Airwallex: Add Stored Credential support CE-2300 Unit: 28 tests, 105 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 22 tests, 50 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rapyd: Add `metadata` and `ewallet_id` options Add support to pass `metadata` on `purchase`, `authorize`, and `refund` transactions and `ewallet_id` on `purchase` and `authorize` transactions. `metadata` can contain any collection of data so long as it is a json object. CE-2396 Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 21 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Priority: Refactor gateway integration, add additional fields to request CE-2491 Rubocop: 739 files inspected, no offenses dtected Unit: 5159 tests, 75564 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passede Rapyd: Update `type` option to `pm_type` Field name change to `pm_type` to be more specific CE-2396 Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 21 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Priority: Update `verify` method signature Adds the unusued `options` argument to the `verify` method so that the method accepts two arguments, according to ActiveMerchant standards. Rubocop: 739 files inspected, no offenses detected Unit: 5159 tests, 75564 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Conekta: Fix remote test Description ------------------------- We need to check if all remote test are passing successfully Updating test cards' year and removing unusual test JIRA ticket number ------------------------- GWI-141 Unit test ------------------------- Finished in 0.011947 seconds. 13 tests, 85 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 1088.14 tests/s, 7114.76 assertions/s Remote test ------------------------- Finished in 54.175181 seconds. 15 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 0.28 tests/s, 1.03 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Closes activemerchant#4386 Priority: add `settled` and `voided` to list of successful response statuses Rubocop: 739 files inspected, no offenses dtected Unit: 5161 tests, 75570 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_priority_test 27 tests, 81 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passede NMI: Update post URL Summary: This PR updates the url of NMI to the most recent url according to the docs up to date Test Execution: Unit test Finished in 8.867635 seconds. 52 tests, 394 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 95.969518 seconds. 49 tests, 178 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: 739 files inspected, no offenses detected Closes activemerchant#4380 Multiple Gateways: Resolve `when/case` bug CE-2541 There is a bug in the `case` statements where we are attempting to resolve it conditionally with an `||`, but `case` takes a single value or list of values Unit: BluePay: 30 tests, 142 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Paysafe: 16 tests, 77 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 40 tests, 236 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: CheckoutV2: 43 tests, 110 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed BluePay: 19 tests, 90 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Paysafe: 31 tests, 94 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Airwallex: Add 3DS Global Support Add support for Spreedly's 3DS Global Solution. One notable distinction is that Airwallex only supports three digit 3DS versions. Versions returned from the MPI are formatted to meet that requirement. Ex: 2.0 => 2.0.0 CE-2301 Unit: 31 tests, 130 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 3 unrelated tests failing 25 tests, 56 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 88% passed Add Cartes Bancaires bin ranges (activemerchant#4398) Add bin ranges so that we can identify the French card brand Cartes Bancaires Release v1.126.0 (activemerchant#4402) Airwallex: Add support for `original_transaction_id` The `original_transaction_id` field allows users to manually override the `network_transaction_id`. This is useful when testing MITs using Stored Credentials on Airwallex because they only allow specific values to be passed which they do not return, and would normally be passed automatically in a standard MIT Stored Credentials flow. This PR also cleans up remote and unit tests for Airwallex stored creds. CE-2560 Unit: 33 tests, 176 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 27 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Securion Pay: Pass external 3DS data Summary: ------------------------------ This PR includes the fields and logic required to send external 3ds data in SecurionPay transactions. Test Execution: ------------------------------ Unit test Finished in 0.033598 seconds. 33 tests, 188 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 30.68658 seconds. 27 tests, 91 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 81.4815% passed Failures not related with the added code RuboCop: ------------------------------ 739 files inspected, no offenses detected Airwallex: Update Stored Credential testing Airwallex requires specific NTID values in order to test the full Stored Credential flow from CIT auth to MIT purchase. These values are now automatically populated based on card `brand`. This PR also removes the `original_transaction_id` GSF. CE-2593 Unit: 33 tests, 176 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 26 tests, 61 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Simetrik: Fix integer and float types CE-2407 This PR does some refactoring and updates some value types that were being passed incorrectly. The scrub method has also been updated. Remote Tests: 12 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Unit Tests: 12 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Local Tests: 5167 tests, 75646 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: 739 files inspected, no offenses detected Monei: add cardholderName field Monei's sandbox does not care if this field gets passed or not, but its omission will cause failures in production. CE-2562 Rubocop: 739 files inspected, no offenses detected Unit: 5174 tests, 75676 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Credorax: convert country codes Convert 2 character country code to 3 characters country code as required by the gateway for j9 parameter. [CE-2573](https://spreedly.atlassian.net/browse/CE-2573) Rubocop: 739 files inspected, no offenses detected Unit: 5173 tests, 75673 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 46 tests, 157 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.9565% passed Closes activemerchant#4408 BlueSnap: parse refund-transaction-id correctly This change updates the `authorize_from` method to account for the presence of `refund-transaction-id` on select refund transactions. CE-2522 Rubocop: 739 files inspected, no offenses detected Unit: 5174 tests, 75678 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_blue_snap_test 50 tests, 169 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 98% passed Worldpay: Add level II and level III data Description ------------------------- Send customer and tax information (level II) and product-related information (level III) Closes activemerchant#4393 Unit test ------------------------- Finished in 0.660699 seconds. 102 tests, 603 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 154.38 tests/s, 912.67 assertions/s Remote test ------------------------- Finished in 81.188813 seconds. 99 tests, 412 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 1.22 tests/s, 5.07 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Fix Changelog ordering Worldpay: extract issuer response code The data is embedded in XML attributes and was therefore not included in the parsed response. CE-2546 Rubocop: 739 files inspected, no offenses detected Unit: 5175 tests, 75682 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: Loaded suite test/remote/gateways/remote_worldpay_test 94 tests, 392 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Vantiv: Read saleResponse duplicate attribute The LitleGateway parse method reads elements and their text values, but does not read any of the elements attributes. Here we read one very specific attribute (probably not worth generalizing just yet). Here we're interested in a litle saleResponse that may or may not have the attribute "duplicate='true'". All AM litle saleResposnes will include duplicate: true/false. Note on testing: Remote test for this feature is missing. It looks like the testvantivcnp api does not return the duplicate attribute the same way the production api does. Additionally, something seems to have changed in the testvantivcnp api such that existing remote tests fail. PR coming soon with fixes for existing tests. CE-2506 Local: 5175 tests, 75684 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 13 failed tests, same as master. See note above. Linting: 739 files inspected, no offenses detected Ogone: Add support for 3dsv2 Summary: --------------------------------------- In order to support 3dsv2 this commit add the mandatory,recommended and optionals fields required for those transactions Closes activemerchant#4410 Local Tests: --------------------------------------- Finished in 0.124174 seconds. 48 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 103.344988 seconds. 32 tests, 132 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.875% passed RuboCop: --------------------------------------- 739 files inspected, no offenses detected BlueSnap: Add stored credential Added `stored_credential` support by adding `transaction-initiator` and `original-network-transaction-id` in the request parameters for blue snap gateway implementation. CE-2536 Rubocop: 739 files inspected, no offenses detected Unit: 5180 tests, 75721 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 52 tests, 177 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications Closes activemerchant#4414 98.0769% passed Monei: Support `lang` field CE-2615 Unit: 19 tests, 69 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Add Maestro BINs There are a number of Maestro BINs that were missing in Active Merchant and need to be added. This PR adds those BIN values. local: 5181 tests, 75726 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed unit: 5181 tests, 75726 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Wompi: Redirect `refund` to `void` Refunds issued before 9PM Colombia time will fail. To fix this Wompi is developing a `refund_or_void` endpoint, which will determine the time and run the proper transaction. To avoid failures in the meantime all refunds will now be run as `void` calls. This is temporary. I've created a new unit test to cover the `refund to void` flow and have commented out the the other refund tests, which are superflous at the moment. CE-2635 Unit: 11 tests, 49 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 12 tests, 31 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rapyd: 3DS Support Add support for 3DS v2 fields for Rapyd Rapyd supports the standard transaction fields for 3DS: `3d_version`, `cavv`, `eci`, `xid`, `ds_trans_id` Fields can be passed, regardless of the version being used. Documentation for simulating a 3DS transaction can be found in the Rapyd documentation for [Simulating 3DS Authentication](https://docs.rapyd.net/build-with-rapyd/reference/testing-for-payments-api#simulating-3ds-authentication-api-method) CE-2596-rapyd_3ds Unit: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 23 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Adyen: Update API version Summary: ------------------------------ This PR changes the PAYMENT_API_VERSION updating it to a newer version. According to changelog and previous update there is not any additional requirements to handle the update Closes activemerchant#4418 Test Execution: ------------------------------ Unit test Finished in 0.06828 seconds. 94 tests, 479 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 163.203064 seconds. 123 tests, 439 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 97.561% passed -------------------------- Failures not related with the added code RuboCop: ------------------------------ 739 files inspected, no offenses detected Revert "Adyen: Update API version" This reverts commit de83769. Temporary reversion for logistical considerations. Revert "Revert "Adyen: Update API version"" This reverts commit 0a274fd. Ogone: Updated home gateway URL Summary: --------------------------------------- In order to add update the home gateway URL for Ogone this commit change the homepage_url to https://www.ingenico.com/login/ogone/ Closes activemerchant#4419 Local Tests: --------------------------------------- 49 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 86.941743 seconds. 32 tests, 132 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.875% passed RuboCop: --------------------------------------- 739 files inspected, no offenses detected Credorax: Update url gateway and credit cards Closes activemerchant#4417 Unit test ------------------------- Finished in 0.300459 seconds. 78 tests, 374 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 259.60 tests/s, 1244.76 assertions/s Remote test ------------------------- Finished in 264.711517 seconds. 46 tests, 157 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 86.9565% passed 0.17 tests/s, 0.59 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Kushki: send extra_taxes on all currency types DLocal: fix Idempotency Header bug The `X-Idempotency-Key` header was not being sent in requests. CE-2655 Rubocop: 739 files inspected, no offenses detected Unit: 5185 tests, 75757 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 31 tests, 80 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed DLocal: Mark support for additional countries Summary: --------------------------------------- In order to add support to an updated list of countries this commit add to the supported_countries the next ones: El Salvador (SV), Guatemala (GT), Japan (JP), Tanzania (TZ), Thailand (TH) and Uganda (UG) Closes activemerchant#4427 Local Tests: --------------------------------------- 33 tests, 144 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 18.186212 seconds. 31 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 96.7742% passed RuboCop: --------------------------------------- 739 files inspected, no offenses detected Authorize.net: Enable zero auth for allowed cards Summary: ------------------------------ This PR modifies the verify operation to perform zero auth when is permitted Closes # 4430 Test Execution: ------------------------------ Unit test Finished in 0.271949 seconds. 108 tests, 640 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote test Finished in 89.63354 seconds. 75 tests, 272 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 739 files inspected, no offenses detected Rapyd: Additional Fields Add support for: * `complete_payment_url` * `error_payment_url` * `description` * `statement_descriptor` These fields are subfields of the `payment` object CE-2606 Unit: 18 tests, 76 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 23 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Authorize Net: Fix verify test names Braintree Blue: Return client token in AM response Test Summary Local: 5187 tests, 75716 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications 99.6337% passed Unit: 90 tests, 200 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 97 tests, 528 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Simetrik: Hard-codes Audience field Closes activemerchant#4433 Plexo: Add new gateway Added plexo gateway implementation along with remote and unit test cases. CE-2536 Unit: 5201 tests, 75845 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 742 files inspected, no offenses detected Remote: 15 tests, 43 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed CyberSource: Add bank account payment method support Summary: ------------------------------ This PR adds some test cases to ensure the current ACH implementation for CyberSource and modifies the credit method so it is able to support 'follow on' credits on transactions created with ACH debits. Note: The 3 failing remote tests correspond to authentication failures because of the lack of a latam related account. Closes activemerchant#4428 Test Execution: ------------------------------ Remote Finished in 89.497321 seconds. 110 tests, 555 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 97.2727% passed Unit Finished in 23.96186 seconds. 5183 tests, 75749 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed RuboCop: ------------------------------ 739 files inspected, no offenses detected Revert "Authorize.net: Enable zero auth for allowed cards" This reverts commit 3e82573. Rapyd: Zero Dollar Auth Add support for $0 auth (verify). In order to successfully pass a $0 verify, the value much be an int. CE-2618 Unit: 16 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 23 tests, 65 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rapyd: Scrub ACH Scrub the `account_number` and `routing_number` from the transcript CE-2622 Unit: 17 tests, 69 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 24 tests, 69 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed VisaNet Peru: purchase_number bug fix CE-2624 This updates the existing time stamp logic and filters it to be an even more specific slice of time, and appends two randomly generated numbers to the end of the string. The existing unit test (def generate_purchase_number_stamp on line 145) seemed sufficient and is passing. 16 of 18 remote tests are failing and have been for at least 6 months. Unit: 16 tests, 96 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 18 tests, 27 assertions, 16 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 11.1111% passed Local: 5184 tests, 75754 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed CardConnect: Add support for 3ds V2 mpi data Description ------------------------- In order to support 3dsv2 properly this PR does an update to the recommended files used for this transactions Closes activemerchant#4429 Unit test ------------------------- Finished in 0.938125 seconds. 27 tests, 109 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed 28.78 tests/s, 116.19 assertions/s Remote test ------------------------- Finished in 29.117144 seconds. 25 tests, 58 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 92% passed 0.86 tests/s, 1.99 assertions/s Rubocop ------------------------- 739 files inspected, no offenses detected Rapyd: Support `store` and `unstore` Add support for `store` and `unstore` transactions. `store` at a minimum, requires the payment method and the customer name to create a customer object at the Rapyd gateway. Refactor `authorization_from` function to include the payment method token in the `authorization` we return. Change the `add_payment` function to be more consistent and use `is_a?({PaymentObject})` check instead of the custom method of checking. CE-2602 Unit: 19 tests, 83 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote: 26 tests, 74 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Orbital: Update API version to 9.0 Summary: --------------------------------------- In order to have the recent gateway api version this commit update the version from 8.1 to 9.0 Closes activemerchant#4440 Local Tests: --------------------------------------- 137 tests, 785 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Remote Tests: --------------------------------------- Finished in 153.303693 seconds. 118 tests, 492 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Plexo: Update implementation for `plexo` Closes activemerchant#4441 Added `meta_data` fields along with tests and updated response to reorder amount field to support implementation in core. CE-2567 Unit: 5208 tests, 75877 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 742 files inspected, no offenses detected Remote: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Plexo: Change field name to `metadata` (activemerchant#4443) Changed field name from `meta_data` to `metadata` as per the standards of the gateway field. CE-2567 Unit: 5208 tests, 75877 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed Rubocop: 742 files inspected, no offenses detected Remote: 16 tests, 47 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed priority - new fork active merchant from jan 2022 plus extra required fields remove expirydate from card input priority - new fork active merchant from jan 2022 plus extra required fields priority - add Pos data and L3 fields priority - update POS data fields with WIX priority - remove cardPresent from PosData obj priority - remove comments for priority credentials priority - fix commits priority - fix snake case remove expirydate from card input add fix expiry date priority - new fork active merchant from jan 2022 plus extra required fields remove expirydate from card input remove expirydate from card input priority - add general credit
See https://developer.paypal.com/docs/payflow/3d-secure-mpi/
Rubocop:
Local tests:
Remote tests:
38 tests, 163 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 73.6842% passed
38 tests, 163 assertions, 10 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 73.6842% passed
the same
In the most recent Payflow PR, here, only 8 tests failed.