Problem/Motivation

We need to integrate Authorize.net ’s Accept Hosted API into the existing commerce_authnet module to support PCI-compliant credit card payments through their hosted payment form.

The integration must

  • Use the Accept Hosted API via getHostedPaymentPageRequest.
  • Support credit card payments only.
  • Support Customer Profiles, including creation and reuse of saved cards.
  • Follow a clean and minimal integration strategy. Preferably via a hook_form_alter(), or via a custom checkout pane similarly to Commerce Stripe if the hook_form_alter() solution doesn't work out somehow.

Acceptance Criteria

  • A new payment gateway plugin is defined.
  • The Accept Hosted payment form is embedded as an iframe at checkout.
  • Only card payments are supported.
  • Customer and Payment Profiles are created and reused via createCustomerProfileRequest and related APIs.
  • No sensitive payment information touches our servers (fully PCI SAQ-A compliant).
  • Code is extensible, does not introduce unnecessary complexity, and avoids the 3452993 patch structure.
  • Basic test coverage and documentation provided.
Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

vmarchuk created an issue. See original summary.

vmarchuk’s picture

vmarchuk’s picture

StatusFileSize
new53.4 KB
vmarchuk’s picture

StatusFileSize
new53.6 KB
vmarchuk’s picture

StatusFileSize
new53.63 KB
vmarchuk’s picture

StatusFileSize
new53.76 KB
vmarchuk’s picture

StatusFileSize
new53.37 KB

imbatman made their first commit to this issue’s fork.

imbatman’s picture

StatusFileSize
new53.65 KB

New patch ensures anonymous checkouts only send the email (no customer ID) to Authorize.Net, preventing all guest profiles from being assigned to customer ID 0. Authenticated users still send both ID and email. Fixes CIM profile misattribution.

vmarchuk’s picture

StatusFileSize
new53.68 KB
vmarchuk’s picture

StatusFileSize
new54.61 KB
vmarchuk’s picture

StatusFileSize
new62.63 KB

Added integration with webhooks.

vmarchuk’s picture

StatusFileSize
new62.71 KB
vmarchuk’s picture

StatusFileSize
new84.25 KB
tkiehne’s picture

Similar work in #3019539; not sure if quite the same but has the same objective

vmarchuk’s picture

@tkiehne I think it's something else. We're working on integrating https://developer.authorize.net/api/reference/features/accept-hosted.html.

morbus iff’s picture

@vmarchuk, what's the difference between this one and #3452993?

tkiehne’s picture

@vmarchuk - yes, it appears they are two different approaches, however, from an initial appraisal, this feature and the AcceptJsUI feature will interact in various parts of the module code. I have been using the AcceptJsUI patch in production for three years and the issue that created it has been ongoing since 2018. I think it wise that the maintainers provide some guidance as to what features will end up being supported/integrated given the interactions.

That said, I am interested in seeing where this implementation goes as it might provide for my needs, and if it ends up merged into contrib will be more stable.

vmarchuk’s picture

Status: Active » Needs review

jsacksick made their first commit to this issue’s fork.

  • jsacksick committed f92cabbe on 8.x-1.x authored by vmarchuk
    feat: #3531056 Implement Accept Hosted API
    
    By: @marchuk.vitaliy
    By: @...
jsacksick’s picture

Status: Needs review » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

  • vmarchuk committed 71d08388 on 8.x-1.x
    Resolve #3531056 "Remove webhooks logging"
    

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.