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

CybersourceREST - Refund | Credit #4700

Closed
wants to merge 1 commit into from

Conversation

sinourain
Copy link
Contributor

@sinourain sinourain commented Feb 16, 2023

Description

This integration support the following payment operations:

  • Refund
  • Credit

Unit test

Finished in 37.39707 seconds.
5452 tests, 77126 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed

Remote test

145.79 tests/s, 2062.35 assertions/s

Rubocop

760 files inspected, no offenses detected

GWI-471

Important note:
Previous review here: #4696

@sinourain sinourain requested a review from a team February 16, 2023 16:02
@Heavyblade Heavyblade force-pushed the add_cybersource_rest_gateway branch from 729026a to 56a0664 Compare February 16, 2023 21:39
@sinourain sinourain force-pushed the cybersource_rest_refund_credit branch from 3eef976 to 1dc052e Compare February 21, 2023 14:27
@sinourain sinourain changed the base branch from add_cybersource_rest_gateway to master February 21, 2023 14:27
@sinourain sinourain force-pushed the cybersource_rest_refund_credit branch from 1dc052e to 32b42cf Compare February 22, 2023 20:58
def url(action)
"#{(test? ? test_url : live_url)}#{action}"
"#{(test? ? test_url : live_url)}/pts/v2/#{action}"
Copy link
Contributor

@curiousepic curiousepic Feb 22, 2023

Choose a reason for hiding this comment

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

Do we expect to need to hit a different paths for other types of actions later? If not, I think we can just add this subpath to the base self.live/test_urls

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, reviewing the changes from @scastilloendava looks like the paths for store/unstore have another subpath


def credit(money, payment, options = {})
post = build_credit_request(money, payment, options)
commit('credits', post)
Copy link
Contributor

@curiousepic curiousepic Feb 22, 2023

Choose a reason for hiding this comment

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

Should this be credits/? Or instead remove the / from the payments call above

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No. Thanks, I removed / in the payments method

assert response.params['_links']['void'].present?
end

def test_successful_more_than_the_payment_amount_refund
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn't we expect this to fail?

Copy link
Contributor

@curiousepic curiousepic Feb 22, 2023

Choose a reason for hiding this comment

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

I guess not if their sandbox simulates the delay in confirmation, and just get a pending result.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

At this moment I have no way to prove that a refund of greater value than the purchase is complete (even if it should fail), I get to the pending response therefore I will remove this test

Copy link
Contributor

@curiousepic curiousepic left a comment

Choose a reason for hiding this comment

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

👍 Nice work, merging.

@curiousepic
Copy link
Contributor

@sinourain oops, could you squash the commits before I merge?

@sinourain
Copy link
Contributor Author

@sinourain oops, could you squash the commits before I merge?

Yes, I will, no worries

Description
-------------------------
This integration support the following payment operations:
- Refund
- Credit

Unit test
-------------------------
Finished in 40.91494 seconds.
5454 tests, 77134 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
133.30 tests/s, 1885.23 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

GWI-471
@sinourain sinourain force-pushed the cybersource_rest_refund_credit branch from 57af602 to 8498d23 Compare February 28, 2023 20:49
Ligator added a commit to Ligator/active_merchant that referenced this pull request Oct 16, 2023
* Stripe: Fix header for test account deletion call

Previously using Bearer Authorization instead of Basic. Previously, the
call did not seem to result in actual deletions, whereas after the
switch there were multiple deletions.

* Changelog fix

* Alelo: Trigger access token refresh on 404

In production, expired UUIDs may return as a 404 instead of a 401. This
expands the condition for refreshing access tokens to include a 404. No
Remote test is added because sending a bad UUID  seems to trigger a 500
from the sandbox instead of the 404 we see in prod.

Remote:
17 tests, 43 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:
23 tests, 105 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* DLocal: Add Network Tokens

Summary:
In order to support Network Tokens this commit
adds the supportability in the add_cart method
and supports_network_tokenization? method is
setted in true.

Closes #4608

Unit Test:
Finished in 0.256649 seconds.
43 tests, 188 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote Test:
Finished in 24.736933 seconds.
38 tests, 102 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
750 files inspected, no offenses detected

* Redsys: enable NTID generation with zero-value verify

A temporary fix to enable NTID generation for cards without an NTID before the Nov 1 Visa deadline

CER-234

* IPG Gateway: override store id

ECS-2655

The IPG gateway requires a `store_id` to be
used as part of the authentication. This
value is correlates to a given merchant and
is currently saved on the gateway initalize.
By saving it only then, it prevents merchants
with submerchants from using this gateway.

This commit adds a new optional field that
will override the saved `store_id` with one
passed in for that merchant.

Test Summary
Remote:
18 tests, 54 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Adyen: Field support for Level 2 and level 3 information

Description
-------------------------
Adding support in Adyen gateway to append level 2 and level 3 information that provides commercial shoppers with additional information about purchases on their card statements.

Closes #4617

Unit test
-------------------------
Finished in 0.117629 seconds.
103 tests, 522 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
Finished in 139.349852 seconds.
127 tests, 423 assertions, 14 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
88.9764% passed

Rubocop
-------------------------
750 files inspected, no offenses detected

* Add alternate alpha2 country code for Kosovo

Kosovo's XK country code is considered invalid by Adyen, but the Adyen API will accept QZ as a valid value to represent Kosovo instead

CER-266

* CyberSource: Refactor and add support for several fields

CER-243

This PR refactors the order of some methods to prevent XML parse errors. It also adds support for the following fields:

installment_gracePeriodDuration
taxManagementIndicator
purchaseTotals_invoiceAmount
purchaseTotals_originalAmount
invoiceHeader_referenceDataCode
invoiceHeader_invoiceNumber
ccCaptureService_gratuityAmount
ccAuthService_mobileRemotePaymentType
otherTax_vatTaxRate

Local:
5371 tests, 76705 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
118 tests, 600 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.6102% passed
There is one additional remote test failure due to the fields not being added at the top level.

