Skip to content
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

Simetrik: Add Simetrik Gateway #4339

Conversation

simetrik-frank
Copy link

Adds Simetrik Gateway and tests.

Test Summary:

Local tests:

Execution command: bundle exec rake test:local TEST=test/unit/gateways/simetrik_test.rb
Result: 100% passed.
image

Remote tests:

Execution command: bundle exec rake test:remote TEST=test/remote/gateways/remote_simetrik_test.rb
Result: 100% passed.
image

@dsmcclain dsmcclain self-requested a review March 2, 2022 16:35
Copy link
Contributor

@dsmcclain dsmcclain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your submission @simetrik-frank! The work you have done is very good, and I think overall it is making sense. 👍

I do have a few changes to request, and I have provided those in the comments below. Please understand that the changes are requested in order to avoid issues that could impact payments, and also to ensure that the Simetrik gateway is easy to maintain in the future.

If you have any questions, please don't hesitate to ask! 😄

When I run bundle exec rake test:local all unit tests pass along with rubocop 👍

Currently, all remote tests are passing for me. However, sometimes when I run the remote tests I get confusing and inconsistent failures from the Simetrik sandbox. Has this happened to you at all?

Again, please let me know if you have questions about any of my requested changes.

lib/active_merchant/billing/gateways/simetrik.rb Outdated Show resolved Hide resolved
lib/active_merchant/billing/gateways/simetrik.rb Outdated Show resolved Hide resolved
lib/active_merchant/billing/gateways/simetrik.rb Outdated Show resolved Hide resolved
lib/active_merchant/billing/gateways/simetrik.rb Outdated Show resolved Hide resolved
test/remote/gateways/remote_simetrik_test.rb Outdated Show resolved Hide resolved
test/remote/gateways/remote_simetrik_test.rb Outdated Show resolved Hide resolved
test/unit/gateways/simetrik_test.rb Outdated Show resolved Hide resolved
test/unit/gateways/simetrik_test.rb Outdated Show resolved Hide resolved
test/unit/gateways/simetrik_test.rb Outdated Show resolved Hide resolved
@simetrik-frank
Copy link
Author

simetrik-frank commented Mar 7, 2022

Hi @dsmcclain, thank you for your taking the time to leave such a thorough review. We have pushed a new commit which addresses the requested changes.

As for the inconsistent test results, this is due to the acquiring bank's sandbox environment, which has very limited resources and sometimes times-out. Unfortunately this is beyond our control.

lib/active_merchant/billing/gateways/simetrik.rb Outdated Show resolved Hide resolved
lib/active_merchant/billing/gateways/simetrik.rb Outdated Show resolved Hide resolved
test/remote/gateways/remote_simetrik_test.rb Outdated Show resolved Hide resolved
test/remote/gateways/remote_simetrik_test.rb Outdated Show resolved Hide resolved
test/remote/gateways/remote_simetrik_test.rb Outdated Show resolved Hide resolved
test/unit/gateways/simetrik_test.rb Outdated Show resolved Hide resolved
lib/active_merchant/billing/gateways/simetrik.rb Outdated Show resolved Hide resolved
Copy link
Contributor

@dsmcclain dsmcclain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simetrik-frank Excellent work on these changes! Thank you for your thorough work.

I have just a few more minor changes and questions. I think this is very close. Please let me know if you have any questions about my comments.

test/remote/gateways/remote_simetrik_test.rb Outdated Show resolved Hide resolved
@simetrik-frank
Copy link
Author

@dsmcclain Thanks again for the thorough review. We have pushed a new commit which addresses the requested changes. Looking forward to your review.

Copy link
Contributor

@dsmcclain dsmcclain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for making those changes @simetrik-frank. All tests are currently passing for me. I think the gateway adapter is in a good enough place to move forward.

There is only one more change to make now: please rebase your branch against master and squash your PR down to a single commit. Then we will run tests once again, and after that we will approve the PR and merge it.

Thank you for your quality work and professionalism 😄 .

@simetrik-frank simetrik-frank deleted the add_simetrik_gateway branch March 14, 2022 22:19
@simetrik-frank simetrik-frank restored the add_simetrik_gateway branch March 14, 2022 22:19
@simetrik-frank simetrik-frank force-pushed the add_simetrik_gateway branch 4 times, most recently from 2345a1e to a3f7e2c Compare March 14, 2022 23:28
@simetrik-frank
Copy link
Author

simetrik-frank commented Mar 14, 2022

Hi @dsmcclain. We are having trouble with the rebase and merge because we made the mistake of branching add_simetrik_gateway from commits a052c60 and 72234c1 which are on simetrik-frank master branch.

Below you'll find an image that I hope helps you understand the situation. The cyan branch is the simetrik-frank master branch, from which add_simetrik_gateway was branched out after two commits had already mistakenly been pushed there.
image

As you can probably tell by this conversation's git history, we have made some attempts to fix this but have been unable to do so. It seems the simplest course of action would be to close this PR and open a new one from a different branch on our fork, this time done directly from master.

Would you be ok with this solution?

@dsmcclain
Copy link
Contributor

@simetrik-frank No problem. Completely understandable.

I think in this scenario I can just create a new branch with your changes and use github to link it back to your PR. That will save you some work, and it will also preserve the history of our conversations by making sure that the commit to master is linked back to this PR.

So I will approve your PR, and then I will handle the rebase, squash, and merge process.

Thank you again for your work. I will notify the team that this stage of the integration is complete! 👍

@simetrik-frank
Copy link
Author

@dsmcclain thank you for your help, we really appreciate it.

@dsmcclain dsmcclain closed this in 415fb2f Mar 15, 2022
Ligator added a commit to Ligator/active_merchant that referenced this pull request Apr 29, 2022
* 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>
priorityspreedly pushed a commit to priorityspreedly/active_merchant that referenced this pull request Jul 26, 2022
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
priorityspreedly pushed a commit to priorityspreedly/active_merchant that referenced this pull request Jul 26, 2022
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants