Commit Graph
75 Commits
Author SHA1 Message Date
Jorge Pinna PuissantandSamuel Degueldre f43a0814ae [IMP]*: configuration of ESLint for specific files
This commit will add the needed ESLint configurations on the JS files.
These configurations are added if the JS file uses a different
environment (serviceworker, node, etc) or if it uses a specific global
(google, ace, etc).

Co-authored-by: Samuel Degueldre <sad@odoo.com>
2021-05-04 13:32:49 +00:00
Prakash PrajapatiandAntoine Vandevenne 4bb840403b [REF] payment_stripe: migrate Stripe to the new payment API
This commits drops the direct payment flow supported by the SetupIntent
API in favor of the payment with redirection flow, supported by the
Checkout API only.

See the merge commit for more details.

task-2333040

Co-authored-by: Antoine Vandevenne <anv@odoo.com>
2021-03-30 09:25:51 +02:00
Benoit Socias 20141a0b91 [FIX] various: not translate the close icon of notifications
Same change in several areas where translations existed:
- website editor notification popup
- elearning share popup
- forum remediation filter popup
- event registration attendees popup
- portal rating popup
- stripe payment error popup
And many other locations where there were no translations yet
"&times;" has been replaced by its UTF8 character.
Also introduced aria-label where missing.

Before this commit the close icon was included in translated resources.
For example, in Spanish the "&times;" had been turned into "&veces;"
thus not rendering an icon anymore

After this commit the close icon is not a translated text anymore and
remains an icon across all languages

https://github.com/odoo/odoo/pull/60186
task-2312878

closes odoo/odoo#62250

X-original-commit: 9896af94ebc887d98ccf44e6568ef7eeb5a27172
Related: odoo/enterprise#14937
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2020-11-24 15:59:43 +00:00
Jason Van Malder 1c14419e93 [FIX] payment_stripe: fix traceback when error has no event
Issue

    - Install eCommerce
    - Add Stripe
    - Pay with invalid cart

    Traceback

Cause

    When I improved stripe error, I didn't checked if
    an error could have no event

Solution

    Check if the error has an event

OPW-2186385

closes odoo/odoo#44414

X-original-commit: 772c02743b5e6610a75e65e408c956eb6057a47d
Signed-off-by: Jason Van Malder (jvm) <jvm@odoo.com>
2020-01-31 16:28:08 +00:00
Jason Van Malder 22df074e7b [FIX] payment_stripe: fix bad request not displaying
Reproduce the issue

    - Install eCommerce
    - Activate stripe, use testing credentials and select
      Configuration > Payment Flow > Payment from Odoo
    - Create a contact that has a trailing whitespace at the beginning
      of the email
    - Grant him portal access, and a password
    - Open your browser devtools
    - Login to the web shop with this portal user and buy an item using
      stripe

    1. Error Dialog: Server Error (HTTP 500)
    2. The exception received by the front-end is not clear
    3. When the 500 error is fixed, we still have a error dialog
       => bad UX

Cause

    1. The raise was removed but we need to keep it because
       it allows the true error to be raised (bad request)

    2. The "invalid email address: x" is lost when we raise the
       exception

    3. In V13, all catch & guardedCatch open a error dialog if we
       don't set preventDefaulted to true on the error's event

This commit changes restore the raise, change the error message and
disable the error dialog for this case.

OPW-2126196

closes odoo/odoo#41087

X-original-commit: b8d013285ba54c8d3ab4a3857604dfca3e479b39
Signed-off-by: Jason Van Malder <jasonvanmalder@users.noreply.github.com>
2019-11-29 06:59:42 +00:00
Nikunj Ladava 9019645a5d [FIX] payment_stipe: fix empty card error
before this commit, when try to make payment with
empty card details, it will raise error dialog.

after this commit, error will be append to acquirer
form

task - 2089999

closes odoo/odoo#39729

X-original-commit: 01b143b971a85d6da673df6c536917ad4754b83a
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
2019-11-04 11:17:13 +00:00
Damien Bouvy ad94c1e712 [IMP] payment_stripe: sca completitude
Althought most of the SCA compliance stuff was already there,
the flow was slighlty changed to better support some flows in 12.0

Reflect this changes in 12.5.
2019-09-30 15:11:16 +00:00
Thibault Delavallée cab25b690c [FIX] payment: fix error management in payment form
PURPOSE

