Introduce ability to update address during the checkout process - CI Minutes purchase flows

Summary

When customer accounts are created in customers.gitlab.com as a result of a trial, we capture a billing address of "N/A, N/A, etc." because some portions of the address are not required during the trial checkout flow. However, when this customer attempts to make a purchase, the purchase fails due to an address which doesn't pass our validation.

Proposal

We will solve this by introducing the ability to add/update required address information for purchase during the purchase flow. This issue is specifically to address all CI Minutes purchase flows. Separate issues will be made for all other purchase flows.

Designs: #2351 (closed)

Success Criteria

  1. An address form should be displayed in all cases, even when the stored address is valid.
  2. In this first iteration, if a valid address is stored, we do not need to provide edit capability during the purchase flow. However, this will be a subsequent iteration, so if it's more work to not allow someone to edit the address, please allow for it.
  3. Where an invalid address is stored, the user should be able to edit the address without leaving the purchase flow.
  4. We should validate the address entered and return a message if a validation error exists. (this can be future iteration)
  5. This address flow should be available on the "new" or "old" flow, whichever is currently in production at the time of working this issue. Note, the screenshot below is showing the old flow which is multiple screens.
  6. We should apply the same country screening we apply in the "My Account" Country end point to disallow for adding of embargoed countries as billing address.
  7. The data captured during the checkout flow should be sent to applicable systems (Zuora, SFDC?) and all datastores should reflect the same invoice address.

Screen_Shot_2020-09-23_at_8_56_52

Edited by Matthew Nearents