Contributors:

Vlad Zaytsev - WebinOneAdam Wilson - Logo Pogo

Migrating to Advanced Payment Flow

This article describes differences and possible required actions for migrating to the Advanced Payment Gateway flow.

Difference #1: Payment Gateway And Domain Settings

Currency is no longer selectable for payment gateway when Advanced Payment Flow is enabled.

Instead of a full currencies list you will be provided with the currency/country pairs that are taken from domain settings of all your domains.

Payment Settings - Currency/Country pairs

In order to setup/change currency you should go to the domain settings and choose (or create first) a culture that contains desired currency.

When Advanced Payment Flow is enabled you have an ability to setup several stripe (or any other) payment gateways.

One gateway per one unique currency/country pair.

Required Actions

Once feature enabled this change requires you to check if your domains have proper countries and format settings selected. And apply proper once if not.

Example:

You have AUD currency selected for stripe.

Stripe currency selection example

Once the flag is enabled your Payment Settings page will be changed from this:

Payment Settings page before change over

To this:

Payment Settings page after change over

You can see that Gateway now is not selected. That’s because the system set default country to UNITED STATES and format setting to Default (that contains USD currency) by default.

In order to see and/or change these settings you should go to the domains page. You can see all your domains and their countries and format settings.

Domain Country and Currency/Format settings

If your site is not configured for UNITED STATES and USD currency then you need to go to the CURRENCY AND FORMAT tab first and create your format setting.

Create Currency/Format settings

Let's name it AUD and select appropriate currency and culture and click save.

Currency/Format settings example

Your format setting should appear in the list of format settings.

Now we go back to the SITE DOMAINS tab and for each domain just choose AUD format setting.

Apply Currency/Format settings to domain

Due to the background transition that was applied once this flag was added - your payment gateway setting, secure zone recurring prices and event prices were converted to the following:

  1. Currency was attached based on payment gateway settings (all is good here)

  2. Unfortunately, the country that was attached as the default one is UNITED STATES.
    This means that in order to save consistency you should not change the domain country. Otherwise you would have to reset all secure zone recurring prices and event prices.

Difference #2: General Payment Forms.

HTML layout of the form should be changed.

Adjusting Form layout

Then use the following required actions.

Required Actions

General Form layout changes

Go to the Edit Layout section of the form.
Remove data attributes for order name and description.
They will be set on the backend by the internal rules.

PaymentType field was reworked to accept payment types not payment gateway as it wrongly did before.

Rename select field name attribute to Payment_Type

Replace stripe option to the CreditCard option.

Advanced Payment flow allows you to have following options:

CreditCard

Replacement of the old stripe type. Gateway will be determined by the current domain instead.

Stripe key, currency and other gateway staff now passed via get params of the payment gateway js that is automatically attached to the head of the page if page contains at least one component type form with selected accept payment field

Free

Option that is accepted only if the submitted amount is equals to 0. Submitting such a form still creates an order-form_submission pair.

Offline

Option that allows creating order in Awaiting Payment state. So you will be capable to add offline payment on order -> Payments tab that will change order state to Success

Replace
<input type="hidden" name="paymentData" value="">
with the
{% component type:"payment_form_fields", formAlias:"{{this.alias}}" %}

Remove this liquid code. It’s not needed any more.

Amount field was transformed to Payment_Amount field.

Value of the this.paymentAmount will be set based on price param if form does not contain any secure zone with paid recurring subscriptions.

If the form contains such a secure zone then price value will be overridden by sum of all paid subscriptions.

Difference #3: Recurring Subscriptions to Secure Zones

HTML layout of the form should be changed.

Adjusting Form layout

Then use the following required actions.

Required Actions

Replicate all actions that are described in the Difference #2.

Go to all your recurring secure zones and verify that prices were migrated to the new payment model correctly.

Recurring Secure Zone payment settings

If it is empty then there are several possible reasons for that:

  1. You have not set country and format settings for your domains.

    Domain Country and Currency/Format settings
  2. In this case please follow the actions described in the Difference #1.

  3. You set a country for the domain that is not UNITED STATES. In this case either return the country back to UNITED STATES or set and save the price manually.

  4. Price wasn’t migrated correctly to the new model. The price should be set and saved manually.

Difference #4: Event Subscription forms (with and without payment)

HTML layout of the form, AND the Form Type, should be changed.

Adjusting Form layout

Then use the following required actions.

Required Actions

Go to the Form Builder section of the form and change form type from Generic to SingleItem and click save.

SingleItem form type change

Then follow the guide below for the event subscription form without payment.

Event Subscription Form layout changes
  1. Go to the Edit Layout section of the form. Remove this liquid code since this is now unnecessary.

  2. If liquid code is unnecessary. Remove it.

  3. eventId field should be renamed to Payment_ModuleItemId.

    Value should be changed to {{this.moduleItemId}}.

  4. allocations field should be renamed to Payment_ItemQuantity

    Add data-event_one_item_price="{{this.paymentAmount}}" data attribute to the field so it will be calculated by CMS payment js.

  5. If your event subscription form also accepts payments then follow the actions described in the Difference #2 additionally.