Test frontend and UI tools of eLearning.

SPECIFICATIONS

Recent commit 5193f0d010 introduced a tool method to parse errors and ease
their management. A variable typo was done by mistake, fixed in this commit.

LINKS

Task ID 1937768

closes odoo/odoo#36085

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-08-26 13:33:26 +00:00
Damien Bouvy 5193f0d010 [IMP] payment*: better handling of error message
Sometimes there's a title + content, sometimes not; reading the message
itself usually yields a None somewhere which is fugly.
2019-08-16 15:52:40 +00:00
Damien Bouvy ad5472b8c5 [IMP] payment_stripe: flow changes
The previous commit introduced some changes for SCA/PSD2 but some things
were missing; most notably, registering payment cards in a s2s flow used
the old Charge API that is not SCA-ready.

This commit uses the SetupIntent API instead, allowing to register the
card prior to payment. The global flow is described in the Stripe
documentation in more details: https://stripe.com/docs/payments/cards/saving-cards

Unfortunately, given the complete flow of payments, it is not possible
to use the PaymentIntents API since this would require having the
reference of the transaction before it gets created (the TX is created
after the form submission, but the token must already exist at that
point). Since this is meant to be backported, this changes are kept
minimal in this feature branch. The PaymentIntents API would have been
better since registering a card during a payment makes it more likely
that future off-session transactions will not require an authentication
step. We'll have to live with that for now; it's difficult to know
exactly how this will affect customers before PSD2 goes into effect on
september 14.

Another branch might completely change the flow soon-ish to a more
asynchroneous model, although it may miss the v13 freeze date -_-
2019-07-18 06:55:59 +00:00
Nikunj Ladava 595c0ad8ee [IMP] payment_stripe: integrate stripe with new checkout api
There is two payment flow in stripe:

1) Redirection Flow (Form Based):
	in this flow, the user will redirect to stripe website for payment
	- create a session for a user and redirect the user to stripe with that session
	- after successful payment, the user will redirect back to odoo
	- get all the details of charge by using payment intent API
	- if user have tick save data then the token will be created

2) S2S Flow:
	after clicking on pay now button, one popup display with card element
	element is provided by a stripe with all validation facilities
	After submitting details, payment flow is
        - create payment method with card element on stripe
        - create a customer with partner email on stripe
        - attach customer to the payment method on stripe
        - create a token with customer and payment method in odoo
        - create payment intent in odoo
        - make a request to stripe
        - after successful request, payment will be charged for that card

task- 1986267
closes: https://github.com/odoo/odoo/pull/33978
2019-07-18 06:55:22 +00:00
Christophe Simonis 6c5783bd5a [MERGE] forward port branch saas-12.2 up to 465909f0fd 2019-06-27 19:10:09 +02:00
Nicolas Martinelli 25745d8515 [FIX] payment_stripe: save token
- Configure Stripe with 'Save Cards' set to 'Let the customer decide' or
'Always'.
- Go to the eCommerce, buy an item
- Use Stripe to pay, make sure to check 'Save my payment data'

No payment token is saved.

It occurs because 2 calls are performed to `/shop/payment/transaction`.
The second call, which is used to record the transaction, doesn't
contain the `save_token` parameter is not sent.

Ideally, we should only make a single call, but since Stripe works a bit
differently, we can't prevent it (in stable, at least). Therefore, we
work around it by searching the checkbox value.

opw-2008275

closes odoo/odoo#34242

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-06-19 13:00:02 +00:00
Christophe Simonis 6b4758cd9a [MERGE] forward port branch saas-12.2 up to 7c1a9a8204 2019-03-27 14:29:01 +01:00
Christophe Simonis 11b1e12cde [MERGE] forward port branch saas-11.3 up to e9068c290b 2019-03-25 18:28:16 +01:00
Christophe Simonis e9068c290b [MERGE] forward port branch 11.0 up to 0196a6feb5 2019-03-25 16:47:05 +01:00
Nicolas Lempereur a11147a091 [FIX] payment_stripe: regression 98fe5054c2
opw-1939323

closes odoo/odoo#32026

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-21 16:51:18 +00:00
Nicolas Lempereur 98fe5054c2 [FIX] payment_stripe: open>exit>open opened 1 time
If using Stripe we did "Pay Now" -> close modal -> "Pay Now" we would
get 2 modals and possibly be blocked by infinite loading.