Unit:
123 tests, 588 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Reach: adding gateway (#4618)

Summary:
------------------------------
Adding Reach gateway with authorize, purchase and capture
calls, also small correction on the CardStream local test
to complain with Rubocop warnings.

Remote Test:
------------------------------
Finished in 6.627757 seconds.
7 tests, 14 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
5365 tests, 76686 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
753 files inspected, no offenses detected

* Orbital: integration improvements

Orbital adapter is currently failing certification based on missing
support for these changes. Adds:

- Support for commercial echeck (BankAccountType = 'X')
- Support for Discover 3DS (DigitalTokenCryptogram)

Unit:
144 tests, 817 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
122 tests, 509 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

ECS-2144

* Reach: Adding custom fields (#4627)

* Reach: adding gateway

Summary:
------------------------------
Adding Reach gateway with authorize, purchase and capture
calls, also small correction on the CardStream local test
to complain with Rubocop warnings.

Remote Test:
------------------------------
Finished in 6.627757 seconds.
7 tests, 14 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
5365 tests, 76686 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
753 files inspected, no offenses detected

* Reach: Add customs fields

## Summary:

Adding Reach custom fields

Remote tests
--------------------------------------------------------------------------
12 tests, 27 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

unit tests
--------------------------------------------------------------------------
11 tests, 40 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Co-authored-by: cristian <Heavyblade@users.noreply.github.com>

* iVeri: Add additional url

Unit:
16 tests, 67 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
22 tests, 58 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Payeezy: Add apple pay

Integrate apple pay in payeezy implementation along with tests.

[Payeezy DPAN
implementation](https://developer.payeezy.com/payeezy-api/apis/post/transactions-7)
which is akin to our `NetworkTokenizationCreditCard` object

SER-336

Rubocop:
750 files inspected, no offenses detected

Unit: 43 tests, 201 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 42 tests, 172 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Payeezy Scrub Cryptogram (#4633)

Scrub the `xid` and `cavv` values from the transcript. Additional scrub
for `cvv`.

SER-336

Unit: 44 tests, 203 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 43 tests, 174 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Reach: add Scrubing (#4620)

Summary:
------------------------------
In order to scrub fields in the transaction transript, this commit
adds fields to be filtered.

Remote Test:
------------------------------
Finished in 10.189499 seconds.
7 tests, 18 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Test:
------------------------------
6 tests, 27 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
------------------------------
753 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.local>

* CyberSource: Refactor to better adhere to XSD

This PR updates a few methods so that fields can be sent independently without causing the method to return if certain fields aren’t present. It also updates the order in which some methods are added to the request re: the XSD file.

Unit Tests:
124 tests, 592 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
119 tests, 605 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
95.7983% passed
*There are 3 tests that have been failing for months and a few others that are failing intermittently associated with bank accounts. I tried to look and see if maybe just the response message had changed but the failures are unpredictable and sometimes pass, while another bank account test fails.

Local:
5399 tests, 76829 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CyberSource:Add fix for source.stored

fix tests

Closes #4629

* Mundipagg: send authorization_secret_key on all transaction types

Description
-------------------------
The authorization_secret_key GSF is set to be only sent on auth purchase transactions (the default), but this field is used for authenticating transactions and should be passed for every transaction type.

auth key field is added to transactions that do not currently include it
the remote test was updated due to outdated test card numbers

Closes #4635

Unit test
-------------------------
Finished in 0.029899 seconds.
32 tests, 164 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
Finished in 30.504306 seconds.
41 tests, 91 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
85.3659% passed

Rubocop
-------------------------
753 files inspected, 11 offenses detected, 11 offenses corrected

* Revert "CyberSource: Refactor to better adhere to XSD"

This reverts commit 77d6e0b38c769d3026b058b168e5dd65954716d0.

Local Tests
5399 tests, 76828 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests
123 tests, 588 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote Tests
118 tests, 602 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.4576% passed
*same 3 are failing on master

* CommerceHub: Add new gateway

Added new gateway `commerce_hub` along with remote and unit tests.

This integration includes support for `stored_credential` fields along
with basic gateway transactions, except for `capture`.

`capture` is currently not in a working state due to unknown
configuration issues with our test account.

In order to unblock this integration, I have left the transaction method in the gateway class and
opted to comment out the test. CommerceHub is working to enable our test
account for `capture` transactions, and once completed, we can re-test
the transaction type.

We also encounter a number of rate limit issues with our remote tests,
which leads to some of the test failures.

SER-207

Unit: 9 tests, 78 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
753 files inspected, no offenses detected

Remote: 15 tests, 30 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
66.6667% passed

* Reach: PSP Integration - Verify / Void / Refund (#4641)

Description
-------------------------
This integration support the following payment operations:

Verify
Void
Refund

Unit test
-------------------------

Finished in 40.346607 seconds.

5370 tests, 76698 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

133.10 tests/s, 1900.98 assertions/s

Remote test
-------------------------

Finished in 11.168364 seconds.

12 tests, 27 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

1.07 tests/s, 2.42 assertions/s

Rubocop
-------------------------

Running RuboCop...
Inspecting 753 files

753 files inspected, no offenses detected

* CyberSource: Update installment data method

CER-296

This PR updates the installment data method to better handle when only certain fields are added.

Remote Tests:
119 tests, 607 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.479% passed
*3 failing tests also failing on master

Unit Tests:
124 tests, 592 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Local Tests:
5410 tests, 76913 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* updating cabal BIN range
DX-240

This adds a couple of Cabal 8 digit BIN ranges, and moves Cabal higher in the selection process since
Discover has most of the BINs starting with 65

All local tests pass, did not run remote tests

5410 tests, 76915 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Reach: Add stored credential support (#4636)

Summary:
------------------------------
In order to be able to store credentials, this commit
adds add_stored_credentials method, and get_network_payment_reference
to be used in network_transaction_id

Remote Tests:
------------------------------
Finished in 36.906747 seconds.
16 tests, 42 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 2.793742 seconds.
16 tests, 75 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
------------------------------
753 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.local>

* Element: fix bug with billing address email

Enables the `add_address` method to successfully find `email` whether it is nested at the top level of the `options` hash or within the `billing_address` object

CER-330

* Reach: Fixing bug when using union pay card

This change aims to fix an bug related with the way to handle not
supported card brands.

Finished in 130.664153 seconds.
25 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Finished in 35.408869 seconds.
5415 tests, 76945 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

152.93 tests/s, 2173.04 assertions/s
Inspecting 756 files
756 files inspected, no offenses detected

* Reach: Fix bug CIT-Setup-Unscheduled

Summary:
    ------------------------------
    In order to perform 'CIT-Setup-Unscheduled' this commit fix typo
    from 'CIT-Setup-Unschedule' to 'CIT-Setup-Unscheduled'

    Remote Tests:
    ------------------------------
    Finished in 36.906747 seconds.
    16 tests, 42 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
    100% passed

    Unit Tests:
    ------------------------------
    Finished in 2.793742 seconds.
    16 tests, 75 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
    100% passed

    Rubocop:
    ------------------------------
    753 files inspected, no offenses detected

* Openpay: able to set URL by merchant country

Summary:
Add support to set service URL by setting the merchant country flag, with this capability openpay knows from which region is happening the transaction.

Closes #4637

Remote:
25 tests, 83 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96% passed

Unit:
22 tests, 113 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
753 files inspected, no offenses detected

* Alelo: Improving credentials refresh process

This change aims to prevent the extra call to get the access_token when the ecryption key expires also adds a change to properly filter out the access_token and encryption_key

Closes #4616

Remote Tests:
Finished in 29.913157 seconds.
17 tests, 43 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
Finished in 64.281953 seconds.
5376 tests, 76737 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
83.63 tests/s, 1193.76 assertions/s
Running RuboCop...
Inspecting 750 files

* Reach: refactor to prevent symbols on response

Summary:
------------------------------
Refactoring the parse method to parse JSON body
without symbols.

Remote Test:
------------------------------
Finished in 117.823171 seconds.
25 tests, 66 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 37.864568 seconds.
5416 tests, 76949 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* Decidir: Add transaction inquire request

Get payment status by payment id.

Unit
39 tests, 190 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote
25 tests, 88 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96% passed

* Reach: using transaction token as ReferenceId on refunds

* Reach: remove raise exception when pymentMethod is not allowed

* Reach: remove raise exception when stored-credentials can't be identified

* Reach: fixing typo on store credentials uncheduled

* Reach: refactor response methods and extra test for not paymentMethod

* Revert "Reach: refactor response methods and extra test for not paymentMethod"

This reverts commit e169025f2e1eb5ae7e4f5b52aea6ffa59b787572.

* Revert "Reach: fixing typo on store credentials uncheduled"

This reverts commit ad2e33306ebe0d9e4ff344c28217d9935924aedd.

* Revert "Reach: remove raise exception when stored-credentials can't be identified"

This reverts commit 4e1d3cd5ee9481bfcfde960b3d2d29b8f395f6a7.

* Revert "Reach: remove raise exception when pymentMethod is not allowed"

This reverts commit 7b973d9aef5133a12f33d251a35a57874cacb810.

* Revert "Reach: using transaction token as ReferenceId on refunds"

This reverts commit e40e1ee50e3687f5b123546dcf83141be1440073.

* Reach: fixing store credentials and Exception issues

Summary:
------------------------------
This PR solves 4 issues:

1) Remove exception for no allowed store credentials
combination and leave the field empty.

2) Remove exception for not supported card brand
and sent instead a not supported string.

3) Fixes a Typo on stored credentials code and test
related with 'unscheduled' transactions.

4) Fixes and add the corresponding tests for 1 to 3.

Remote Test:
------------------------------
Finished in 136.495605 seconds.
27 tests, 70 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 33.332219 seconds.
5419 tests, 76964 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* EBANX: add soft_descriptor field

This field can be optionally passed in with the `creditcard` hash

CER-317

* CommerceHub: Add Apple Pay and Google Pay (#4648)

Summary:
------------------------------
In order to perform transactions using Apple Pay and Google Pay
this commit adds the fields required and optionals to made succesful
requests.

Remote Tests:
------------------------------
Finished in 76.906747 seconds.
19 tests, 52 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 0.193742 seconds.
13 tests, 111 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
------------------------------
756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.domain.name>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Global Collect & Alelo: Fixing year dependent failing tests

Summary
-----------------------

Changes a couple of tests that depend on date year

Closes #4665

Unit test
-----------------------
Finished in 40.268913 seconds.
5424 tests, 77006 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
756 files inspected, no offenses detected

* Moneris: Add Google Pay

Description
-------------------------
Add google pay to moneris gateway

Closes #4666

Unit test
-------------------------
Finished in 32.996352 seconds.
5424 tests, 77006 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
164.38 tests/s, 2333.77 assertions/s

Rubocop
-------------------------
Running RuboCop...
Inspecting 756 files
756 files inspected, no offenses detected

* Element/Vantiv: Add google pay and apple pay support

Summary:

This PR updates element/vantiv gateway to support apple/google pay transactions

Remote Tests

Finished in 35.250506 seconds.
31 tests, 86 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Reach: fix amount handling to work with cents properly (#4670)

Summary:
------------------------------
Provides proper format handling on reach gateway to receive
amount as cents on authorize/purchase and refund.

Remote Test:
------------------------------
Finished in 105.613556 seconds.
28 tests, 70 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------

Finished in 30.429736 seconds.
5425 tests, 77010 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* GlobalCollect: Add transaction inquire request

Get payment status by payment id.

Unit:
44 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
41 tests, 108 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.561% passed

* Stripe PI: Add Level 3 support

Remote:
79 tests, 346 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
88.6076% passed

Unit:
43 tests, 219 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Braintree: return additional processor response

Adds the `additional_processor_response` to the transaction hash for unsuccessful transactions

CER-284
LOCAL
5414 tests, 76942 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

REMOTE
100 tests, 491 assertions, 4 failures, 4 errors, 0 pendings, 0 omissions, 0 notifications
92% passed

These failures/errors are present on the master branch as well

* Payeezy name from `billing_address` on `purchase`

Allow for the `billing_address` name value to be used if the `name`
value is blank for the payment method

Unit:
45 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 45 tests, 180 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe: add reverse_transfer to void transactions

Both the void and refund methods call Stripe's /refunds endpoint, but the ability to sendoptions[:reverse_transfer] was not initially added to the void method

CER-360
UNIT
5425 tests, 77010 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

REMOTE
77 tests, 362 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Update Changelog for PR #4668

* GlobalCollect: fix inquire bug

* Credorax: Support google pay and apple pay

Summary:
------------------------------
Being able to use google pay and apple pay as payment methods by Credorax gateway

Closes #4661

Remote Test:
------------------------------
Finished in 117.823171 seconds.
25 tests, 66 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 37.864568 seconds.
5416 tests, 76949 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* Plexo: add 5 credit card brands (#4652)

This change adds 5 new credit card brands (passcard, edenred, anda, tarjeta-d, sodexo bins ) and allows plexo gateway to use it.

Remote Tests:
Finished in 45.329665 seconds.
28 tests, 50 assertions, 0 failures, 0 errors, 0 pendings, 3 omissions, 0 notifications
100% passed

Unit Tests:
Finished in 0.013674 seconds.d
20 tests, 115 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
756 files inspected, no offenses detected

Update CHANGELOG

* Authorize.net: Google pay token support

Added remote test cases to Authorize for google pay authorize

GWI-404

Closes #4659

...................................................................................
Finished in 96.632847 seconds.
----------------------------------------------------------------------------------------------------------------------------------------------------
83 tests, 297 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
----------------------------------------------------------------------------------------------------------------------------------------------------
0.86 tests/s, 3.07 assertions/s

* Credorax: Add support for Network Tokens

Summary:
------------------------------
Enable the Credorax gateway to support payments via network_token

Closes #4679

Remote Test:
------------------------------
51 tests, 163 assertions, 12 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
76.4706% passed

tests failures not related with the changes

Unit Tests:
------------------------------
26 tests, 132 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* Stripe PI: use MultiResponse in create_setup_intent

This change makes it possible to access the result of the call to /payment_methods alongside the ultimate result of the call to /setup_intents

CER-357

REMOTE
80 tests, 378 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
5439 tests, 77065 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Payeezy change `method` on capture (#4684)

For Apple Pay transactions, the value for `method` is set to `3DS`, but
when executing a `capture`, this value should be changed to
`credit_card`.

This differs from other use cases where the value provided on auth
transactions should be the same one given for capture.

Unit: 45 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Credorax: Update MIT logic

Credorax is changing the requirements for MIT transactions
in regards to NTIDs. Moving forward, all MIT transactions need to
pass in the NTID if present. Additionally the NTID value
is from the `Z50` flag and passed directly from the card scheme.

Credorax notification:
For any MIT transactions, this Trace ID must be stored from the original Card Holder initiated (CIT) transaction where the Card details were stored on file originally. When using Finaro gateway/acquiring this Trace ID is returned in the z50 parameter and must be sent in the g6 parameter for any subsequent MIT transactions, (if using an external token engine or your own token engine and the original CIT is not processed through Finaro, please liaise with your processor to obtain this Trace ID). Additionally, this original Card holder initiated transaction must be Fully authenticated with 3DSecure to comply with PSD2/SCA regulation in place.
Please make sure that you comply with this for any customers saving their card details on file for subsequent MIT processed through Finaro

ECS-2650

Test Summary
The remote tests with stored creds now work but take ~17 minutes for me. Additionally
there are some failing tests for me (on master as well). Can anyone else run these?

* Adyen: Add support for `skip_mpi_data` flag

CER-333

This change will allow for recurring payments with Apple Pay on
Adyen by eliminating mpi data hash from request after initial payment.

Unit:
104 tests, 528 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
131 tests, 440 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.8397% passed

Local:
5430 tests, 77037 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Add Canadian Institution Numbers

Adds two additional valid Canadian Institution Numbers: 618, 842
https://en.wikipedia.org/wiki/Routing_number_(Canada)

CER-403

5439 tests, 77066 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Payeezy: Handle nil and empty values for Apple Pay

Payeezy support has indicated that passing empty or nil values in place
of the `xid` and `cavv` may result in failed transactions for AMEX based
AP tokens. They also informed us that the `eci_indicator` value should
default to `5` instead of passing a nil value, following a similar
pattern.

This PR ignores empty `payment_cryptogram` and defaults the
`eci_indicator` to `5` if that value is `nil`.

Unit: 6 tests, 211 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Tns: update test URL

Update test URL to be only secure.uat.tnspayments.

Unit Test:
15 tests, 68 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce: Update `authorization_from` to handle `store` response (#4691)

Fix Store/Unstore features

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
20 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce Verify feature added (#4692)

Enable verify feature on TrustCommerce Gateway

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
22 tests, 72 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 100% passed

* Rapyd: Add customer object to transactions (#4664)

Description
-------------------------
Rapyd Gateway send customer info on store transactions, with this commit
it will be able to send customer on authorize and purchase transaction,
when it use a US “PMT”s include the addresses object into the customer data
in order to be able to perform US transactions properly.

Unit test
-------------------------

Finished in 0.123245 seconds.
22 tests, 103 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------

Finished in 100.082672 seconds.
33 tests, 92 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
0.33 tests/s, 0.92 assertions/s

Rubocop
-------------------------

756 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* CybersourceRest: Add new gateway with authorize and purchase

Summary:
------------------------------
Adding CybersourceRest gateway with authorize and purchase
calls.

Closes #4690

GWI-474

Remote Test:
------------------------------

Finished in 3.6855 seconds.
6 tests, 17 assertions, 1 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 35.528692 seconds.
5441 tests, 77085 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* CheckoutV2: Add store/unstore (#4677)

Summary:
    ------------------------------
    In order to use Third Party Vaulting (TPV), this commit adds store and unstore methods.
    For ApplePay (and NT in general) the verify method is used, to get a similar response, and
    formatted to be equal to the store response using the /instruments endpoint.

Remote test
    -----------------------
    Finished in 240.268913 seconds.
    82 tests, 203 assertions, 1 failures, 0 errors,
    0 pendings, 0 omissions, 0 notifications
    97.561% passed

Unit test
    -----------------------
    Finished in 0.268913 seconds.
    52 tests, 289 assertions, 0 failures, 0 errors,
    0 pendings, 0 omissions, 0 notifications
    100% passed

Rubocop
    -----------------------
    756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.domain.name>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Revert "CheckoutV2: Add store/unstore (#4677)" (#4703)

This reverts commit e769cdb908d4a8543bc68f13a4f7aa04c60daf59.

* Moneris: Fix google pay (update apple pay) (#4689)

Description
-------------------------
Truncate google pay and apple pay order id to 100 (max length of characters that google pay / apple pay accepts)

Unit test
-------------------------
Finished in 37.884991 seconds.
5439 tests, 77066 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
143.57 tests/s, 2034.21 assertions/s

Rubocop
-------------------------
756 files inspected, no offenses detected

Co-authored-by: Luis <sinourain+endava@gmail.com>

* Litle: Add prelive url

This commit adds a prelive URL to the Vantiv/Litle
gateway. It relies on the existing url_override logic
to set the prelive_url

Test Summary
Remote:
56 tests, 226 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
76.7857% passed

* CommerceHub: Adding changes for certification purposes (#4705)

Summary:
------------------------------
Add changes to address some observations / improvements
in the CommerceHub certification.

* SER-494 / SER-498: setting and using order_id as reference
* SER-495: use the correct end-point for verify
* SER-496 / SER-497: get avs and cvv verification codes
* SER-500: getting an error code from response

Remote Test:
------------------------------
Finished in 108.050361 seconds.
23 tests, 63 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 46.103032 seconds.
5458 tests, 77155 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* CommerceHub: Fixing verify status and prevent tokenization (#4716)

Summary:
------------------------------
* SER-495: Fix success detection for verify
* SER-507: set default `create_token` for purchase and
authorize transactions

Remote Test:
------------------------------
Finished in 290.029817 seconds.
23 tests, 64 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 46.103032 seconds.
5458 tests, 77155 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Payeezy: Update Stored Credentials

Payeezy requires sending original network transaction id to as
cardbrand_original_transaction_id.

Unit:
47 tests, 217 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Remove raise ArgumentError on get requests (#4714)

The case for initiating a GET request raises a frivolous ArgumentError
when the code already ignores any attempt to pass in a body to the
request.

* ChekoutV2:Add store/unstore (#4712)

Summary:
------------------------------
In order to use Third Party Vaulting (TPV), this commit adds store and unstore methods.
For apple pay/google pay the actual credentials could work, but for credit cards, and
bank account the credentials required are secret_api_key and public_api_key.

This commits also, refactor the initialize method removing the rescue ArgumentError,
and modifing the commit method to use ssl_request.

Remote test
-----------------------
Finished in 164.163913 seconds.
88 tests, 216 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.046893 seconds.
53 tests, 297 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.local>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* CybersourceREST - Refund | Credit

Description
-------------------------
This integration support the following payment operations:
- Refund
- Credit

Closes #4700

Unit test
-------------------------
Finished in 40.91494 seconds.
5454 tests, 77134 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
133.30 tests/s, 1885.23 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

GWI-471

* Payeezy: Ignore `xid` for AP Amex (#4721)

Payeezy has stated the inclusion of `xid` values for AP (Amex
underlying) transactions could result in failures. Add guard to ignore
adding this field if the underlying is `american_express`

Unit: 49 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 47 tests, 186 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce Verify feature added (#4699)

Enable verify feature on TrustCommerce Gateway

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
22 tests, 72 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 100% passed

* CER-440

Add papypal_custom_field and paypal_description gateway specific fields to braintree_blue gateway.

Local:
5455 tests, 77085 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6517% passed

Unit:
94 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
101 tests, 493 assertions, 4 failures, 4 errors, 0 pendings, 0 omissions, 0 notifications
92.0792% passed

* CER-460 Add descriptor phone number to blue_snap

Local:
5457 tests, 77095 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6518% passed

Unit:
45 tests, 269 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
53 tests, 171 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
83.0189% passed

* Braintree: Update transaction hash method

This PR is to update the transaction method to include the processor_authorization_code.

* CyberSourceRest: Add apple pay, google pay

Summary:
-----------------------

In order to perform ApplePay and GooglePay
transaction this commit, adds support.

Closes #4708

Remote test
-----------------------
Finished in 7.216327 seconds.
18 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.032725 seconds.
15 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
760 files inspected, no offenses detected

* CyberSourceRest: Add apple pay, google pay

Summary:
-----------------------

In order to perform ApplePay and GooglePay
transaction this commit, adds support.

Closes #4708

Remote test
-----------------------
Finished in 7.216327 seconds.
18 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.032725 seconds.
15 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
760 files inspected, no offenses detected

* CybersourceREST - Void | Verify

Description
-------------------------

This integration support the following payment operations:

Verify
Void

Closes #4695

Unit test
-------------------------
Finished in 29.20384 seconds.
5468 tests, 77209 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
186.76 tests/s, 2641.23 assertions/s

Rubocop
-------------------------
Inspecting 760 files
760 files inspected, no offenses detected

* CommerceHub: adjusting reference details (#4723)

Summary:
------------------------------
Changes reference details to properly send
`referenceTransactionDetails` on capture requests

Remote Test:
------------------------------
Finished in 290.029817 seconds.
23 tests, 64 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 47.993895 seconds.
5463 tests, 77178 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Orbital: dismiss CardSecValInd restriction (#4724)

GWI-567

Remote:
122 tests, 509 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:
144 tests, 817 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
760 files inspected, no offenses detected

* Credorax: Set default ECI values for token transactions

Condition eci field depending on payment_method

 Closes #4693

* CyberSource Rest: Add ACH Support

Adding ACH/Bank Accounts to CyberSource Rest

Closes #4722

Unit test:
13 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test:
10 tests, 26 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GWI-480

* CommerceHub: setting transactionReferenceId for refunds (#4727)

Summary:
------------------------------
Updating the refund reference to only use referenceTransactionId

Remote Test:
------------------------------
Finished in 291.397602 seconds.
23 tests, 64 assertions, 1 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
95.6522% passed

Unit Tests:
------------------------------
Finished in 37.637689 seconds.
5474 tests, 77230 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Cybersource REST: Adding capture request

Summary:
------------------------------
Adding the capture functionality to the Cybersource REST
gateway

Closes #4726

Remote Test:
------------------------------
Finished in 25.504733 seconds.
25 tests, 89 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 39.743032 seconds.
5468 tests, 77209 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Paymentez: Add inquire by transaction_id

Get payment status by Paymentez transaction id

Unit:
30 tests, 127 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
34 tests, 73 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
73.5294% passed
** These failures also existed on the main branch **

* Cybersource Rest - update message response on error

Description
-------------------------
Update message response on error in order to get a more redeable response

GWI-571

Unit test
-------------------------

Finished in 30.871357 seconds.
5476 tests, 77239 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------

177.38 tests/s, 2501.96 assertions/s

Rubocop
-------------------------

760 files inspected, no offenses detected

* Ebanx: Add transaction inquire request

Get transaction by authorization.

Remote:
27 tests, 73 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.2963% passed

Unit:
20 tests, 89 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CommerceHub: Update fields for transactions with sotred credentials (#4733)

Description
-------------------------
This commit add new fields for transactions with stored credentials options
and remove the current referenceMerchantTransactionId in order to use
referenceTransactionId

[SER-504](https://spreedly.atlassian.net/browse/SER-504)
[SER-536](https://spreedly.atlassian.net/browse/SER-536)

Unit test
-------------------------
Finished in 0.01392 seconds.

22 tests, 147 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

1580.46 tests/s, 10560.34 assertions/s

Remote test
-------------------------
Finished in 296.371956 seconds.

24 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

0.08 tests/s, 0.21 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* Ebanx: Add support of Elo & Hipercard

For all credit card transactions Ebanx only requires payment_type_code to
be 'creditcard' no matter the card. This removes the need of specifiying
the card brand in Ebanx transaction.
Unit:
19 tests, 84 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
28 tests, 74 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.4286% passed

* Checkout_v2: Add idempotency key support

This PR is to add the support for an optional idempotency key through the header during requests and should be available to all actions 'purchase, authorize, and etc'. I did note that the failing remote tests were sending back 401 unauthorize even when on the latest upstream master. Test results below:
Local:
5469 tests, 77162 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6526% passed

Unit:
54 tests, 300 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
89 tests, 213 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
95.5056% passed

* Adyen: add support for shopper_statement field for capture action

* Checkout_v2: update idmepotency_key names

* * Payeezy: Enable external 3DS

Summary:
------------------------------
This PR includes the fields and logic required to send external 3ds data
for purchases and auths.

Closes #4715

Test Execution:
------------------------------
Unit test
Finished in 0.067186 seconds.
46 tests, 211 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
Finished in 140.523393 seconds.
48 tests, 194 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Failures not related with the added code

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Shift4: Fix `Content-type` value (#4740)

Change `Content-type` value to `applicaiton/json` instead of xml

Unit: 23 tests, 147 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 24 tests, 56 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
91.6667% passed

* Ebanx: Remove default email

ECS-2829

Ebanx requires that merchants pass in an email in
order to complete a transaction. Previously, ActiveMerchant
was sending in a default email if one was not provided which
causes Ebanx's fraud detection to mark these transactions as
failed for fraud. This incorrect failure message has led to
merchant frustration since they could not quickly know the
root of the problem

Test Summary
Remote:
32 tests, 88 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.875% passed

* CyberSourceRest: Add stored credentials support

Description
-------------------------
This commit adds support for stored credentials to the CyberSourceRest gateway
and according to their docs CyberSource has two type of flows
[initial](https://developer.cybersource.com/docs/cybs/en-us/payments/developer/ctv/rest/payments/credentials-intro/credentials-maxtrix/credentials-maxtrix-initial.html) and [subsequent](https://developer.cybersource.com/docs/cybs/en-us/payments/developer/ctv/rest/payments/credentials-matrix/credentials-matrix-sub.html)

Closes #4707

Unit test
-------------------------
Finished in 0.025301 seconds.

18 tests, 97 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

711.43 tests/s, 3833.84 assertions/s

Remote test
-------------------------

Finished in 25.932718 seconds.

29 tests, 107 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

1.12 tests/s, 4.13 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

* Payeezy: Add `last_name` for `add_network_tokenization`

This change updates the `add_network_tokenization` method to include the
`last_name` in the `cardholder_name` value when getting the name from a
payment method

Closes #4743

Unit: 49 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 50 tests, 201 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe PI: tokenize PM for verify

ECS-2867

For the Stripe PI gateway, when a merchant runs a verify
they want to get back the resulting card information that
Stripe provides. In off_session cases we are not tokenizing
the card at Stripe which prevents us from getting back
valuable card details.

This commit updates the logic to always get the card details
back from Stripe on verify transactions.

This commit also improves the resiliency of Stripe PI remote tests
by dynamically creating a customer object before running the remote
tests so that they do not error out with a too many payment
methods for customer message.

Test Summary
Remote:
80 tests, 380 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Kushki Gateway: Add support for the months and deferred fields

* Borgun: Update TrCurrencyExponent

ECS-2861

A merchant using the Borgun gateway reported that when
a user was completing the challenge, the gateway was displaying
a value 100 times greater than what was requested. This casused
the ccardholders to stop the 3DS flow and abandon the cart.

After reaching out to the Borgun gateway they explained that
the ISK currency on Borgun is sometimes a 0 decimal currency
and sometimes a 2 decimal currency. The explanation given
via email is that we must provide the TrCurrencyExponent
of 2 when utilizing the 3DS flow but not on the finish sale
portion.

Remote:
22 tests, 47 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed
Note: these 2 tests fail on master

* CyberSourceRest: Add gateway specific fields handling

Summary:
In order to handle several gateway specific fields this commit add the following ones in the cybersource rest gateway file
- ignore_avs
- ignore_cvv
- mdd_fields
- reconciliation_id
- customer_id
- zero_amount_verify
- sec_code

Closes  #4746

Remote Test:
Finished in 36.507289 seconds.
35 tests, 108 assertions, 0 failures, 0 errors, 0 pendings,0 omissions, 0 notifications 100% passed

Unit Tests:
Finished in 0.06123 seconds.
2718 tests, 150 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed

RuboCop:
760 files inspected, no offenses detected

* IPG: Improve error handling

Summary:
------------------------------

This change improves the amount of detail in the response
message when the gateway responds with an error.

Closes #4753

Remote Test:
------------------------------
Remote:
18 tests, 54 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 29.462929 seconds
5483 tests, 77277 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* * Shift4: Handle access token failed calls

Summary:
------------------------------
Adding changes to handle failed calls to get the access token

GWS-46

Closes #4745

Remote Test:
------------------------------
Finished in 172.659123 seconds.
24 tests, 56 assertions, 2 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
91.6667% passed

Unit Tests:
------------------------------
Finished in 40.296092 seconds.
5480 tests, 77260 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Bogus: Add verify, plus assoc. test

* Checkout v2: Add Shipping Address

Add shipping address local and remote tests

Remove Marketplace object as not supported for Sandbox testing

* Release 1.128.0

* Adyen: update selectedBrand mapping for Google Pay

Adyen advised that `googlepay` is the correct value to send for `selectedBrand`

CER-550

LOCAL
5498 tests, 77340 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

GATEWAY - UNIT TESTS
105 tests, 531 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GATEWAY - REMOTE TESTS
132 tests, 443 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed

* Shift4: add vendorReference field

This change maps `options[:order_id]` to Shift4's `vendorReference` field

CER-563

LOCAL
5498 tests, 77341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

GATEWAY UNIT TESTS
25 tests, 154 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GATEWAY REMOTE TESTS
25 tests, 58 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
92% passed
(These failures also exist on the master branch)

* Litle update the successful_from method

Add 001 and 010 to be considered successful responses for Litle.

Remote
57 tests, 251 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Unit
58 tests, 255 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Improve error handling: OAuth

ECS-2845

OAuth has become a standard authentication
mechanism for many gateways in recent years
however AM has not been updated to support error
handling when a merchant passes incorrect details
to the gateway.

In non OAuth flows we would return a failed response.
This commit now raises a new exception type indicating that
the request failed at the OAuth stage rather than the
transaction stage of a request

Remote:
25 tests, 57 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
92% passed

* Stripe PI: Add billing address when tokenizing for ApplePay and GooglePay

This adds functionality to add the card's billing address to digital wallets ApplePay and GooglePay. The billing address is available on the result of the card tokenization and is saved to the created PaymentIntent.

The remote test failures also exist on `master`.

Test Summary
Local: 5500 tests, 77348 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit: 83 tests, 368 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
93.9759% passed

* Rexml is no longer a default gem in Ruby 3 (#3852)

* Revert "Rexml is no longer a default gem in Ruby 3 (#3852)" (#4767)

This reverts commit dad65a7cb70985e1b477231c4d7e33455d40e04c. It caused ci to fail due to a rexml issue.

* Add rexml as a gem dependency (#4768)

* Add rexml as a gem dependency

Rexml is no longer included with Ruby 3+, we therefore need to add the dependency explicitely.

* Remove garbage character from test file

* Release v1.129.0

* Mit: Changed how the payload was sent to the gateway

Closes #4655

* Revert "Mit: Changed how the payload was sent to the gateway"

This reverts commit 6e3cd4b431fdd521e955d80fa3133f6dc2653899.

* PayuLatam:
The original method of surfacing error codes was redundant and didn't actually surface a network code that is particularly useful. This PR aims to fix that issue for failing transactions.

* CyberSource: Handling Canadian bank accounts

Summary:
------------------------------
Add changes to CyberSource to properly format canadian routing
numbers when payment methods is bank account.

GWS-48

Closes #4764

Remote Test:
------------------------------
Finished in 114.912426 seconds.
121 tests, 611 assertions, 5 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
95.8678% passed

*Notes on erros*:
The test suite was ran with a single account rason for errors:
- 2 errors correspondsto account not enabled for canadian bank transactions.
- 2 errors correspond to outdated 3ds PAR values.
- 1 error related with account not enabled for async.

Unit Tests:
------------------------------
Finished in 41.573188 seconds.
5501 tests, 77346 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Update Changelog

* CyberSource Rest: Fixing currency detection

Summary:
------------------------------
Fix bug on Cybersource Rest to use other currencies
different than USD.

Closes #4777

Remote Test:
------------------------------
Finished in 46.080483 seconds.
43 tests, 141 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 33.72359 seconds.
5506 tests, 77384 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Cybersource: Add business rules for NT

ECS-2849

A previous commit from 2015 restricted the ability to pass
business rules such as `ignoreAVSResult` and `ignoreCVResult` on
API requests with NetworkTokenization cards. Merchants are now
asking for this to be allowed on requests with payment methods
such as NT/AP/GP and the remote tests seem to indicate we can
add these fields for these types of payment methods.

Remote CBYS SOAP:
119 tests, 607 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.479% passed
Remote CYBS Rest:
46 tests, 152 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Adyen: Update Mastercard error messaging

Adyen error messaging uses the generic refusalReasonRaw
field as part of the response message. Adyen offers a more
detailed Mastercard-specific field called merchantAdviceCode
that should be present for failed Mastercard transactions.

Adyen error messaging now checks for the merchantAdviceCode first.
If it is not present (i.e. this is not a Mastercard transaction
or it is a Mastercard transaction and this field is missing for
some reason) then the default refusalReasonRaw field is used (like
previous functionality).

ECS-2767

Unit:
107 tests, 539 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
132 tests, 443 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed
*These 12 tests fail on master

Closes #4770

* Authorize.net: update mapping for billing address phone number

Adds a bit of logic to the Authorize.net gateway so that phone number can be passed via `billing_address[phone_number]` in addition to `billing_address[phone]` This is similar to #4138

CER-590

LOCAL
5503 tests, 77374 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
121 tests, 681 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
84 tests, 301 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Braintree: update mapping for billing address phone number

Adds a bit of logic to the Braintree gateway so that phone number can be passed via billing_address[phone_number] in addition to billing_address[phone] This is similar to #4138

CER-603

LOCAL
5505 tests, 77373 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
94 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
103 tests, 550 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CommerceHub: Enabling multi-use public key encryption (#4771)

Summary:
------------------------------
Changes the payment method so is possible to send an encrypted
credit card following the CommerceHub Multi-User public key
methodology.

SER-555

Note on failing test: You need the proper account permissions and
credentials to use the encrypted credit card.

Remote Test:
------------------------------
Finished in 288.325843 seconds.
25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 38.640945 seconds.
5506 tests, 77384 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

Co-authored-by: cristian <Heavyblade@users.noreply.github.com>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Ogone: Enable 3ds Global for Ogone Gateway (#4776)

Description
-------------------------------------------

This commit introduces the support for 3DS Global payments usin…
mfrederickson added a commit to connectcef/active_merchant that referenced this pull request Nov 10, 2023
* Reach: remove raise exception when stored-credentials can't be identified

* Reach: fixing typo on store credentials uncheduled

* Reach: refactor response methods and extra test for not paymentMethod

* Revert "Reach: refactor response methods and extra test for not paymentMethod"

This reverts commit e169025f2e1eb5ae7e4f5b52aea6ffa59b787572.

* Revert "Reach: fixing typo on store credentials uncheduled"

This reverts commit ad2e33306ebe0d9e4ff344c28217d9935924aedd.

* Revert "Reach: remove raise exception when stored-credentials can't be identified"

This reverts commit 4e1d3cd5ee9481bfcfde960b3d2d29b8f395f6a7.

* Revert "Reach: remove raise exception when pymentMethod is not allowed"

This reverts commit 7b973d9aef5133a12f33d251a35a57874cacb810.

* Revert "Reach: using transaction token as ReferenceId on refunds"

This reverts commit e40e1ee50e3687f5b123546dcf83141be1440073.

* Reach: fixing store credentials and Exception issues

Summary:
------------------------------
This PR solves 4 issues:

1) Remove exception for no allowed store credentials
combination and leave the field empty.

2) Remove exception for not supported card brand
and sent instead a not supported string.

3) Fixes a Typo on stored credentials code and test
related with 'unscheduled' transactions.

4) Fixes and add the corresponding tests for 1 to 3.

Remote Test:
------------------------------
Finished in 136.495605 seconds.
27 tests, 70 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 33.332219 seconds.
5419 tests, 76964 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* EBANX: add soft_descriptor field

This field can be optionally passed in with the `creditcard` hash

CER-317

* CommerceHub: Add Apple Pay and Google Pay (#4648)

Summary:
------------------------------
In order to perform transactions using Apple Pay and Google Pay
this commit adds the fields required and optionals to made succesful
requests.

Remote Tests:
------------------------------
Finished in 76.906747 seconds.
19 tests, 52 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 0.193742 seconds.
13 tests, 111 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
------------------------------
756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.domain.name>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Global Collect & Alelo: Fixing year dependent failing tests

Summary
-----------------------

Changes a couple of tests that depend on date year

Closes #4665

Unit test
-----------------------
Finished in 40.268913 seconds.
5424 tests, 77006 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
756 files inspected, no offenses detected

* Moneris: Add Google Pay

Description
-------------------------
Add google pay to moneris gateway

Closes #4666

Unit test
-------------------------
Finished in 32.996352 seconds.
5424 tests, 77006 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
164.38 tests/s, 2333.77 assertions/s

Rubocop
-------------------------
Running RuboCop...
Inspecting 756 files
756 files inspected, no offenses detected

* Element/Vantiv: Add google pay and apple pay support

Summary:

This PR updates element/vantiv gateway to support apple/google pay transactions

Remote Tests

Finished in 35.250506 seconds.
31 tests, 86 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Reach: fix amount handling to work with cents properly (#4670)

Summary:
------------------------------
Provides proper format handling on reach gateway to receive
amount as cents on authorize/purchase and refund.

Remote Test:
------------------------------
Finished in 105.613556 seconds.
28 tests, 70 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------

Finished in 30.429736 seconds.
5425 tests, 77010 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* GlobalCollect: Add transaction inquire request

Get payment status by payment id.

Unit:
44 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
41 tests, 108 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.561% passed

* Stripe PI: Add Level 3 support

Remote:
79 tests, 346 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
88.6076% passed

Unit:
43 tests, 219 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Braintree: return additional processor response

Adds the `additional_processor_response` to the transaction hash for unsuccessful transactions

CER-284
LOCAL
5414 tests, 76942 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

REMOTE
100 tests, 491 assertions, 4 failures, 4 errors, 0 pendings, 0 omissions, 0 notifications
92% passed

These failures/errors are present on the master branch as well

* Payeezy name from `billing_address` on `purchase`

Allow for the `billing_address` name value to be used if the `name`
value is blank for the payment method

Unit:
45 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 45 tests, 180 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe: add reverse_transfer to void transactions

Both the void and refund methods call Stripe's /refunds endpoint, but the ability to sendoptions[:reverse_transfer] was not initially added to the void method

CER-360
UNIT
5425 tests, 77010 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

REMOTE
77 tests, 362 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Update Changelog for PR #4668

* GlobalCollect: fix inquire bug

* Credorax: Support google pay and apple pay

Summary:
------------------------------
Being able to use google pay and apple pay as payment methods by Credorax gateway

Closes #4661

Remote Test:
------------------------------
Finished in 117.823171 seconds.
25 tests, 66 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 37.864568 seconds.
5416 tests, 76949 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* Plexo: add 5 credit card brands (#4652)

This change adds 5 new credit card brands (passcard, edenred, anda, tarjeta-d, sodexo bins ) and allows plexo gateway to use it.

Remote Tests:
Finished in 45.329665 seconds.
28 tests, 50 assertions, 0 failures, 0 errors, 0 pendings, 3 omissions, 0 notifications
100% passed

Unit Tests:
Finished in 0.013674 seconds.d
20 tests, 115 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
756 files inspected, no offenses detected

Update CHANGELOG

* Authorize.net: Google pay token support

Added remote test cases to Authorize for google pay authorize

GWI-404

Closes #4659

...................................................................................
Finished in 96.632847 seconds.
----------------------------------------------------------------------------------------------------------------------------------------------------
83 tests, 297 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
----------------------------------------------------------------------------------------------------------------------------------------------------
0.86 tests/s, 3.07 assertions/s

* Credorax: Add support for Network Tokens

Summary:
------------------------------
Enable the Credorax gateway to support payments via network_token

Closes #4679

Remote Test:
------------------------------
51 tests, 163 assertions, 12 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
76.4706% passed

tests failures not related with the changes

Unit Tests:
------------------------------
26 tests, 132 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* Stripe PI: use MultiResponse in create_setup_intent

This change makes it possible to access the result of the call to /payment_methods alongside the ultimate result of the call to /setup_intents

CER-357

REMOTE
80 tests, 378 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
5439 tests, 77065 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Payeezy change `method` on capture (#4684)

For Apple Pay transactions, the value for `method` is set to `3DS`, but
when executing a `capture`, this value should be changed to
`credit_card`.

This differs from other use cases where the value provided on auth
transactions should be the same one given for capture.

Unit: 45 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Credorax: Update MIT logic

Credorax is changing the requirements for MIT transactions
in regards to NTIDs. Moving forward, all MIT transactions need to
pass in the NTID if present. Additionally the NTID value
is from the `Z50` flag and passed directly from the card scheme.

Credorax notification:
For any MIT transactions, this Trace ID must be stored from the original Card Holder initiated (CIT) transaction where the Card details were stored on file originally. When using Finaro gateway/acquiring this Trace ID is returned in the z50 parameter and must be sent in the g6 parameter for any subsequent MIT transactions, (if using an external token engine or your own token engine and the original CIT is not processed through Finaro, please liaise with your processor to obtain this Trace ID). Additionally, this original Card holder initiated transaction must be Fully authenticated with 3DSecure to comply with PSD2/SCA regulation in place.
Please make sure that you comply with this for any customers saving their card details on file for subsequent MIT processed through Finaro

ECS-2650

Test Summary
The remote tests with stored creds now work but take ~17 minutes for me. Additionally
there are some failing tests for me (on master as well). Can anyone else run these?

* Adyen: Add support for `skip_mpi_data` flag

CER-333

This change will allow for recurring payments with Apple Pay on
Adyen by eliminating mpi data hash from request after initial payment.

Unit:
104 tests, 528 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
131 tests, 440 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.8397% passed

Local:
5430 tests, 77037 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Add Canadian Institution Numbers

Adds two additional valid Canadian Institution Numbers: 618, 842
https://en.wikipedia.org/wiki/Routing_number_(Canada)

CER-403

5439 tests, 77066 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Payeezy: Handle nil and empty values for Apple Pay

Payeezy support has indicated that passing empty or nil values in place
of the `xid` and `cavv` may result in failed transactions for AMEX based
AP tokens. They also informed us that the `eci_indicator` value should
default to `5` instead of passing a nil value, following a similar
pattern.

This PR ignores empty `payment_cryptogram` and defaults the
`eci_indicator` to `5` if that value is `nil`.

Unit: 6 tests, 211 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Tns: update test URL

Update test URL to be only secure.uat.tnspayments.

Unit Test:
15 tests, 68 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce: Update `authorization_from` to handle `store` response (#4691)

Fix Store/Unstore features

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
20 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce Verify feature added (#4692)

Enable verify feature on TrustCommerce Gateway

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
22 tests, 72 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 100% passed

* Rapyd: Add customer object to transactions (#4664)

Description
-------------------------
Rapyd Gateway send customer info on store transactions, with this commit
it will be able to send customer on authorize and purchase transaction,
when it use a US “PMT”s include the addresses object into the customer data
in order to be able to perform US transactions properly.

Unit test
-------------------------

Finished in 0.123245 seconds.
22 tests, 103 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------

Finished in 100.082672 seconds.
33 tests, 92 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
0.33 tests/s, 0.92 assertions/s

Rubocop
-------------------------

756 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* CybersourceRest: Add new gateway with authorize and purchase

Summary:
------------------------------
Adding CybersourceRest gateway with authorize and purchase
calls.

Closes #4690

GWI-474

Remote Test:
------------------------------

Finished in 3.6855 seconds.
6 tests, 17 assertions, 1 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 35.528692 seconds.
5441 tests, 77085 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* CheckoutV2: Add store/unstore (#4677)

Summary:
    ------------------------------
    In order to use Third Party Vaulting (TPV), this commit adds store and unstore methods.
    For ApplePay (and NT in general) the verify method is used, to get a similar response, and
    formatted to be equal to the store response using the /instruments endpoint.

Remote test
    -----------------------
    Finished in 240.268913 seconds.
    82 tests, 203 assertions, 1 failures, 0 errors,
    0 pendings, 0 omissions, 0 notifications
    97.561% passed

Unit test
    -----------------------
    Finished in 0.268913 seconds.
    52 tests, 289 assertions, 0 failures, 0 errors,
    0 pendings, 0 omissions, 0 notifications
    100% passed

Rubocop
    -----------------------
    756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.domain.name>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Revert "CheckoutV2: Add store/unstore (#4677)" (#4703)

This reverts commit e769cdb908d4a8543bc68f13a4f7aa04c60daf59.

* Moneris: Fix google pay (update apple pay) (#4689)

Description
-------------------------
Truncate google pay and apple pay order id to 100 (max length of characters that google pay / apple pay accepts)

Unit test
-------------------------
Finished in 37.884991 seconds.
5439 tests, 77066 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
143.57 tests/s, 2034.21 assertions/s

Rubocop
-------------------------
756 files inspected, no offenses detected

Co-authored-by: Luis <sinourain+endava@gmail.com>

* Litle: Add prelive url

This commit adds a prelive URL to the Vantiv/Litle
gateway. It relies on the existing url_override logic
to set the prelive_url

Test Summary
Remote:
56 tests, 226 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
76.7857% passed

* CommerceHub: Adding changes for certification purposes (#4705)

Summary:
------------------------------
Add changes to address some observations / improvements
in the CommerceHub certification.

* SER-494 / SER-498: setting and using order_id as reference
* SER-495: use the correct end-point for verify
* SER-496 / SER-497: get avs and cvv verification codes
* SER-500: getting an error code from response

Remote Test:
------------------------------
Finished in 108.050361 seconds.
23 tests, 63 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 46.103032 seconds.
5458 tests, 77155 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* CommerceHub: Fixing verify status and prevent tokenization (#4716)

Summary:
------------------------------
* SER-495: Fix success detection for verify
* SER-507: set default `create_token` for purchase and
authorize transactions

Remote Test:
------------------------------
Finished in 290.029817 seconds.
23 tests, 64 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 46.103032 seconds.
5458 tests, 77155 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Payeezy: Update Stored Credentials

Payeezy requires sending original network transaction id to as
cardbrand_original_transaction_id.

Unit:
47 tests, 217 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Remove raise ArgumentError on get requests (#4714)

The case for initiating a GET request raises a frivolous ArgumentError
when the code already ignores any attempt to pass in a body to the
request.

* ChekoutV2:Add store/unstore (#4712)

Summary:
------------------------------
In order to use Third Party Vaulting (TPV), this commit adds store and unstore methods.
For apple pay/google pay the actual credentials could work, but for credit cards, and
bank account the credentials required are secret_api_key and public_api_key.

This commits also, refactor the initialize method removing the rescue ArgumentError,
and modifing the commit method to use ssl_request.

Remote test
-----------------------
Finished in 164.163913 seconds.
88 tests, 216 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.046893 seconds.
53 tests, 297 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.local>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* CybersourceREST - Refund | Credit

Description
-------------------------
This integration support the following payment operations:
- Refund
- Credit

Closes #4700

Unit test
-------------------------
Finished in 40.91494 seconds.
5454 tests, 77134 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
133.30 tests/s, 1885.23 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

GWI-471

* Payeezy: Ignore `xid` for AP Amex (#4721)

Payeezy has stated the inclusion of `xid` values for AP (Amex
underlying) transactions could result in failures. Add guard to ignore
adding this field if the underlying is `american_express`

Unit: 49 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 47 tests, 186 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce Verify feature added (#4699)

Enable verify feature on TrustCommerce Gateway

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
22 tests, 72 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 100% passed

* CER-440

Add papypal_custom_field and paypal_description gateway specific fields to braintree_blue gateway.

Local:
5455 tests, 77085 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6517% passed

Unit:
94 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
101 tests, 493 assertions, 4 failures, 4 errors, 0 pendings, 0 omissions, 0 notifications
92.0792% passed

* CER-460 Add descriptor phone number to blue_snap

Local:
5457 tests, 77095 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6518% passed

Unit:
45 tests, 269 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
53 tests, 171 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
83.0189% passed

* Braintree: Update transaction hash method

This PR is to update the transaction method to include the processor_authorization_code.

* CyberSourceRest: Add apple pay, google pay

Summary:
-----------------------

In order to perform ApplePay and GooglePay
transaction this commit, adds support.

Closes #4708

Remote test
-----------------------
Finished in 7.216327 seconds.
18 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.032725 seconds.
15 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
760 files inspected, no offenses detected

* CyberSourceRest: Add apple pay, google pay

Summary:
-----------------------

In order to perform ApplePay and GooglePay
transaction this commit, adds support.

Closes #4708

Remote test
-----------------------
Finished in 7.216327 seconds.
18 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.032725 seconds.
15 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
760 files inspected, no offenses detected

* CybersourceREST - Void | Verify

Description
-------------------------

This integration support the following payment operations:

Verify
Void

Closes #4695

Unit test
-------------------------
Finished in 29.20384 seconds.
5468 tests, 77209 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
186.76 tests/s, 2641.23 assertions/s

Rubocop
-------------------------
Inspecting 760 files
760 files inspected, no offenses detected

* CommerceHub: adjusting reference details (#4723)

Summary:
------------------------------
Changes reference details to properly send
`referenceTransactionDetails` on capture requests

Remote Test:
------------------------------
Finished in 290.029817 seconds.
23 tests, 64 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 47.993895 seconds.
5463 tests, 77178 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Orbital: dismiss CardSecValInd restriction (#4724)

GWI-567

Remote:
122 tests, 509 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:
144 tests, 817 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
760 files inspected, no offenses detected

* Credorax: Set default ECI values for token transactions

Condition eci field depending on payment_method

 Closes #4693

* CyberSource Rest: Add ACH Support

Adding ACH/Bank Accounts to CyberSource Rest

Closes #4722

Unit test:
13 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test:
10 tests, 26 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GWI-480

* CommerceHub: setting transactionReferenceId for refunds (#4727)

Summary:
------------------------------
Updating the refund reference to only use referenceTransactionId

Remote Test:
------------------------------
Finished in 291.397602 seconds.
23 tests, 64 assertions, 1 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
95.6522% passed

Unit Tests:
------------------------------
Finished in 37.637689 seconds.
5474 tests, 77230 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Cybersource REST: Adding capture request

Summary:
------------------------------
Adding the capture functionality to the Cybersource REST
gateway

Closes #4726

Remote Test:
------------------------------
Finished in 25.504733 seconds.
25 tests, 89 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 39.743032 seconds.
5468 tests, 77209 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Paymentez: Add inquire by transaction_id

Get payment status by Paymentez transaction id

Unit:
30 tests, 127 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
34 tests, 73 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
73.5294% passed
** These failures also existed on the main branch **

* Cybersource Rest - update message response on error

Description
-------------------------
Update message response on error in order to get a more redeable response

GWI-571

Unit test
-------------------------

Finished in 30.871357 seconds.
5476 tests, 77239 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------

177.38 tests/s, 2501.96 assertions/s

Rubocop
-------------------------

760 files inspected, no offenses detected

* Ebanx: Add transaction inquire request

Get transaction by authorization.

Remote:
27 tests, 73 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.2963% passed

Unit:
20 tests, 89 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CommerceHub: Update fields for transactions with sotred credentials (#4733)

Description
-------------------------
This commit add new fields for transactions with stored credentials options
and remove the current referenceMerchantTransactionId in order to use
referenceTransactionId

[SER-504](https://spreedly.atlassian.net/browse/SER-504)
[SER-536](https://spreedly.atlassian.net/browse/SER-536)

Unit test
-------------------------
Finished in 0.01392 seconds.

22 tests, 147 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

1580.46 tests/s, 10560.34 assertions/s

Remote test
-------------------------
Finished in 296.371956 seconds.

24 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

0.08 tests/s, 0.21 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* Ebanx: Add support of Elo & Hipercard

For all credit card transactions Ebanx only requires payment_type_code to
be 'creditcard' no matter the card. This removes the need of specifiying
the card brand in Ebanx transaction.
Unit:
19 tests, 84 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
28 tests, 74 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.4286% passed

* Checkout_v2: Add idempotency key support

This PR is to add the support for an optional idempotency key through the header during requests and should be available to all actions 'purchase, authorize, and etc'. I did note that the failing remote tests were sending back 401 unauthorize even when on the latest upstream master. Test results below:
Local:
5469 tests, 77162 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6526% passed

Unit:
54 tests, 300 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
89 tests, 213 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
95.5056% passed

* Adyen: add support for shopper_statement field for capture action

* Checkout_v2: update idmepotency_key names

* * Payeezy: Enable external 3DS

Summary:
------------------------------
This PR includes the fields and logic required to send external 3ds data
for purchases and auths.

Closes #4715

Test Execution:
------------------------------
Unit test
Finished in 0.067186 seconds.
46 tests, 211 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
Finished in 140.523393 seconds.
48 tests, 194 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Failures not related with the added code

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Shift4: Fix `Content-type` value (#4740)

Change `Content-type` value to `applicaiton/json` instead of xml

Unit: 23 tests, 147 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 24 tests, 56 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
91.6667% passed

* Ebanx: Remove default email

ECS-2829

Ebanx requires that merchants pass in an email in
order to complete a transaction. Previously, ActiveMerchant
was sending in a default email if one was not provided which
causes Ebanx's fraud detection to mark these transactions as
failed for fraud. This incorrect failure message has led to
merchant frustration since they could not quickly know the
root of the problem

Test Summary
Remote:
32 tests, 88 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.875% passed

* CyberSourceRest: Add stored credentials support

Description
-------------------------
This commit adds support for stored credentials to the CyberSourceRest gateway
and according to their docs CyberSource has two type of flows
[initial](https://developer.cybersource.com/docs/cybs/en-us/payments/developer/ctv/rest/payments/credentials-intro/credentials-maxtrix/credentials-maxtrix-initial.html) and [subsequent](https://developer.cybersource.com/docs/cybs/en-us/payments/developer/ctv/rest/payments/credentials-matrix/credentials-matrix-sub.html)

Closes #4707

Unit test
-------------------------
Finished in 0.025301 seconds.

18 tests, 97 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

711.43 tests/s, 3833.84 assertions/s

Remote test
-------------------------

Finished in 25.932718 seconds.

29 tests, 107 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

1.12 tests/s, 4.13 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

* Payeezy: Add `last_name` for `add_network_tokenization`

This change updates the `add_network_tokenization` method to include the
`last_name` in the `cardholder_name` value when getting the name from a
payment method

Closes #4743

Unit: 49 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 50 tests, 201 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe PI: tokenize PM for verify

ECS-2867

For the Stripe PI gateway, when a merchant runs a verify
they want to get back the resulting card information that
Stripe provides. In off_session cases we are not tokenizing
the card at Stripe which prevents us from getting back
valuable card details.

This commit updates the logic to always get the card details
back from Stripe on verify transactions.

This commit also improves the resiliency of Stripe PI remote tests
by dynamically creating a customer object before running the remote
tests so that they do not error out with a too many payment
methods for customer message.

Test Summary
Remote:
80 tests, 380 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Kushki Gateway: Add support for the months and deferred fields

* Borgun: Update TrCurrencyExponent

ECS-2861

A merchant using the Borgun gateway reported that when
a user was completing the challenge, the gateway was displaying
a value 100 times greater than what was requested. This casused
the ccardholders to stop the 3DS flow and abandon the cart.

After reaching out to the Borgun gateway they explained that
the ISK currency on Borgun is sometimes a 0 decimal currency
and sometimes a 2 decimal currency. The explanation given
via email is that we must provide the TrCurrencyExponent
of 2 when utilizing the 3DS flow but not on the finish sale
portion.

Remote:
22 tests, 47 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed
Note: these 2 tests fail on master

* CyberSourceRest: Add gateway specific fields handling

Summary:
In order to handle several gateway specific fields this commit add the following ones in the cybersource rest gateway file
- ignore_avs
- ignore_cvv
- mdd_fields
- reconciliation_id
- customer_id
- zero_amount_verify
- sec_code

Closes  #4746

Remote Test:
Finished in 36.507289 seconds.
35 tests, 108 assertions, 0 failures, 0 errors, 0 pendings,0 omissions, 0 notifications 100% passed

Unit Tests:
Finished in 0.06123 seconds.
2718 tests, 150 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed

RuboCop:
760 files inspected, no offenses detected

* IPG: Improve error handling

Summary:
------------------------------

This change improves the amount of detail in the response
message when the gateway responds with an error.

Closes #4753

Remote Test:
------------------------------
Remote:
18 tests, 54 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 29.462929 seconds
5483 tests, 77277 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* * Shift4: Handle access token failed calls

Summary:
------------------------------
Adding changes to handle failed calls to get the access token

GWS-46

Closes #4745

Remote Test:
------------------------------
Finished in 172.659123 seconds.
24 tests, 56 assertions, 2 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
91.6667% passed

Unit Tests:
------------------------------
Finished in 40.296092 seconds.
5480 tests, 77260 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Bogus: Add verify, plus assoc. test

* Checkout v2: Add Shipping Address

Add shipping address local and remote tests

Remove Marketplace object as not supported for Sandbox testing

* Release 1.128.0

* Adyen: update selectedBrand mapping for Google Pay

Adyen advised that `googlepay` is the correct value to send for `selectedBrand`

CER-550

LOCAL
5498 tests, 77340 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

GATEWAY - UNIT TESTS
105 tests, 531 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GATEWAY - REMOTE TESTS
132 tests, 443 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed

* Shift4: add vendorReference field

This change maps `options[:order_id]` to Shift4's `vendorReference` field

CER-563

LOCAL
5498 tests, 77341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

GATEWAY UNIT TESTS
25 tests, 154 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GATEWAY REMOTE TESTS
25 tests, 58 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
92% passed
(These failures also exist on the master branch)

* Litle update the successful_from method

Add 001 and 010 to be considered successful responses for Litle.

Remote
57 tests, 251 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Unit
58 tests, 255 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Improve error handling: OAuth

ECS-2845

OAuth has become a standard authentication
mechanism for many gateways in recent years
however AM has not been updated to support error
handling when a merchant passes incorrect details
to the gateway.

In non OAuth flows we would return a failed response.
This commit now raises a new exception type indicating that
the request failed at the OAuth stage rather than the
transaction stage of a request

Remote:
25 tests, 57 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
92% passed

* Stripe PI: Add billing address when tokenizing for ApplePay and GooglePay

This adds functionality to add the card's billing address to digital wallets ApplePay and GooglePay. The billing address is available on the result of the card tokenization and is saved to the created PaymentIntent.

The remote test failures also exist on `master`.

Test Summary
Local: 5500 tests, 77348 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit: 83 tests, 368 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
93.9759% passed

* Rexml is no longer a default gem in Ruby 3 (#3852)

* Revert "Rexml is no longer a default gem in Ruby 3 (#3852)" (#4767)

This reverts commit dad65a7cb70985e1b477231c4d7e33455d40e04c. It caused ci to fail due to a rexml issue.

* Add rexml as a gem dependency (#4768)

* Add rexml as a gem dependency

Rexml is no longer included with Ruby 3+, we therefore need to add the dependency explicitely.

* Remove garbage character from test file

* Release v1.129.0

* Mit: Changed how the payload was sent to the gateway

Closes #4655

* Revert "Mit: Changed how the payload was sent to the gateway"

This reverts commit 6e3cd4b431fdd521e955d80fa3133f6dc2653899.

* PayuLatam:
The original method of surfacing error codes was redundant and didn't actually surface a network code that is particularly useful. This PR aims to fix that issue for failing transactions.

* CyberSource: Handling Canadian bank accounts

Summary:
------------------------------
Add changes to CyberSource to properly format canadian routing
numbers when payment methods is bank account.

GWS-48

Closes #4764

Remote Test:
------------------------------
Finished in 114.912426 seconds.
121 tests, 611 assertions, 5 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
95.8678% passed

*Notes on erros*:
The test suite was ran with a single account rason for errors:
- 2 errors correspondsto account not enabled for canadian bank transactions.
- 2 errors correspond to outdated 3ds PAR values.
- 1 error related with account not enabled for async.

Unit Tests:
------------------------------
Finished in 41.573188 seconds.
5501 tests, 77346 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Update Changelog

* CyberSource Rest: Fixing currency detection

Summary:
------------------------------
Fix bug on Cybersource Rest to use other currencies
different than USD.

Closes #4777

Remote Test:
------------------------------
Finished in 46.080483 seconds.
43 tests, 141 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 33.72359 seconds.
5506 tests, 77384 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Cybersource: Add business rules for NT

ECS-2849

A previous commit from 2015 restricted the ability to pass
business rules such as `ignoreAVSResult` and `ignoreCVResult` on
API requests with NetworkTokenization cards. Merchants are now
asking for this to be allowed on requests with payment methods
such as NT/AP/GP and the remote tests seem to indicate we can
add these fields for these types of payment methods.

Remote CBYS SOAP:
119 tests, 607 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.479% passed
Remote CYBS Rest:
46 tests, 152 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Adyen: Update Mastercard error messaging

Adyen error messaging uses the generic refusalReasonRaw
field as part of the response message. Adyen offers a more
detailed Mastercard-specific field called merchantAdviceCode
that should be present for failed Mastercard transactions.

Adyen error messaging now checks for the merchantAdviceCode first.
If it is not present (i.e. this is not a Mastercard transaction
or it is a Mastercard transaction and this field is missing for
some reason) then the default refusalReasonRaw field is used (like
previous functionality).

ECS-2767

Unit:
107 tests, 539 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
132 tests, 443 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed
*These 12 tests fail on master

Closes #4770

* Authorize.net: update mapping for billing address phone number

Adds a bit of logic to the Authorize.net gateway so that phone number can be passed via `billing_address[phone_number]` in addition to `billing_address[phone]` This is similar to #4138

CER-590

LOCAL
5503 tests, 77374 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
121 tests, 681 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
84 tests, 301 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Braintree: update mapping for billing address phone number

Adds a bit of logic to the Braintree gateway so that phone number can be passed via billing_address[phone_number] in addition to billing_address[phone] This is similar to #4138

CER-603

LOCAL
5505 tests, 77373 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
94 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
103 tests, 550 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CommerceHub: Enabling multi-use public key encryption (#4771)

Summary:
------------------------------
Changes the payment method so is possible to send an encrypted
credit card following the CommerceHub Multi-User public key
methodology.

SER-555

Note on failing test: You need the proper account permissions and
credentials to use the encrypted credit card.

Remote Test:
------------------------------
Finished in 288.325843 seconds.
25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 38.640945 seconds.
5506 tests, 77384 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

Co-authored-by: cristian <Heavyblade@users.noreply.github.com>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Ogone: Enable 3ds Global for Ogone Gateway (#4776)

Description
-------------------------------------------

This commit introduces the support for 3DS Global payments using the Ogone Direct API through GlobalCollect.
As Ogone and GlobalCollect share the same underlying payment service provider (PSP), Worldline, we can leverage
the new attribute 'ogone_direct' to use the appropriate credentials and endpoint to connect with the Ogone Direct API.

[SER-562](https://spreedly.atlassian.net/browse/SER-562)

UNIT TEST
-------------------------------------------

Finished in 0.253826 seconds.

44 tests, 225 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

173.35 tests/s, 886.43 assertions/s

REMOTE TEST
-------------------------------------------

Finished in 71.318909 seconds.

43 tests, 115 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.6744% passed

0.60 tests/s, 1.61 assertions/s

Note:
During testing, a single failure related to installment processing was identified with GlobalCollect.
The error message "NO_ACQUIRER_CONFIGURED_FOR_INSTALLMENTS" I think that the issue may be related to
GlobalCollect's account configuration, which is outside the scope of this update.

RUBOCOP
-------------------------------------------

760 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* Borgun change default TrCurrencyExponent and MerchantReturnUrl (#4788)

Borgun default TrCurrencyExponent to 2 for all 3DS txn and 0 for all
else. Change MerchantReturnUrl to `redirect_url`.

Unit: 11 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 22 tests, 43 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
77.2727% passed

* Borgun support for GBP currency (#4789)

Add support to Borgun for GPB based on [ISO
4217](https://en.wikipedia.org/wiki/ISO_4217)

Unit:

Remote:

* Worlpay: Fix Google Pay

Ensure that we don't send cardHolderName if empty and that Google Pay
and Apple Pay fall into the network tokenization code path and not
the credit card path.

Remote Tests:
100 tests, 416 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
107 tests, 633 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe PI: Update paramters for creating of customer

Start sending address, shipping, phone and email when creating
a customer.

Remote Tests
84 tests, 396 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests
42 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Revert "Stripe PI: Update paramters for creating of customer"

This reverts commit 46f7bbc8b7b6afa16f26b6cc12f7c13b4d1d3ea3.

* Cybersource: auto void r230

ECS-2870

Cybersource transactions that fail with a reasonCode of `230` are
in a state where the gateway advises the merchant to decline but has
not declined it themselves. Instead the transaction is pending capture which
can create a mismatch in reporting.

This commit attempts to auto void transactions that have this response code
and a flag that indicates the merchants would like to auto void these kinds
of transactions.

Remote:
121 tests, 611 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
95.8678% passed

5 test failures on master as well

* Redsys: Set appropriate request fields for stored credentials with CITs and MITs

Following pre-determined guidance for CIT/MIT request fields for this gateway. We were getting it mostly right, but almost didn't count, so the `DS_MERCHANT_DIRECTPAYMENT=false` value was added for initial CITs.

Both CITs and MITs should be indicated with the `stored_credential` field `recurring`, so as long as that happens, `DS_MERCHANT_COF_TYPE` should have the value as `R` in both transactions.

An outstanding task is to pass `DS_MERCHANT_IDENTIFIER` as 'REQUIRED' for CITs. I'm currently blocked on the credentials for the Redsys sandbox environment (getting the error `SIS0042` - Signature calculation error). This means that I'm unable to confirm that Redsys indeed returns a `DS_MERCHANT_IDENTIFIER` value in their response, in order to pass in a future MIT.

Test Summary
Local: 5512 tests, 77418 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
       100% passed

Unit: 35 tests, 122 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
      100% passed

* Stripe & Stripe PI: Validate API Key

Stripe Unit:
145 tests, 765 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Stripe Remote:
77 tests, 362 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Stripe PI Unit:
42 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Stripe PI Remote:
83 tests, 391 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Remove last validation for Stripe API Key

* Add BIN for Maestro

Adds one new BIN to the Maestro BIN list: 501623

CER-640

5514 tests, 77426 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

* DLocal: Add save field on card object

* Add support for MsgSubID on PayPal Express requests (#4798)

* Adds support for PayPal Express MsgSubID property

* Removes unrequired PayPal changes for MsgSubID

* Updates CHANGELOG with HEAD changes

* Checkout_v2: use `credit_card?`, not case equality with `CreditCard` (#4803)

Checkout_v2: use `credit_card?`, not case equality with `CreditCard`

* Shift4: Enable general credit feature. (#4790)

Summary:------------------------------
Enabling general credit feature

Remote Test:
------------------------------
Finished in 171.436961 seconds.
28 tests, 63 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 92.8571% passed
failing test not related to PR changes

Unit Tests:
------------------------------
26 tests, 163 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

Co-authored-by: Nick Ashton <nashton@gmail.com>

* Release v1.130.0

* Redsys: Add supported countries

This updates the list of countries that Redsys supports by adding France (FR), Great Britain (GB), Italy (IT), Poland (PL), and Portugal (PT)

CER-643
5527 tests, 77497 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

* Authorize.net: truncate nameOnAccount for bank refunds

The API specification requires that the string be no longer than 22 characters; refunds will fail if this limit is exceeded

CER-670

REMOTE
85 tests, 304 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
122 tests, 688 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

LOCAL
5525 tests, 77482 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

* Checkout: Add support for several customer data fields

CER-595

Ran into a lot of tricky data collisions and had to do some finagling to make sure existing test cases would pass. I left open two possibilities for passing in the phone number depending on how users would like to pass it in: manually via options or via the phone number that’s attached to credit card billing data on the payment method.

It’s possible to pay with a stored payment method which would be a `String`. In this case there’s no name data attached so added some guarding against NoMethodErrors that were resulting from trying to call payment_method.name.

Remote Tests:
92 tests, 221 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.7391% passed

Unit Tests:
57 tests, 319 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Local Tests:
5516 tests, 77434 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Worldpay: check payment_method responds to payment_cryptogram and eci (#4812)

* Release v1.131.0

* Stripe PI: Add new stored credential flag

Stripe has a field called `stored_credential_transaction_type` to assist
merchants who vault outside of Stripe to recognize card on file transactions
at Stripe. This field does require Stripe enabling your account with this
field.

The standard stored credential fields map to the various possibilities that
Stripe makes available.

Test Summary
Remote:
87 tests, 409 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Commerce Hub - Add a couple of GSFs (#4786)

Description
-------------------------
Add:
physical_goods_indicator maps to physicalGoodsIndicator inside of transactionDetails
scheme_reference_transaction_id maps to schemeReferenceTransactionId inside of storedCredentials

SER-501

Unit test
-------------------------
Finished in 33.616793 seconds.

5511 tests, 77405 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
163.94 tests/s, 2302.57 assertions/s

Rubocop
-------------------------
Inspecting 760 files
760 files inspected, no offenses detected

Co-authored-by: Luis <sinourain+endava@gmail.com>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Nuvei (formerly SafeCharge): Add customer details to credit action

* IPG: Update live url to correct endpoint

The live_url for IPG was likely always incorrect, this updates it to hit
the actual endpoint.

Also changes test data to prevent a scrub test failure.

Remote (same failures on master):
18 tests, 40 assertions, 8 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications

Unit:
27 tests, 123 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications

* vPos: Adding Panal Credit Card type (#4814)

Summary:
------------------------------
Add the panal credit card type and enables it for
vPos gateway

Unit Tests:
------------------------------
Finished in 38.864306 seconds.
5542 tests, 77546 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detectednitial commit

* Stripe PI: Update parameters for creation of customer

Start sending address, shipping, phone and email when creating
a customer.

Remote Tests
84 tests, 396 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests
42 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* WorldPay: Update xml tag for Credit Cards

Update the xml tag for Credit Cards to be CARD-SSL
instead of being specific to card brand.

Remote:
100 tests, 416 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:
109 tests, 637 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* PaywayDotCom: Update live url

The gateway has advised to direct traffic to their failover .net endpoint

LOCAL
5542 tests, 77550 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
16 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
16 tests, 43 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe: Update login key validation

Remote:

Stripe PI
87 tests, 409 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Stripe
77 tests, 362 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:

Stripe PI
51 tests, 252 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Stripe
146 tests, 769 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CheckoutV2: Parse AVS and CVV checks

The CheckoutV2 gateway had logic in the response parsing
method that would limit the scope of parsing to only authorize or
purchase. This presents an issue for merchants using `verify-payment`
or other methods that may have the AVS and CVV checks in the response.

This commit also updates the AVS and CVV checks to use `dig` to
safely try parsing out the values

Test Summary
Remote:
93 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* NMI: Add shipping_firstname, shipping_lastname, shipping_email, and surcharge fields

CER-666
CER-673

LOCAL
5547 tests, 77613 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
56 tests, 454 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
51 tests, 184 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
94.1176% passed

*Test failures are related to Apple Pay and eCheck, and are also failing on master

* Borgun: Update authorization_from & message_from

Update authorization_from to return nil if the transaction failed or
it is a 3DS transaction. Update message_from to return ErrorMessage
if present.

Unit:
12 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
22 tests, 43 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
72.7273% passed

* Kushki: Add Brazil as supported country

Unit
17 tests, 109 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote
18 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Adyen:  Add additional data for airline and lodging

Description
-------------------------
GWS-67

This commit adds additional data for Adyen in order
to be able to send information regarding the airline and lodging.
To send this new data, it sends fields additional_data_airline and
additional_data_lodging as a GSF.

Unit test
-------------------------
Finished in 0.157969 seconds.

109 tests, 567 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

690.01 tests/s, 3589.31 assertions/s

Remote test
-------------------------
Finished in 176.357086 seconds.

134 tests, 447 assertions, 11 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
91.791% passed

0.76 tests/s, 2.53 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

* MIT: Changed how the payload was sent to the gateway

Closes #4655

* Nuvie/SafeCharge: Add unreferenced refund field

* CyberSource: include `paymentSolution` for ApplePay and GooglePay (#4835)

See
- https://developer.cybersource.com/content/dam/docs/cybs/en-us/apple-pay/developer/fdiglobal/rest/applepay.pdf
- https://developer.cybersource.com/content/dam/docs/cybs/en-us/google-pay/developer/fdiglobal/rest/googlepay.pdf

Schema:
- https://developer.cybersource.com/library/documentation/dev_guides/Simple_Order_API_Clients/html/Topics/Using_XML1.htm
- https://ics2ws.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.211.xsd

* Release v1.132.0

* Fix CHANGELOG after Version 1.132.0 (#4837)

* CyberSource: remove credentials from tests (#4836)

* Release v1.133.0

* Paysafe: Map order_id to merchantRefNum

If options[:merchant_ref_num] is not supplied, options[:order_id] will be used as the fallback value

CER-683

LOCAL
5559 tests, 77691 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
18 tests, 89 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
33 tests, 82 assertions, 8 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
75.7576% passed

* Stripe PI: Gate sending NTID

Don't send NTID in add_stored_credential if
post[:payment_method_options][:card][:stored_credential_transaction_type] = 'setup_on_session'
and setup_future_usage=off_session.

* Update required Ruby version

Updated required Ruby version to be 2.7 and Rubocop to 0.72.0.

All unit tests and rubocop:
5532 tests, 77501 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Release v1.134.0

* Kushki: Enable 3ds2

Summary:

Enable 3ds version 2 on the gateway above

SER-625

Unit Test

Finished in 0.019977 seconds.
------------------------------------------------------------------------------------------------------
17 tests, 109 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
------------------------------------------------------------------------------------------------------

Remote Test

Finished in 82.28609 seconds.
------------------------------------------------------------------------------------------------------
23 tests, 68 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
------------------------------------------------------------------------------------------------------

* Paymen…
mfrederickson added a commit to connectcef/active_merchant that referenced this pull request Feb 20, 2024
* Sync up 20231110 (#4)

* Reach: remove raise exception when stored-credentials can't be identified

* Reach: fixing typo on store credentials uncheduled

* Reach: refactor response methods and extra test for not paymentMethod

* Revert "Reach: refactor response methods and extra test for not paymentMethod"

This reverts commit e169025f2e1eb5ae7e4f5b52aea6ffa59b787572.

* Revert "Reach: fixing typo on store credentials uncheduled"

This reverts commit ad2e33306ebe0d9e4ff344c28217d9935924aedd.

* Revert "Reach: remove raise exception when stored-credentials can't be identified"

This reverts commit 4e1d3cd5ee9481bfcfde960b3d2d29b8f395f6a7.

* Revert "Reach: remove raise exception when pymentMethod is not allowed"

This reverts commit 7b973d9aef5133a12f33d251a35a57874cacb810.

* Revert "Reach: using transaction token as ReferenceId on refunds"

This reverts commit e40e1ee50e3687f5b123546dcf83141be1440073.

* Reach: fixing store credentials and Exception issues

Summary:
------------------------------
This PR solves 4 issues:

1) Remove exception for no allowed store credentials
combination and leave the field empty.

2) Remove exception for not supported card brand
and sent instead a not supported string.

3) Fixes a Typo on stored credentials code and test
related with 'unscheduled' transactions.

4) Fixes and add the corresponding tests for 1 to 3.

Remote Test:
------------------------------
Finished in 136.495605 seconds.
27 tests, 70 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 33.332219 seconds.
5419 tests, 76964 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* EBANX: add soft_descriptor field

This field can be optionally passed in with the `creditcard` hash

CER-317

* CommerceHub: Add Apple Pay and Google Pay (#4648)

Summary:
------------------------------
In order to perform transactions using Apple Pay and Google Pay
this commit adds the fields required and optionals to made succesful
requests.

Remote Tests:
------------------------------
Finished in 76.906747 seconds.
19 tests, 52 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 0.193742 seconds.
13 tests, 111 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
------------------------------
756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.domain.name>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Global Collect & Alelo: Fixing year dependent failing tests

Summary
-----------------------

Changes a couple of tests that depend on date year

Closes #4665

Unit test
-----------------------
Finished in 40.268913 seconds.
5424 tests, 77006 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
756 files inspected, no offenses detected

* Moneris: Add Google Pay

Description
-------------------------
Add google pay to moneris gateway

Closes #4666

Unit test
-------------------------
Finished in 32.996352 seconds.
5424 tests, 77006 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
164.38 tests/s, 2333.77 assertions/s

Rubocop
-------------------------
Running RuboCop...
Inspecting 756 files
756 files inspected, no offenses detected

* Element/Vantiv: Add google pay and apple pay support

Summary:

This PR updates element/vantiv gateway to support apple/google pay transactions

Remote Tests

Finished in 35.250506 seconds.
31 tests, 86 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Reach: fix amount handling to work with cents properly (#4670)

Summary:
------------------------------
Provides proper format handling on reach gateway to receive
amount as cents on authorize/purchase and refund.

Remote Test:
------------------------------
Finished in 105.613556 seconds.
28 tests, 70 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------

Finished in 30.429736 seconds.
5425 tests, 77010 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* GlobalCollect: Add transaction inquire request

Get payment status by payment id.

Unit:
44 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
41 tests, 108 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.561% passed

* Stripe PI: Add Level 3 support

Remote:
79 tests, 346 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
88.6076% passed

Unit:
43 tests, 219 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Braintree: return additional processor response

Adds the `additional_processor_response` to the transaction hash for unsuccessful transactions

CER-284
LOCAL
5414 tests, 76942 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

REMOTE
100 tests, 491 assertions, 4 failures, 4 errors, 0 pendings, 0 omissions, 0 notifications
92% passed

These failures/errors are present on the master branch as well

* Payeezy name from `billing_address` on `purchase`

Allow for the `billing_address` name value to be used if the `name`
value is blank for the payment method

Unit:
45 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 45 tests, 180 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe: add reverse_transfer to void transactions

Both the void and refund methods call Stripe's /refunds endpoint, but the ability to sendoptions[:reverse_transfer] was not initially added to the void method

CER-360
UNIT
5425 tests, 77010 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

REMOTE
77 tests, 362 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Update Changelog for PR #4668

* GlobalCollect: fix inquire bug

* Credorax: Support google pay and apple pay

Summary:
------------------------------
Being able to use google pay and apple pay as payment methods by Credorax gateway

Closes #4661

Remote Test:
------------------------------
Finished in 117.823171 seconds.
25 tests, 66 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 37.864568 seconds.
5416 tests, 76949 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* Plexo: add 5 credit card brands (#4652)

This change adds 5 new credit card brands (passcard, edenred, anda, tarjeta-d, sodexo bins ) and allows plexo gateway to use it.

Remote Tests:
Finished in 45.329665 seconds.
28 tests, 50 assertions, 0 failures, 0 errors, 0 pendings, 3 omissions, 0 notifications
100% passed

Unit Tests:
Finished in 0.013674 seconds.d
20 tests, 115 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
756 files inspected, no offenses detected

Update CHANGELOG

* Authorize.net: Google pay token support

Added remote test cases to Authorize for google pay authorize

GWI-404

Closes #4659

...................................................................................
Finished in 96.632847 seconds.
----------------------------------------------------------------------------------------------------------------------------------------------------
83 tests, 297 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
----------------------------------------------------------------------------------------------------------------------------------------------------
0.86 tests/s, 3.07 assertions/s

* Credorax: Add support for Network Tokens

Summary:
------------------------------
Enable the Credorax gateway to support payments via network_token

Closes #4679

Remote Test:
------------------------------
51 tests, 163 assertions, 12 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
76.4706% passed

tests failures not related with the changes

Unit Tests:
------------------------------
26 tests, 132 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
756 files inspected, no offenses detected

* Stripe PI: use MultiResponse in create_setup_intent

This change makes it possible to access the result of the call to /payment_methods alongside the ultimate result of the call to /setup_intents

CER-357

REMOTE
80 tests, 378 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
5439 tests, 77065 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Payeezy change `method` on capture (#4684)

For Apple Pay transactions, the value for `method` is set to `3DS`, but
when executing a `capture`, this value should be changed to
`credit_card`.

This differs from other use cases where the value provided on auth
transactions should be the same one given for capture.

Unit: 45 tests, 206 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Credorax: Update MIT logic

Credorax is changing the requirements for MIT transactions
in regards to NTIDs. Moving forward, all MIT transactions need to
pass in the NTID if present. Additionally the NTID value
is from the `Z50` flag and passed directly from the card scheme.

Credorax notification:
For any MIT transactions, this Trace ID must be stored from the original Card Holder initiated (CIT) transaction where the Card details were stored on file originally. When using Finaro gateway/acquiring this Trace ID is returned in the z50 parameter and must be sent in the g6 parameter for any subsequent MIT transactions, (if using an external token engine or your own token engine and the original CIT is not processed through Finaro, please liaise with your processor to obtain this Trace ID). Additionally, this original Card holder initiated transaction must be Fully authenticated with 3DSecure to comply with PSD2/SCA regulation in place.
Please make sure that you comply with this for any customers saving their card details on file for subsequent MIT processed through Finaro

ECS-2650

Test Summary
The remote tests with stored creds now work but take ~17 minutes for me. Additionally
there are some failing tests for me (on master as well). Can anyone else run these?

* Adyen: Add support for `skip_mpi_data` flag

CER-333

This change will allow for recurring payments with Apple Pay on
Adyen by eliminating mpi data hash from request after initial payment.

Unit:
104 tests, 528 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
131 tests, 440 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.8397% passed

Local:
5430 tests, 77037 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Add Canadian Institution Numbers

Adds two additional valid Canadian Institution Numbers: 618, 842
https://en.wikipedia.org/wiki/Routing_number_(Canada)

CER-403

5439 tests, 77066 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

756 files inspected, no offenses detected

* Payeezy: Handle nil and empty values for Apple Pay

Payeezy support has indicated that passing empty or nil values in place
of the `xid` and `cavv` may result in failed transactions for AMEX based
AP tokens. They also informed us that the `eci_indicator` value should
default to `5` instead of passing a nil value, following a similar
pattern.

This PR ignores empty `payment_cryptogram` and defaults the
`eci_indicator` to `5` if that value is `nil`.

Unit: 6 tests, 211 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Tns: update test URL

Update test URL to be only secure.uat.tnspayments.

Unit Test:
15 tests, 68 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce: Update `authorization_from` to handle `store` response (#4691)

Fix Store/Unstore features

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
20 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce Verify feature added (#4692)

Enable verify feature on TrustCommerce Gateway

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
22 tests, 72 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 100% passed

* Rapyd: Add customer object to transactions (#4664)

Description
-------------------------
Rapyd Gateway send customer info on store transactions, with this commit
it will be able to send customer on authorize and purchase transaction,
when it use a US “PMT”s include the addresses object into the customer data
in order to be able to perform US transactions properly.

Unit test
-------------------------

Finished in 0.123245 seconds.
22 tests, 103 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------

Finished in 100.082672 seconds.
33 tests, 92 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
0.33 tests/s, 0.92 assertions/s

Rubocop
-------------------------

756 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* CybersourceRest: Add new gateway with authorize and purchase

Summary:
------------------------------
Adding CybersourceRest gateway with authorize and purchase
calls.

Closes #4690

GWI-474

Remote Test:
------------------------------

Finished in 3.6855 seconds.
6 tests, 17 assertions, 1 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 35.528692 seconds.
5441 tests, 77085 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* CheckoutV2: Add store/unstore (#4677)

Summary:
    ------------------------------
    In order to use Third Party Vaulting (TPV), this commit adds store and unstore methods.
    For ApplePay (and NT in general) the verify method is used, to get a similar response, and
    formatted to be equal to the store response using the /instruments endpoint.

Remote test
    -----------------------
    Finished in 240.268913 seconds.
    82 tests, 203 assertions, 1 failures, 0 errors,
    0 pendings, 0 omissions, 0 notifications
    97.561% passed

Unit test
    -----------------------
    Finished in 0.268913 seconds.
    52 tests, 289 assertions, 0 failures, 0 errors,
    0 pendings, 0 omissions, 0 notifications
    100% passed

Rubocop
    -----------------------
    756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.domain.name>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Revert "CheckoutV2: Add store/unstore (#4677)" (#4703)

This reverts commit e769cdb908d4a8543bc68f13a4f7aa04c60daf59.

* Moneris: Fix google pay (update apple pay) (#4689)

Description
-------------------------
Truncate google pay and apple pay order id to 100 (max length of characters that google pay / apple pay accepts)

Unit test
-------------------------
Finished in 37.884991 seconds.
5439 tests, 77066 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
143.57 tests/s, 2034.21 assertions/s

Rubocop
-------------------------
756 files inspected, no offenses detected

Co-authored-by: Luis <sinourain+endava@gmail.com>

* Litle: Add prelive url

This commit adds a prelive URL to the Vantiv/Litle
gateway. It relies on the existing url_override logic
to set the prelive_url

Test Summary
Remote:
56 tests, 226 assertions, 13 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
76.7857% passed

* CommerceHub: Adding changes for certification purposes (#4705)

Summary:
------------------------------
Add changes to address some observations / improvements
in the CommerceHub certification.

* SER-494 / SER-498: setting and using order_id as reference
* SER-495: use the correct end-point for verify
* SER-496 / SER-497: get avs and cvv verification codes
* SER-500: getting an error code from response

Remote Test:
------------------------------
Finished in 108.050361 seconds.
23 tests, 63 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 46.103032 seconds.
5458 tests, 77155 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* CommerceHub: Fixing verify status and prevent tokenization (#4716)

Summary:
------------------------------
* SER-495: Fix success detection for verify
* SER-507: set default `create_token` for purchase and
authorize transactions

Remote Test:
------------------------------
Finished in 290.029817 seconds.
23 tests, 64 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 46.103032 seconds.
5458 tests, 77155 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Payeezy: Update Stored Credentials

Payeezy requires sending original network transaction id to as
cardbrand_original_transaction_id.

Unit:
47 tests, 217 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
46 tests, 184 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Remove raise ArgumentError on get requests (#4714)

The case for initiating a GET request raises a frivolous ArgumentError
when the code already ignores any attempt to pass in a body to the
request.

* ChekoutV2:Add store/unstore (#4712)

Summary:
------------------------------
In order to use Third Party Vaulting (TPV), this commit adds store and unstore methods.
For apple pay/google pay the actual credentials could work, but for credit cards, and
bank account the credentials required are secret_api_key and public_api_key.

This commits also, refactor the initialize method removing the rescue ArgumentError,
and modifing the commit method to use ssl_request.

Remote test
-----------------------
Finished in 164.163913 seconds.
88 tests, 216 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.046893 seconds.
53 tests, 297 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
756 files inspected, no offenses detected

Co-authored-by: Gustavo Sanmartin <gsanmartin@EN2010363.local>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* CybersourceREST - Refund | Credit

Description
-------------------------
This integration support the following payment operations:
- Refund
- Credit

Closes #4700

Unit test
-------------------------
Finished in 40.91494 seconds.
5454 tests, 77134 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
133.30 tests/s, 1885.23 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

GWI-471

* Payeezy: Ignore `xid` for AP Amex (#4721)

Payeezy has stated the inclusion of `xid` values for AP (Amex
underlying) transactions could result in failures. Add guard to ignore
adding this field if the underlying is `american_express`

Unit: 49 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 47 tests, 186 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* TrustCommerce Verify feature added (#4699)

Enable verify feature on TrustCommerce Gateway

Remote tests
--------------------------------------------------------------------------
21 tests, 74 assertions, 3 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 85.7143% passed

Failing tests not related with changes

unit tests
--------------------------------------------------------------------------
22 tests, 72 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications 100% passed

* CER-440

Add papypal_custom_field and paypal_description gateway specific fields to braintree_blue gateway.

Local:
5455 tests, 77085 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6517% passed

Unit:
94 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
101 tests, 493 assertions, 4 failures, 4 errors, 0 pendings, 0 omissions, 0 notifications
92.0792% passed

* CER-460 Add descriptor phone number to blue_snap

Local:
5457 tests, 77095 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6518% passed

Unit:
45 tests, 269 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
53 tests, 171 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
83.0189% passed

* Braintree: Update transaction hash method

This PR is to update the transaction method to include the processor_authorization_code.

* CyberSourceRest: Add apple pay, google pay

Summary:
-----------------------

In order to perform ApplePay and GooglePay
transaction this commit, adds support.

Closes #4708

Remote test
-----------------------
Finished in 7.216327 seconds.
18 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.032725 seconds.
15 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
760 files inspected, no offenses detected

* CyberSourceRest: Add apple pay, google pay

Summary:
-----------------------

In order to perform ApplePay and GooglePay
transaction this commit, adds support.

Closes #4708

Remote test
-----------------------
Finished in 7.216327 seconds.
18 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit test
-----------------------
Finished in 0.032725 seconds.
15 tests, 80 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop
-----------------------
760 files inspected, no offenses detected

* CybersourceREST - Void | Verify

Description
-------------------------

This integration support the following payment operations:

Verify
Void

Closes #4695

Unit test
-------------------------
Finished in 29.20384 seconds.
5468 tests, 77209 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
186.76 tests/s, 2641.23 assertions/s

Rubocop
-------------------------
Inspecting 760 files
760 files inspected, no offenses detected

* CommerceHub: adjusting reference details (#4723)

Summary:
------------------------------
Changes reference details to properly send
`referenceTransactionDetails` on capture requests

Remote Test:
------------------------------
Finished in 290.029817 seconds.
23 tests, 64 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 47.993895 seconds.
5463 tests, 77178 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Orbital: dismiss CardSecValInd restriction (#4724)

GWI-567

Remote:
122 tests, 509 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:
144 tests, 817 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Rubocop:
760 files inspected, no offenses detected

* Credorax: Set default ECI values for token transactions

Condition eci field depending on payment_method

 Closes #4693

* CyberSource Rest: Add ACH Support

Adding ACH/Bank Accounts to CyberSource Rest

Closes #4722

Unit test:
13 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test:
10 tests, 26 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GWI-480

* CommerceHub: setting transactionReferenceId for refunds (#4727)

Summary:
------------------------------
Updating the refund reference to only use referenceTransactionId

Remote Test:
------------------------------
Finished in 291.397602 seconds.
23 tests, 64 assertions, 1 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
95.6522% passed

Unit Tests:
------------------------------
Finished in 37.637689 seconds.
5474 tests, 77230 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Cybersource REST: Adding capture request

Summary:
------------------------------
Adding the capture functionality to the Cybersource REST
gateway

Closes #4726

Remote Test:
------------------------------
Finished in 25.504733 seconds.
25 tests, 89 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 39.743032 seconds.
5468 tests, 77209 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Paymentez: Add inquire by transaction_id

Get payment status by Paymentez transaction id

Unit:
30 tests, 127 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
34 tests, 73 assertions, 9 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
73.5294% passed
** These failures also existed on the main branch **

* Cybersource Rest - update message response on error

Description
-------------------------
Update message response on error in order to get a more redeable response

GWI-571

Unit test
-------------------------

Finished in 30.871357 seconds.
5476 tests, 77239 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------

177.38 tests/s, 2501.96 assertions/s

Rubocop
-------------------------

760 files inspected, no offenses detected

* Ebanx: Add transaction inquire request

Get transaction by authorization.

Remote:
27 tests, 73 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.2963% passed

Unit:
20 tests, 89 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CommerceHub: Update fields for transactions with sotred credentials (#4733)

Description
-------------------------
This commit add new fields for transactions with stored credentials options
and remove the current referenceMerchantTransactionId in order to use
referenceTransactionId

[SER-504](https://spreedly.atlassian.net/browse/SER-504)
[SER-536](https://spreedly.atlassian.net/browse/SER-536)

Unit test
-------------------------
Finished in 0.01392 seconds.

22 tests, 147 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

1580.46 tests/s, 10560.34 assertions/s

Remote test
-------------------------
Finished in 296.371956 seconds.

24 tests, 63 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

0.08 tests/s, 0.21 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* Ebanx: Add support of Elo & Hipercard

For all credit card transactions Ebanx only requires payment_type_code to
be 'creditcard' no matter the card. This removes the need of specifiying
the card brand in Ebanx transaction.
Unit:
19 tests, 84 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
28 tests, 74 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.4286% passed

* Checkout_v2: Add idempotency key support

This PR is to add the support for an optional idempotency key through the header during requests and should be available to all actions 'purchase, authorize, and etc'. I did note that the failing remote tests were sending back 401 unauthorize even when on the latest upstream master. Test results below:
Local:
5469 tests, 77162 assertions, 0 failures, 19 errors, 0 pendings, 0 omissions, 0 notifications
99.6526% passed

Unit:
54 tests, 300 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
89 tests, 213 assertions, 4 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
95.5056% passed

* Adyen: add support for shopper_statement field for capture action

* Checkout_v2: update idmepotency_key names

* * Payeezy: Enable external 3DS

Summary:
------------------------------
This PR includes the fields and logic required to send external 3ds data
for purchases and auths.

Closes #4715

Test Execution:
------------------------------
Unit test
Finished in 0.067186 seconds.
46 tests, 211 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
Finished in 140.523393 seconds.
48 tests, 194 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Failures not related with the added code

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Shift4: Fix `Content-type` value (#4740)

Change `Content-type` value to `applicaiton/json` instead of xml

Unit: 23 tests, 147 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 24 tests, 56 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
91.6667% passed

* Ebanx: Remove default email

ECS-2829

Ebanx requires that merchants pass in an email in
order to complete a transaction. Previously, ActiveMerchant
was sending in a default email if one was not provided which
causes Ebanx's fraud detection to mark these transactions as
failed for fraud. This incorrect failure message has led to
merchant frustration since they could not quickly know the
root of the problem

Test Summary
Remote:
32 tests, 88 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.875% passed

* CyberSourceRest: Add stored credentials support

Description
-------------------------
This commit adds support for stored credentials to the CyberSourceRest gateway
and according to their docs CyberSource has two type of flows
[initial](https://developer.cybersource.com/docs/cybs/en-us/payments/developer/ctv/rest/payments/credentials-intro/credentials-maxtrix/credentials-maxtrix-initial.html) and [subsequent](https://developer.cybersource.com/docs/cybs/en-us/payments/developer/ctv/rest/payments/credentials-matrix/credentials-matrix-sub.html)

Closes #4707

Unit test
-------------------------
Finished in 0.025301 seconds.

18 tests, 97 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

711.43 tests/s, 3833.84 assertions/s

Remote test
-------------------------

Finished in 25.932718 seconds.

29 tests, 107 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

1.12 tests/s, 4.13 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

* Payeezy: Add `last_name` for `add_network_tokenization`

This change updates the `add_network_tokenization` method to include the
`last_name` in the `cardholder_name` value when getting the name from a
payment method

Closes #4743

Unit: 49 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 50 tests, 201 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe PI: tokenize PM for verify

ECS-2867

For the Stripe PI gateway, when a merchant runs a verify
they want to get back the resulting card information that
Stripe provides. In off_session cases we are not tokenizing
the card at Stripe which prevents us from getting back
valuable card details.

This commit updates the logic to always get the card details
back from Stripe on verify transactions.

This commit also improves the resiliency of Stripe PI remote tests
by dynamically creating a customer object before running the remote
tests so that they do not error out with a too many payment
methods for customer message.

Test Summary
Remote:
80 tests, 380 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Kushki Gateway: Add support for the months and deferred fields

* Borgun: Update TrCurrencyExponent

ECS-2861

A merchant using the Borgun gateway reported that when
a user was completing the challenge, the gateway was displaying
a value 100 times greater than what was requested. This casused
the ccardholders to stop the 3DS flow and abandon the cart.

After reaching out to the Borgun gateway they explained that
the ISK currency on Borgun is sometimes a 0 decimal currency
and sometimes a 2 decimal currency. The explanation given
via email is that we must provide the TrCurrencyExponent
of 2 when utilizing the 3DS flow but not on the finish sale
portion.

Remote:
22 tests, 47 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed
Note: these 2 tests fail on master

* CyberSourceRest: Add gateway specific fields handling

Summary:
In order to handle several gateway specific fields this commit add the following ones in the cybersource rest gateway file
- ignore_avs
- ignore_cvv
- mdd_fields
- reconciliation_id
- customer_id
- zero_amount_verify
- sec_code

Closes  #4746

Remote Test:
Finished in 36.507289 seconds.
35 tests, 108 assertions, 0 failures, 0 errors, 0 pendings,0 omissions, 0 notifications 100% passed

Unit Tests:
Finished in 0.06123 seconds.
2718 tests, 150 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed

RuboCop:
760 files inspected, no offenses detected

* IPG: Improve error handling

Summary:
------------------------------

This change improves the amount of detail in the response
message when the gateway responds with an error.

Closes #4753

Remote Test:
------------------------------
Remote:
18 tests, 54 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 29.462929 seconds
5483 tests, 77277 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* * Shift4: Handle access token failed calls

Summary:
------------------------------
Adding changes to handle failed calls to get the access token

GWS-46

Closes #4745

Remote Test:
------------------------------
Finished in 172.659123 seconds.
24 tests, 56 assertions, 2 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
91.6667% passed

Unit Tests:
------------------------------
Finished in 40.296092 seconds.
5480 tests, 77260 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Bogus: Add verify, plus assoc. test

* Checkout v2: Add Shipping Address

Add shipping address local and remote tests

Remove Marketplace object as not supported for Sandbox testing

* Release 1.128.0

* Adyen: update selectedBrand mapping for Google Pay

Adyen advised that `googlepay` is the correct value to send for `selectedBrand`

CER-550

LOCAL
5498 tests, 77340 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

GATEWAY - UNIT TESTS
105 tests, 531 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GATEWAY - REMOTE TESTS
132 tests, 443 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed

* Shift4: add vendorReference field

This change maps `options[:order_id]` to Shift4's `vendorReference` field

CER-563

LOCAL
5498 tests, 77341 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

GATEWAY UNIT TESTS
25 tests, 154 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

GATEWAY REMOTE TESTS
25 tests, 58 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
92% passed
(These failures also exist on the master branch)

* Litle update the successful_from method

Add 001 and 010 to be considered successful responses for Litle.

Remote
57 tests, 251 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Unit
58 tests, 255 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Improve error handling: OAuth

ECS-2845

OAuth has become a standard authentication
mechanism for many gateways in recent years
however AM has not been updated to support error
handling when a merchant passes incorrect details
to the gateway.

In non OAuth flows we would return a failed response.
This commit now raises a new exception type indicating that
the request failed at the OAuth stage rather than the
transaction stage of a request

Remote:
25 tests, 57 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
92% passed

* Stripe PI: Add billing address when tokenizing for ApplePay and GooglePay

This adds functionality to add the card's billing address to digital wallets ApplePay and GooglePay. The billing address is available on the result of the card tokenization and is saved to the created PaymentIntent.

The remote test failures also exist on `master`.

Test Summary
Local: 5500 tests, 77348 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit: 83 tests, 368 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
93.9759% passed

* Rexml is no longer a default gem in Ruby 3 (#3852)

* Revert "Rexml is no longer a default gem in Ruby 3 (#3852)" (#4767)

This reverts commit dad65a7cb70985e1b477231c4d7e33455d40e04c. It caused ci to fail due to a rexml issue.

* Add rexml as a gem dependency (#4768)

* Add rexml as a gem dependency

Rexml is no longer included with Ruby 3+, we therefore need to add the dependency explicitely.

* Remove garbage character from test file

* Release v1.129.0

* Mit: Changed how the payload was sent to the gateway

Closes #4655

* Revert "Mit: Changed how the payload was sent to the gateway"

This reverts commit 6e3cd4b431fdd521e955d80fa3133f6dc2653899.

* PayuLatam:
The original method of surfacing error codes was redundant and didn't actually surface a network code that is particularly useful. This PR aims to fix that issue for failing transactions.

* CyberSource: Handling Canadian bank accounts

Summary:
------------------------------
Add changes to CyberSource to properly format canadian routing
numbers when payment methods is bank account.

GWS-48

Closes #4764

Remote Test:
------------------------------
Finished in 114.912426 seconds.
121 tests, 611 assertions, 5 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
95.8678% passed

*Notes on erros*:
The test suite was ran with a single account rason for errors:
- 2 errors correspondsto account not enabled for canadian bank transactions.
- 2 errors correspond to outdated 3ds PAR values.
- 1 error related with account not enabled for async.

Unit Tests:
------------------------------
Finished in 41.573188 seconds.
5501 tests, 77346 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Update Changelog

* CyberSource Rest: Fixing currency detection

Summary:
------------------------------
Fix bug on Cybersource Rest to use other currencies
different than USD.

Closes #4777

Remote Test:
------------------------------
Finished in 46.080483 seconds.
43 tests, 141 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 33.72359 seconds.
5506 tests, 77384 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

* Cybersource: Add business rules for NT

ECS-2849

A previous commit from 2015 restricted the ability to pass
business rules such as `ignoreAVSResult` and `ignoreCVResult` on
API requests with NetworkTokenization cards. Merchants are now
asking for this to be allowed on requests with payment methods
such as NT/AP/GP and the remote tests seem to indicate we can
add these fields for these types of payment methods.

Remote CBYS SOAP:
119 tests, 607 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.479% passed
Remote CYBS Rest:
46 tests, 152 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Adyen: Update Mastercard error messaging

Adyen error messaging uses the generic refusalReasonRaw
field as part of the response message. Adyen offers a more
detailed Mastercard-specific field called merchantAdviceCode
that should be present for failed Mastercard transactions.

Adyen error messaging now checks for the merchantAdviceCode first.
If it is not present (i.e. this is not a Mastercard transaction
or it is a Mastercard transaction and this field is missing for
some reason) then the default refusalReasonRaw field is used (like
previous functionality).

ECS-2767

Unit:
107 tests, 539 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote:
132 tests, 443 assertions, 12 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
90.9091% passed
*These 12 tests fail on master

Closes #4770

* Authorize.net: update mapping for billing address phone number

Adds a bit of logic to the Authorize.net gateway so that phone number can be passed via `billing_address[phone_number]` in addition to `billing_address[phone]` This is similar to #4138

CER-590

LOCAL
5503 tests, 77374 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
121 tests, 681 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
84 tests, 301 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Braintree: update mapping for billing address phone number

Adds a bit of logic to the Braintree gateway so that phone number can be passed via billing_address[phone_number] in addition to billing_address[phone] This is similar to #4138

CER-603

LOCAL
5505 tests, 77373 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
94 tests, 207 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
103 tests, 550 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CommerceHub: Enabling multi-use public key encryption (#4771)

Summary:
------------------------------
Changes the payment method so is possible to send an encrypted
credit card following the CommerceHub Multi-User public key
methodology.

SER-555

Note on failing test: You need the proper account permissions and
credentials to use the encrypted credit card.

Remote Test:
------------------------------
Finished in 288.325843 seconds.
25 tests, 63 assertions, 0 failures, 0 errors, 0 pendings,
0 omissions, 0 notifications
100% passed

Unit Tests:
------------------------------
Finished in 38.640945 seconds.
5506 tests, 77384 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

Co-authored-by: cristian <Heavyblade@users.noreply.github.com>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Ogone: Enable 3ds Global for Ogone Gateway (#4776)

Description
-------------------------------------------

This commit introduces the support for 3DS Global payments using the Ogone Direct API through GlobalCollect.
As Ogone and GlobalCollect share the same underlying payment service provider (PSP), Worldline, we can leverage
the new attribute 'ogone_direct' to use the appropriate credentials and endpoint to connect with the Ogone Direct API.

[SER-562](https://spreedly.atlassian.net/browse/SER-562)

UNIT TEST
-------------------------------------------

Finished in 0.253826 seconds.

44 tests, 225 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

173.35 tests/s, 886.43 assertions/s

REMOTE TEST
-------------------------------------------

Finished in 71.318909 seconds.

43 tests, 115 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
97.6744% passed

0.60 tests/s, 1.61 assertions/s

Note:
During testing, a single failure related to installment processing was identified with GlobalCollect.
The error message "NO_ACQUIRER_CONFIGURED_FOR_INSTALLMENTS" I think that the issue may be related to
GlobalCollect's account configuration, which is outside the scope of this update.

RUBOCOP
-------------------------------------------

760 files inspected, no offenses detected

Co-authored-by: Javier Pedroza <jpedroza@spreedly.com>

* Borgun change default TrCurrencyExponent and MerchantReturnUrl (#4788)

Borgun default TrCurrencyExponent to 2 for all 3DS txn and 0 for all
else. Change MerchantReturnUrl to `redirect_url`.

Unit: 11 tests, 56 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote: 22 tests, 43 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
77.2727% passed

* Borgun support for GBP currency (#4789)

Add support to Borgun for GPB based on [ISO
4217](https://en.wikipedia.org/wiki/ISO_4217)

Unit:

Remote:

* Worlpay: Fix Google Pay

Ensure that we don't send cardHolderName if empty and that Google Pay
and Apple Pay fall into the network tokenization code path and not
the credit card path.

Remote Tests:
100 tests, 416 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests:
107 tests, 633 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe PI: Update paramters for creating of customer

Start sending address, shipping, phone and email when creating
a customer.

Remote Tests
84 tests, 396 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests
42 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Revert "Stripe PI: Update paramters for creating of customer"

This reverts commit 46f7bbc8b7b6afa16f26b6cc12f7c13b4d1d3ea3.

* Cybersource: auto void r230

ECS-2870

Cybersource transactions that fail with a reasonCode of `230` are
in a state where the gateway advises the merchant to decline but has
not declined it themselves. Instead the transaction is pending capture which
can create a mismatch in reporting.

This commit attempts to auto void transactions that have this response code
and a flag that indicates the merchants would like to auto void these kinds
of transactions.

Remote:
121 tests, 611 assertions, 5 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
95.8678% passed

5 test failures on master as well

* Redsys: Set appropriate request fields for stored credentials with CITs and MITs

Following pre-determined guidance for CIT/MIT request fields for this gateway. We were getting it mostly right, but almost didn't count, so the `DS_MERCHANT_DIRECTPAYMENT=false` value was added for initial CITs.

Both CITs and MITs should be indicated with the `stored_credential` field `recurring`, so as long as that happens, `DS_MERCHANT_COF_TYPE` should have the value as `R` in both transactions.

An outstanding task is to pass `DS_MERCHANT_IDENTIFIER` as 'REQUIRED' for CITs. I'm currently blocked on the credentials for the Redsys sandbox environment (getting the error `SIS0042` - Signature calculation error). This means that I'm unable to confirm that Redsys indeed returns a `DS_MERCHANT_IDENTIFIER` value in their response, in order to pass in a future MIT.

Test Summary
Local: 5512 tests, 77418 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
       100% passed

Unit: 35 tests, 122 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
      100% passed

* Stripe & Stripe PI: Validate API Key

Stripe Unit:
145 tests, 765 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Stripe Remote:
77 tests, 362 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Stripe PI Unit:
42 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Stripe PI Remote:
83 tests, 391 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Remove last validation for Stripe API Key

* Add BIN for Maestro

Adds one new BIN to the Maestro BIN list: 501623

CER-640

5514 tests, 77426 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

* DLocal: Add save field on card object

* Add support for MsgSubID on PayPal Express requests (#4798)

* Adds support for PayPal Express MsgSubID property

* Removes unrequired PayPal changes for MsgSubID

* Updates CHANGELOG with HEAD changes

* Checkout_v2: use `credit_card?`, not case equality with `CreditCard` (#4803)

Checkout_v2: use `credit_card?`, not case equality with `CreditCard`

* Shift4: Enable general credit feature. (#4790)

Summary:------------------------------
Enabling general credit feature

Remote Test:
------------------------------
Finished in 171.436961 seconds.
28 tests, 63 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 92.8571% passed
failing test not related to PR changes

Unit Tests:
------------------------------
26 tests, 163 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detected

Co-authored-by: Nick Ashton <nashton@gmail.com>

* Release v1.130.0

* Redsys: Add supported countries

This updates the list of countries that Redsys supports by adding France (FR), Great Britain (GB), Italy (IT), Poland (PL), and Portugal (PT)

CER-643
5527 tests, 77497 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

* Authorize.net: truncate nameOnAccount for bank refunds

The API specification requires that the string be no longer than 22 characters; refunds will fail if this limit is exceeded

CER-670

REMOTE
85 tests, 304 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

UNIT
122 tests, 688 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

LOCAL
5525 tests, 77482 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

* Checkout: Add support for several customer data fields

CER-595

Ran into a lot of tricky data collisions and had to do some finagling to make sure existing test cases would pass. I left open two possibilities for passing in the phone number depending on how users would like to pass it in: manually via options or via the phone number that’s attached to credit card billing data on the payment method.

It’s possible to pay with a stored payment method which would be a `String`. In this case there’s no name data attached so added some guarding against NoMethodErrors that were resulting from trying to call payment_method.name.

Remote Tests:
92 tests, 221 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
96.7391% passed

Unit Tests:
57 tests, 319 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Local Tests:
5516 tests, 77434 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Worldpay: check payment_method responds to payment_cryptogram and eci (#4812)

* Release v1.131.0

* Stripe PI: Add new stored credential flag

Stripe has a field called `stored_credential_transaction_type` to assist
merchants who vault outside of Stripe to recognize card on file transactions
at Stripe. This field does require Stripe enabling your account with this
field.

The standard stored credential fields map to the various possibilities that
Stripe makes available.

Test Summary
Remote:
87 tests, 409 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Commerce Hub - Add a couple of GSFs (#4786)

Description
-------------------------
Add:
physical_goods_indicator maps to physicalGoodsIndicator inside of transactionDetails
scheme_reference_transaction_id maps to schemeReferenceTransactionId inside of storedCredentials

SER-501

Unit test
-------------------------
Finished in 33.616793 seconds.

5511 tests, 77405 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote test
-------------------------
163.94 tests/s, 2302.57 assertions/s

Rubocop
-------------------------
Inspecting 760 files
760 files inspected, no offenses detected

Co-authored-by: Luis <sinourain+endava@gmail.com>
Co-authored-by: Nick Ashton <nashton@gmail.com>

* Nuvei (formerly SafeCharge): Add customer details to credit action

* IPG: Update live url to correct endpoint

The live_url for IPG was likely always incorrect, this updates it to hit
the actual endpoint.

Also changes test data to prevent a scrub test failure.

Remote (same failures on master):
18 tests, 40 assertions, 8 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications

Unit:
27 tests, 123 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications

* vPos: Adding Panal Credit Card type (#4814)

Summary:
------------------------------
Add the panal credit card type and enables it for
vPos gateway

Unit Tests:
------------------------------
Finished in 38.864306 seconds.
5542 tests, 77546 assertions, 0 failures, 0 errors,
0 pendings, 0 omissions, 0 notifications
100% passed

RuboCop:
------------------------------
760 files inspected, no offenses detectednitial commit

* Stripe PI: Update parameters for creation of customer

Start sending address, shipping, phone and email when creating
a customer.

Remote Tests
84 tests, 396 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit Tests
42 tests, 224 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* WorldPay: Update xml tag for Credit Cards

Update the xml tag for Credit Cards to be CARD-SSL
instead of being specific to card brand.

Remote:
100 tests, 416 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:
109 tests, 637 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* PaywayDotCom: Update live url

The gateway has advised to direct traffic to their failover .net endpoint

LOCAL
5542 tests, 77550 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
16 tests, 64 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
16 tests, 43 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Stripe: Update login key validation

Remote:

Stripe PI
87 tests, 409 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Stripe
77 tests, 362 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Unit:

Stripe PI
51 tests, 252 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Stripe
146 tests, 769 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* CheckoutV2: Parse AVS and CVV checks

The CheckoutV2 gateway had logic in the response parsing
method that would limit the scope of parsing to only authorize or
purchase. This presents an issue for merchants using `verify-payment`
or other methods that may have the AVS and CVV checks in the response.

This commit also updates the AVS and CVV checks to use `dig` to
safely try parsing out the values

Test Summary
Remote:
93 tests, 227 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* NMI: Add shipping_firstname, shipping_lastname, shipping_email, and surcharge fields

CER-666
CER-673

LOCAL
5547 tests, 77613 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
56 tests, 454 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
51 tests, 184 assertions, 3 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
94.1176% passed

*Test failures are related to Apple Pay and eCheck, and are also failing on master

* Borgun: Update authorization_from & message_from

Update authorization_from to return nil if the transaction failed or
it is a 3DS transaction. Update message_from to return ErrorMessage
if present.

Unit:
12 tests, 66 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Remote:
22 tests, 43 assertions, 6 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
72.7273% passed

* Kushki: Add Brazil as supported country

Unit
17 tests, 109 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

Remote
18 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Adyen:  Add additional data for airline and lodging

Description
-------------------------
GWS-67

This commit adds additional data for Adyen in order
to be able to send information regarding the airline and lodging.
To send this new data, it sends fields additional_data_airline and
additional_data_lodging as a GSF.

Unit test
-------------------------
Finished in 0.157969 seconds.

109 tests, 567 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

690.01 tests/s, 3589.31 assertions/s

Remote test
-------------------------
Finished in 176.357086 seconds.

134 tests, 447 assertions, 11 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
91.791% passed

0.76 tests/s, 2.53 assertions/s

Rubocop
-------------------------
760 files inspected, no offenses detected

* MIT: Changed how the payload was sent to the gateway

Closes #4655

* Nuvie/SafeCharge: Add unreferenced refund field

* CyberSource: include `paymentSolution` for ApplePay and GooglePay (#4835)

See
- https://developer.cybersource.com/content/dam/docs/cybs/en-us/apple-pay/developer/fdiglobal/rest/applepay.pdf
- https://developer.cybersource.com/content/dam/docs/cybs/en-us/google-pay/developer/fdiglobal/rest/googlepay.pdf

Schema:
- https://developer.cybersource.com/library/documentation/dev_guides/Simple_Order_API_Clients/html/Topics/Using_XML1.htm
- https://ics2ws.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.211.xsd

* Release v1.132.0

* Fix CHANGELOG after Version 1.132.0 (#4837)

* CyberSource: remove credentials from tests (#4836)

* Release v1.133.0

* Paysafe: Map order_id to merchantRefNum

If options[:merchant_ref_num] is not supplied, options[:order_id] will be used as the fallback value

CER-683

LOCAL
5559 tests, 77691 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

760 files inspected, no offenses detected

UNIT
18 tests, 89 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

REMOTE
33 tests, 82 assertions, 8 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
75.7576% passed

* Stripe PI: Gate sending NTID

Don't send NTID in add_stored_credential if
post[:payment_method_options][:card][:stored_credential_transaction_type] = 'setup_on_session'
and setup_future_usage=off_session.

* Update required Ruby version

Updated required Ruby version to be 2.7 and Rubocop to 0.72.0.

All unit tests and rubocop:
5532 tests, 77501 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

* Release v1.134.0

* Kushki: Enable 3ds2

Summary:

Enable 3ds version 2 on the gateway above

SER-625

Unit Test

Finished in 0.019977 seconds.
------------------------------------------------------------------------------------------------------
17 tests, 109 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
------------------------------------------------------------------------------------------------------

Remote Test

Finished in 82.28609 seconds.
------------------------------------------------------------------------------------------------------
23 tests, 68 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
----------------------------------------------------------------…
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