Page MenuHomePhabricator

Credit card form should not be replaced if we're already on the correct type of credit card form
Closed, ResolvedPublic

Description

I just went to the donation page intending to donate and selected the credit card option.

After letting LastPass form fill out (using my Default profile) the billing info, entering an e-mail address, and selecting visa I tried to use the form filling functionality to fill out the credit card information form.

When I try to do this the form is not filled out, instead I see the visa form temporarily turn into the loading icon, and re-appear blank.

My guess is that LastPass tries to fill out all the form inputs. Our form detects LastPass going through and saying "This looks like a form input asking what type of credit card this is, let's tell it that it's a Visa" and even though already on the Visa form it decides to load the Visa form. Naturally since LastPass does the form filling in one pass the event is fired after LastPass is finished and as a result the newly loaded Visa form replaces the completely filled out Visa form.

My guess is that we can fix this simply by checking what form is currently loaded, and not trying to ajax replace it if we're already on the type of form we want.


Version: unspecified
Severity: normal

Details

Reference
bz33422

Event Timeline

bzimport raised the priority of this task from to Low.Nov 22 2014, 12:01 AM
bzimport set Reference to bz33422.
bzimport added a subscriber: Unknown Object (MLST).

pgehres wrote:

Hmm. This sounds like some fun with the iFrame.

It looks like we do reload the iFrame every time a credit card type is selected. We should probably not reload when the type clicked is currently the one loaded as suggested above. This would also reduce API calls and thus fees.

I have no idea if it will fix the LastPass issue though.

This is almost certainly because the actual credit card fields on our credit card forms are dynamically loaded in an iframe provided by our credit card payment processor, GlobalCollect. This happens for a variety of legal and security reasons. Because of the data GlobalCollect requires of us to retrieve the iframe coupled with creating a seamless credit card processing form to maximize donor conversion, we cannot load/embed the iframe until after the donor has filled out their billing info and selected their credit card type.

I imagine that you could use LastPass to fill out all of your billing info, then select your credit card type, then click inside of the iframe, and then use LastPass to fill out your specific credit card information.

(In reply to comment #2)

I imagine that you could use LastPass to fill out all of your billing info,
then select your credit card type, then click inside of the iframe, and then
use LastPass to fill out your specific credit card information.

I did that, that's practically what I've done from the start. The iframe is still replaced.

Now it might be LastPass' fault that it's not filling out a form inside an iframe but either way we shouldn't be replacing the iframe if it's already on the correct form type.
If we keep doing that it's possible that form filling tools will still not work even after the iframe filling functionality is fixed.

if the form is filling inside of the iframe it can't resubmit outside of the iframe (just like if it tries to submit it outside of the iframe it can't actually fill in the form inside of the iframe). I'm wondering what is causing your specific issue because I've used lastpass on both Windows and Linux for form testing for the past couple months and it's always worked (including yesterday).

Ah, sorry, I missed the portion of this report talking about the iframe getting re-loaded - I was getting hung up on the LastPass thing. We need that functionality when switching card types, but if you are not changing card types, there's no reason that iframe should reload. I imagine this is something that will get tackled after the current fundraising campaign is over.

(In reply to comment #3)

(In reply to comment #2)

I imagine that you could use LastPass to fill out all of your billing info,
then select your credit card type, then click inside of the iframe, and then
use LastPass to fill out your specific credit card information.

I did that, that's practically what I've done from the start. The iframe is
still replaced.

Now it might be LastPass' fault that it's not filling out a form inside an
iframe but either way we shouldn't be replacing the iframe if it's already on
the correct form type.
If we keep doing that it's possible that form filling tools will still not work
even after the iframe filling functionality is fixed.

Btw an update on the LastPass side (the iframe stuff):
"This is something we are aware of, and are working on improving our focusing so we can work on these sort of pages. Unfortunately, I don't have an immediate fix for you. We appreciate your feedback, and please let us know if you have anymore questions or problems for us."

So ideally eventually we'll both have the refresh issue on our side, and LastPass will have their iframe issue fixed, and everything should work smoothly then.

pgehres wrote:

Are there any updates on this issue? We have made a number of changes, but I am not sure any of them would effect this (but it would be possible). If LastPass has fixed there issue and the problem remains, we can spend some time figuring out what we need to fix (if we can) to get it working.

@DanielFriesen - have you tried this again/heard anything else from lastpass? if there's nothing we can do about it, we should close the bug as invalid.

DanielFriesen claimed this task.

The issue doesn't appear to exist anymore. Either the donation form changed or LastPass made some improvements.