With this changeset, we only execute one time our strip.js file so we do
not declare multiple MutationObserver.

We also only open one checkout at a time from stripe when closing and
opening it or multiclicking click (the later one that could block the
interface with several stripe iframe opened and one with a infinite
loading wheel).

opw-1939323
closes #31928

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-19 14:09:32 +00:00
dab34f0aeb [REF] payment_stripe: adapt code after jQuery update
Part of task 1896658

Co-authored-by: Aaron Bohy <aab@odoo.com>
Co-authored-by: Christophe Matthieu <chm@odoo.com>
Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com>
Co-authored-by: David Monjoie <dmo@odoo.com>
Co-authored-by: Martin Geubelle <mge@odoo.com>
Co-authored-by: svs-odoo <svs@odoo.com>
Co-authored-by: Vincent Schippefilt <vsc@odoo.com>
2019-03-06 20:07:17 +01:00
sri-odoo b6246b3a46 [FIX] * : add missing app icons
- Add missing SVGs files
- Add icons for new apps

closes odoo/odoo#28992
2018-11-23 15:28:32 +00:00
Christophe Simonis 7499b47ffa [MERGE] forward port branch saas-11.4 up to edd586002e 2018-08-10 13:37:21 +02:00
Christophe Simonis cdef8740ec [MERGE] forward port branch 11.0 up to 252bc396b4 2018-08-09 11:10:38 +02:00
Christophe Simonis 4c2bdafe69 [MERGE] forward port branch saas-15 up to e7ccf38c48 2018-08-08 18:42:27 +02:00
Nicolas Martinelli 6ded4d9ce8 [FIX] payment_stripe: disable button
- Create an order from the eCommerce
- Choose to pay with Stripe
- Enter the credit card info, validate

There is a short window of time (before the reload of the page) where
the user can click on 'Pay Now' again.

This is because the HTML is completely replaced, including the button.
We restore it when necessary.

opw-1866332
2018-08-08 14:18:17 +02:00
qsm-odoo 37b746c6cf [FIX] *: BS4, restore modal headers
Close icon should now be put after the modal title in the DOM.
Completes commit https://github.com/odoo/odoo/commit/d9801c1abe06b4c20702c0e94c56eea6a3ed8327
2018-07-31 13:07:48 +02:00
qsm-odoo 582933ac01 [REF] *: BS4, replace 'btn-xs' by 'btn-sm'
In a previous commit, we removed the use of the 'btn-sm' classes as we
used it everywhere for default-size buttons instead of customizing the
size of those default-size buttons directly.

This commit proves it was even more necessary as the 'btn-xs' class does
not exist anymore in BS4 and we so can use the 'btn-sm' class instead.
2018-07-27 12:36:54 +02:00
Lucas Perais (lpe) f5e145d2b9 [FIX] payment_stripe: regex to match so_ID
Before this commit, when paying a confirmed SO with the token access with Stripe,
Clicking on the button "pay now" wouldn't do anything, because the id of the SO couldn't be retrieved

After this commit, the regex that does just that is more generic and the flow works

