Commit Graph
35 Commits
Author SHA1 Message Date
fda-odoo f2bcebb9f2 [FIX] payment_paypal: make IPN work again (revert fix) (#23048)
Revert fix from xmo
(https://github.com/odoo/odoo/commit/29b9b74ceac86a17897eff032a24416fb26b38d1) that broke the IPN flow.
2018-02-14 15:03:56 +01:00
Xavier Morel 29b9b74cea [FIX] payment_paypal: P3 response encoding
Get the decoded body from requests (rather than the encoded one) and
process it as text throughput.

Fixes #21156
2017-11-29 16:17:40 +01:00
Xavier Morel 01e3514147 [FIX] P3: urllib, urllib2 and urlparse
In Python 3, all of these were "consolidated" under urllib(.request,
.parse, .errors) which is inconvenient.

Since we already have hard dependencies on requests and
werkzeug(.urls, which is a backport of Python 3's unicode-aware
urllib.parse) migrate *everything* to that.

A sticking point is urllib2.URLError, those were (mostly) replaced by
the slightly more general IOError which URLError extends.
2017-05-15 12:26:30 +02:00
fka-odoo 25411cfbd0 [IMP] payment_paypal: finally add a field to store PDT token instead of hidden configuration parameter 2017-05-10 13:57:02 +02:00
xmo-odoo fffaf735f5 [FIX] P3: list -> iterable builtins (#16811)
In Python 3:

* various builtins and dict methods were changed to return
  view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
  removed altogether

This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).

Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.

issue #8530
2017-05-10 09:39:55 +02:00
Jeremy Kersten 8544b5ce82 [FIX] payment_paypal: unquote the paypal response
In some case (undefined), paypal return encoded params.
https://cloud.githubusercontent.com/assets/7766939/24752163/43d31634-1aff-11e7-91ab-1c7a5a3b3ef0.png

Since this fix don't break the case where there are no the +, if it could fix for others cases...

This commit closes #14727, opw-727899
2017-04-20 11:20:30 +02:00
Jeremy Kersten bd17dfe019 [FIX] payment_paypal: pdt parsing - accept error as response
In case of error, paypal return some lines where error message and not a
string with 'key=value'.

This commit fix traceback:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
2017-04-05 17:21:07 +02:00
Christophe Simonis 6b3a80862c [MERGE] forward port branch saas-11 up to 503227838d 2017-03-06 13:23:38 +01:00
Denis Ledoux 8ecec2bfbb [FIX] payment_paypal: prevent the IPN feedback to return an HTTP error code
When you enable the IPN notifications in your Paypal account configuration,
the default IPN URL is mandatory.

You are therefore obliged to put the IPN feedback URL of Odoo
in this default URL, even if this is not used because
each transaction done by Odoo specifies the URL to which the IPN
notifications must be sent.

Because of this, if you use your Paypal account
for something else, e.g. Ebay, you receive
notifications of payments for these other transactions,
that have nothing to do with Odoo.

In such a case, Odoo returned an HTTP error status code (e.g. 500),
because Odoo couldn't find the given transactions, and
then Paypal sent emails to the Paypal owner
to tell the IPN feedback was failing. Eventually, after
several fails, Paypal automatically disabled the IPN
notifications of the given account.

With this revision, we now avoid to raise the Validation errors
in the case of the IPN feedback, and just logs it,
to avoid Paypal to sent emails to
the owner and to automatically disable the IPN notifications
if it receives transactions from other services than Odoo.

opw-702403
2017-03-06 10:37:49 +01:00
Christophe Simonis 81f59cee2c [MERGE] forward port branch saas-11 up to b844d93889 2017-01-02 14:38:59 +01:00
Christophe Simonis 3805eb620a [MERGE] forward port branch saas-6 up to 7be1a1c55b 2017-01-02 11:42:52 +01:00
Damien Bouvy de45880eb3 [FIX] payment_paypal: html-decode PDT responses
Courtesy of DynApps
2016-12-19 18:15:49 +01:00
Damien Bouvy 737cca3ec7 Revert "[FIX] payment_paypal: html-decode PDT responses"
This reverts commit 8b64bf7682.

This should have been fixed in 8.0, a moment of distraction made me
push it in 10.0.

This is not the branch you are looking for, carry on.
2016-12-19 18:11:46 +01:00
Damien Bouvy 8b64bf7682 [FIX] payment_paypal: html-decode PDT responses
Courtesy of DynApps
2016-12-19 17:34:06 +01:00
Martin Trigaux d29c40e1e1 [FIX] payment_paypal: avoid crash in validation without reference
When `paypal_validate_data` is called without any reference, `tx` is None.
Before the migration, it was catched by a `tx and tx.acquired_id` but it is no
longer the case.

Introduced at f1ac1b12

Fixes #13834
2016-12-09 10:47:51 +01:00
Christophe Simonis ea675d8b76 [MERGE] forward port branch saas-12 up to ff7f3d6 2016-11-18 18:03:47 +01:00
Christophe Simonis 95abb2224d [MERGE] forward port branch saas-6 up to f163f76 2016-11-18 16:34:52 +01:00
Damien Bouvy 205b5542ca [FIX] payment_paypal: accept PDT requests on /dpn route
It seems Paypal does not always send the same responses on auto-return
even when PDT is off. Although not reproducible on a Paypal sandbox,
sometimes the system auto-return to /payment/paypal/dpn without any
meaningful POST data. This seems to only happen with new accounts
that use the 'Hermes' web application of Paypal.

The correct thing to do would be to add a new field on the paypal
payment provider for PDT token and make the PDT flow available
to users; but this is a stable branch and this fix is already
sufficiently delicate. This shall be done in master though.

From this revision on, users can then activate PDT on their paypal
account, set the PDT token as an ir.config_parameter value (WITH
GROUP RESTRICTION SET TO ADMIN/SETTINGS GROUP!!!) and the system
will process these requests correctly.
2016-11-18 09:46:37 +01:00
Christophe Simonis 25f271c099 [MERGE] forward port branch saas-12 up to 13765b5 2016-09-14 12:39:12 +02:00
Christophe Simonis 5be40868b1 [MERGE] forward port branch saas-6 up to a5dfe2f 2016-09-14 11:53:46 +02:00
Damien Bouvy 3e4206b4d4 [FIX] payment_paypal: accept GET requests for Paypal DPN
Although we have been reluctant to perform this change, a specific
use case can cause customers to be redirect to the Odoo DPN url
with a GET request.

This happens when a Paypal Merchant account has the feature Guest
Checkout active; in that case, a customer can pay without having
a Paypal account (using only his credit card) and will *not* be
subjected to auto-return; as detailed here:
https://www.sandbox.paypal.com/be/cgi-bin/webscr?cmd=p/pop/help-account-optional
Request coming from that payment flow will always trigger a GET
request, causing the customer to be welcomed by a
405 - Method Not allowed
error on the Odoo server. The payment is normally correctly processed
through IPN, so this does not normally causes loss of data; however
this is not a nice way to welcome back your customer right after
they pay you.
2016-09-12 09:24:38 +02:00
Shivam Dudhat f1ac1b1271 [MIG] payment_paypal: new API
No functional change.
2016-07-06 15:10:47 +02:00
Goffin Simon 32c8280a02 [FIX] payment_adyen, payment_authorize, payment_buckaroo, payment_paypal, payment_sips: Disable csrf on callbacks
Inspired from 2099f15d67

opw:653341
2015-11-24 11:35:57 +01:00
Oriol Carreras 2099f15d67 [FIX] payment_paypal: Disable csrf on paypal callbacks
When the http csrf is default enabled, callbacks raises a http error 400:
Invalid CSRF Token.

Fixes #9065
Closes #9073
2015-10-22 08:41:51 +02:00
Leonardo Rochael Almeida 60af7cac02 [IMP] replace simplejson with stdlib json
The stdlib version of the json library is more recent than the 3.5.3
version we are pinning in `requirements.txt`

There is no reason to use it.

Closes #6940
2015-09-28 10:53:32 +02:00
Denis Ledoux 786077d675 [FIX] payment_paypal: env field has been renamed with environment in 8.0
as env is a built-in orm variable.
2014-11-03 14:07:38 +01:00
Denis Ledoux 00ea919699 [FIX] payment_paypal: avoid json decode error
with post.pop('custom', '{}'), if the key 'custom' is not there, it will return '{}', but if the key is there, but the value is equivalent to False, the json decode will fail.
2014-09-03 15:19:26 +02:00
Denis Ledoux b0b9153cf7 [FIX] payment_paypal: SUPERUSER_ID removed by inadvertence in 1826f6d4ec 2014-08-07 11:54:30 +02:00
Denis Ledoux 1826f6d4ec [FIX] payment_paypal: use the validate url according to the acquirer env 2014-08-07 11:41:18 +02:00
Fabien Meghazi e974e1fbea [REM] remove disable_db and ensure_db() from addons
bzr revid: fme@openerp.com-20140130092308-s24a7h2mhzuaasf1
2014-01-30 10:23:08 +01:00
Fabien Meghazi c4e48e2388 [REM] Removed auth='admin' from modules
bzr revid: fme@openerp.com-20140129171520-wkz8ot4pa63utoi3
2014-01-29 18:15:20 +01:00
Denis Ledoux 0306adbfe3 [FIX] *: using werkzeug.url_encode instead of urllib.urlencode because urliblib.encode does not accept unicode
bzr revid: dle@openerp.com-20140129121316-b5f5e4r6fz9l80kq
2014-01-29 13:13:16 +01:00
Thibault Delavallée a7908b63bd [FIX] payment_*: fixed return controlers, now using werkzeug redirection
bzr revid: tde@openerp.com-20140124145923-fsyv2tm5z92m1je1
2014-01-24 15:59:23 +01:00
Thibault Delavallée b692aa1c78 [IMP] payment_paypal: route as admin (still got a db), remove website=True because
not usefull for acquirer communication route.

bzr revid: tde@openerp.com-20140123154833-0bd95v7w303tzyuq
2014-01-23 16:48:33 +01:00
Thibault Delavallée 0b69bad996 [RENAME] payment_acquirer_* -> payment_ *
bzr revid: tde@openerp.com-20140122175702-1h1e51z4njt4s70w
2014-01-22 18:57:02 +01:00