Skip to content

Merge POST values in confirm-form payment path for tokenized processors.#1111

Open
emanuel-london wants to merge 1 commit into
colemanw:6.xfrom
emanuel-london:tokenized-processor-post-merge
Open

Merge POST values in confirm-form payment path for tokenized processors.#1111
emanuel-london wants to merge 1 commit into
colemanw:6.xfrom
emanuel-london:tokenized-processor-post-merge

Conversation

@emanuel-london
Copy link
Copy Markdown

Overview

Patch to allow new payment processor (Square) extension to work with Webform.

Technical Details

WebformCivicrmConfirmForm::doPayment() does not merge $_POST values into the payment params before calling $paymentProcessor->doPayment(). This means any payment processor that relies on custom POST fields (e.g. tokenized card nonces from Square Web Payments SDK, Stripe payment intents, etc.) will fail with a missing token error when the contribution is routed through the IPN/confirm-form path.
The on-site / live payment path (WebformCivicrmPostProcess::contributionParams()) already merges all POST values into the payment params

// WebformCivicrmPostProcess.php, contributionParams(), ~line 2284
$request = \Drupal::request();
foreach ($request->request->all() as $key => $value) {
  if (empty($params[$key])) {
    $params[$key] = $value;
  }
}

Comments

This affects any payment processor whose doPayment() expects values that are submitted via POST from client-side JavaScript (tokenized/iframe-based processors). Traditional CC processors that use CiviCRM's built-in billing fields are unaffected because those fields are collected by validateBillingFields() and passed through billing_params.

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.

1 participant