commerce
commerce copied to clipboard
[4.x]: First name with hyphen is merged into last name after save
What happened?
Description
When submitting separate first name and last name on the checkout then when the first name contains a hyphen "-" then after save the first name is blank the last name field contains the first name and last name.
Steps to reproduce
- submit first name and last name separately
- Make sure first name contains a hyphen "-" .e.g. "Chi-la".
- Last name can be anything e.g. "Smith"
- Submit the form.
- Refresh and now the first name field is empty and the last name contains "Chi-la Smith"
Expected behavior
I would expect first name field contains "Chi-la" and last name contains "Smith.
WARNING! Stripe does not not support hyphen "-" in the name so perhaps better to output this:
First name: "Chi la" Last name: "Smith
Alternatively strip the hyphen "-" from the stripe payment request generation.
I noticed this issue as a customer couldn't pay due to Stripe having a JS error. Uncaught (in promise) TypeError: paymentResponse.redirectData is undefined due to no first name stored on the order.
Actual behavior
First name: (blank) Last name: "Chi-la Smith"
Craft CMS version
4.8.10
Craft Commerce version
4.5.4
PHP version
No response
Operating system and version
No response
Database type and version
No response
Image driver and version
No response
Installed plugins and versions
@philipboomy
I cant reproduce on latest Craft Commerce 4.x release. Can you confirm if it is happening on address save, or is it only happening when supplied to Stripe?
@lukeholder Thanks for quick reply.
It happens on address save but part of the guest checkout so using commerce/cart/update-cart, I just noticed because Stripe complained. I have shared a link to production site in Discord.
ffr, after discussion on discord, this is only happening on his production site with 'chi-la', but not other hyphenated names. 'chi-la' works on my local dev machine. Going to need to look into it more using the same production templates/project.