OPW 1881192
closes #26884
2018-09-11 09:30:25 +02:00
Christophe Simonis 49edee1f4b [MERGE] forward port branch saas-11.4 up to d54a3726ec 2018-06-29 12:46:00 +02:00
Toufik Benjaa 542409a1b6 [FIX] payment_stripe: If exception occurs display the message
- The code to display the exception message was not working.
2018-06-25 16:21:17 +02:00
kujiu 9de1bc0eef [IMP] Improve compatibility with screen readers (accessibility) (#24574)
Today, Odoo is really tricky to use without seeing the screen, it must be improved to be usable.

This PR forbid to use labels without a "for" attribute, add some title, rule and aria attributes in HTML. With that, Odoo will be fully usable with a screen reader.


* [IMP] Labels must have a for attribute. Improve accessibility.
* [IMP] Better error message when trying to read a missing cached value
* [FIX] Add some aria-label and title attributes for screen readers.
* [FIX] Template name is not included in the error message in case of SyntaxError in QWeb
* [FIX] Improve the Tour failed at step error message to be more explicit.
* [IMP] Add aria-labels
* [FIX] Add missing aria-label on failing test
* [IMP] aria-hidden means hidden. Fix all bad aria-hidden and hide aria-hidden for all.
* [IMP] Color names on kanban views and many2many tags
* [IMP] Add some checks on views for accessibility.
* [IMP] Add `alt` attribute on `img` tags.
* [IMP] Add aria-label and title on non-described icons
* [IMP] Add button role to widgets with btn class
* [IMP] Translate aria and formatted attributes.
* [IMP] Remove wrong aria-labelledby
* [IMP] Add menu role on dropdowns
* [IMP] Buttons must be focusable
* [IMP] Add aria attributes on progress bars
* [IMP] Improve accessibility of basic widgets
* [IMP] Change main layout to more semantic tags
* [IMP] Add menuitem role when missing
* [IMP] Remove wrong role='presentation'
* [IMP] Improve accessibility of tab panels
* [IMP] Add aria-invalid on invalid fields
* [IMP] Add aria-sort on ordered columns
* [IMP] Add role on alerts
* [IMP] Use dialog role, header, main and footer tags for modals
* [IMP] Add labels on o_status
* [IMP] Improve accessibility of kanban view with feeds and articles
* [IMP] Add alerts in case of new messages
* [IMP] Add widget, navigation or img role to aria-labelled items
2018-06-22 21:22:21 +02:00
Toufik Benjaa a3c9c286cc [FIX] payment_stripe: Make stripe.js code more generic
- Stripe.js was limited to only a few pages, which means, if you tried to
implement a new payment route it would never work without modifying
stripe.js to support the new case.

  This commit allows stripe.js to be generic and work with any page.
2018-06-14 18:06:38 +02:00
Adrien Peiffer (ACSONE) 31f3687124 [IMP] payment_stripe: Fill email on stripe modal to avoid retyping it
Purpose
=======

Currently, users have to retype email in the stripe payment popup.

For event registration, the email address must be typed 3 times (the first
for the registration information, the second for the billing information
and finally for the payment on the stripe popup)

Specifications
==============

As the email is already filled on billing information view, isn't
necessary to retype in the payment form.
2018-06-11 11:27:49 +02:00
tbe-odoo 4d905070f9 [FIX] payment: Unable to pay if character '/' in reference
- On 'website_payment/pay' if the reference contains a '/' the payment will never succeed.
  It is due to the fact that in the template "payment.pay" were setting "prepare_tx_url" and "form_action" using this reference.
  But having a '/' in the reference breaks the URL to call to create a transaction.
  So when creating a transaction (or even paying in S2S) the payment never succeed and returns a HTTP 404 error.
2018-03-02 14:18:47 +01:00
tbe-odoo 14081b848f [FIX] payment: Payment form not implemented on /website_payment/pay
The generic payment form introduced in 11.0 has changed the way we collect payment and so does the code.
The route /website_payment/pay hasn't been changed to support the new payment form.
This commit fixes this.

It also fixes a bug for when a customer tries to create two transactions with the same reference.
2018-02-20 15:36:56 +01:00
Christophe Simonis da19a7701e [MERGE] forward port branch saas-16 up to 23752102a0 2018-02-07 17:47:26 +01:00
Christophe Simonis 23752102a0 [MERGE] forward port branch saas-15 up to 830327c66a 2018-02-07 15:18:07 +01:00
Romain Derie 66e76d681d [FIX] payment_stripe: integer currencies (portal payment)
Before this commit:
On portal (My Account > Invoices > Pay Now), a stripe payment in a normal
currency (eg: a non integer currency) would debit the amount *100.
This comes from b335ae0348 which added a workflow to handle integer
currencies but it also sent the *100 amount to /website_payment/transaction
that would create a TX with that amount instead of the normal amount.

Now, the normal amount is correctly sent to the backend, the multiplied amount
is just sent to StripeCheckout handler to correctly display the amount on the
popup after clicking on "Pay Now".

Note: the amount will be multiplied on the backend independently ecda057e11
2018-02-07 13:59:33 +01:00
Nicolas Martinelli ad9edfc2dd [FIX] payment_stripe: missing route
In case an invoice is required to be paid thanks to the route
'/my/invoices/', the user is redirected to '/shop/payment/transaction/'.
If website_sale is not installed, this causes a crash.

Complement of 2bd17285ea

opw-813481
2018-02-02 09:17:30 +01:00
Nicolas Martinelli 4df087b24d [FIX] payment_stripe: incorrect route
The route should contain the SO id, not the acquier id.
2018-02-02 09:17:30 +01:00
fda-odoo eefe879a37 [MERGE] fix payment flow with acquirers in e-commerce, invoices and quotations
As some flows were broken, this set of fixs improve the different routes for all acquirers
See commit messages for more information

Thanks to @jpr-odoo for his first implementation and to @tde and @fgi
2018-01-25 13:12:25 +01:00
fda-odoo 2bd17285ea [FIX] payment_stripe: fix the 404 error and redirect on /my/orders page
Fix the 404 error with stripe on the page /my/orders if website_quote and website_sale aren't installed
2018-01-24 15:41:01 +01:00
Christophe Simonis 950d9b2369 [MERGE] forward port branch saas-16 up to dfe7f00e78 2018-01-22 16:38:01 +01:00
tbe-odoo dfe7f00e78 [FIX] stripe: Fix when no access token set
- When no access token is set, the stripe implementation uses a the access token the string 'undefined'.
2018-01-22 15:03:19 +01:00
Romain Derie cca12fbb08 [FIX] payment_stripe: route receive wrong currency parameter
This commit b335ae0348 previously sent currency instead of currency_id on
/website_payment/transaction route resulting in a cast error.

Now, we send the currency_id as the route expect

This closes #19468, closes #22165
2018-01-11 11:01:35 +01:00
Christophe Simonis b37cc1f9b7 [MERGE] forward port branch saas-16 up to a2ea4ba095 2017-12-12 18:39:43 +01:00
tbe-odoo d45f79e58f [IMP] payment_stripe: Add support of form tokenization
- Added support of form based payment with tokenization to be able to pay Subscriptions and save a payment token for later payments
2017-12-06 16:47:54 +01:00
tbe-odoo 7c639be4aa [FIX] payment_stripe: fix stripe payment form
- Before this patch, stripe doesn't get displayed.
    It was a bug related to the fact that stripe doesn't respect how the generic payment form works.
    So to make it work, we were relying on small hacks that got broke by changes on the payment form.
    To fix the bug we are no longer adding an event to the pay button of the payment form, instead
    we listen all the changes made to the DOM and detect if a form with an attribute 'provider' set to
    'stripe' is added.
    If so, we open up the Stripe payment form.
- Fix ACL issue when trying to pay with Stripe on eCommerce without being logged.

Closes #20202
opw-776200
2017-10-27 11:45:25 +02:00
Christophe Simonis 10128fa7e8 [MERGE] forward port branch saas-16 up to dc2a6c6cd2 2017-10-20 19:27:04 +02:00
Olivier Dony 0fc6fe8653 [FIX] payment_stripe: fix multiple usability problems
- There was no feedback to the user when executing the Charge
  transaction in server-to-server mode, while it could take several
  seconds, with the normal UI/action buttons still available.

- Stripe integration was almost working along with `website_quote`
  payment, but entirely broken with `website_payment`, and partially
  broken with `website_sale`.
  Fixing it required:
  + More leniency in processing optional transaction parameters, which
    may or may not be present in the various payment flows.
  + It also required more precautions when locating the transaction for
    which the Stripe Charge was to be created, which passed in different
    manners in the session. The route now supports an explicit `tx_id`
    to allow forcing the transaction without risk of mixing different
    payment flows.
  + FIXME: There is still some amount of duplication and bad modularity
    in the handling of the various payment flows in relation with
    Stripe.

- We provided very little metadata to the Customer and Charge APIs of
  Stripe. We now pass more names and references to make Stripe payments
  easier to manage in the Stripe dashboard.

- In some cases, selecting Stripe as payment method caused a second
  inclusion of `stripe.js`, raising a JS error because of the
  duplication.

- Strip whitespace in emails: the Stripe API raises an error for
  transactions done with invalid emails, including with
  leading/trailing whitespace.
  Customers will have a hard time figuring out the problem
  by themselves, so we should at least strip whitespaces.
2017-10-19 18:14:15 +02:00
tbe-odoo be650c5979 [IMP] Fixing the code to fit the reviews 2017-08-29 17:16:42 +02:00