Paypal Acquirer resulting in 500 internal server error

Nathan Hewett


I am trying to configure the Paypal ECommerce acquirer on my Odoo v11 CE instance. I have followed the instructions that are integrated right into the acquirer itself ( and have had no luck. I've also done countless google searching but can't seem to find anything that was documented or tried on v11.

The problem I'm currently having is that the Paypal acquirer is resulting in a 500 internal server error when the shopper has completed paying for the transaction and they're being redirected back to my site for the confirmation page. The transaction stays "pending" and eventually ends up as an "abandoned shopping cart." The crazy part is, that paypal has already acquired the funds, Odoo just hasn't been notified of this. 

Details of my network/vm setup:

  • I am currently running Odoo 11 community edition - hosted on an Ubuntu instance.

  • All of the requests coming in to my network go to my web host vm, which then requests that are associated with my Odoo domain name are passed to my Odoo instance through proxy_pass

  • The Odoo instance also has apache installed on it so that it receives requests through port 80 and 443 versus 8069 with the upstream server being set to

Details on my paypal acquirer setup:

  • In the acquirer itself, I have:

    • my paypal e-mail address that is associated with my company

    • the paypal merchant ID taken from the business settings inside of my paypal account

    • the paypal pdt token that I received after turning IPN on

    • and I have the "use IPN" box checked.

  • Per the instructions, I have also created a system parameter containing my pdt token, labeled with payment_paypal.pdt_token

    • Even though I'm pretty sure these instructions were created before the paypal acquirer asked for your pdt token anyways?? not really sure because the screen shots of the acquirer setup don't include a blank for the pdt token but my odoo does have a blank for that...

  • My IPN is set to ""

  • My return url is set to ""

  • I've changed the paypal button encoding to UTF-8

What am I missing?! When the 500 internal server error occurs, it appears that paypal was trying to redirect me to a link similar to this:{"return_url"%3A "%2Fshop%2Fpayment%2Fvalidate"}&item_name=the product name%3A SO011&item_number=SO011&st=Completed&tx=2VJ801667W5950531

One last thing worth noting is that I have been trying all of this in test mode, using all of my sandbox credentials, attained from the sandbox facilitator log-in. 

4 コメント

Hello, can you provide more info on the traceback ?

You will find it in the log or addind ?debug=1 into the url


Nathan Hewett

Where would this particular log be located? Adding "?debug=1" to the end of the URL didn't work, and it appears like paypal sandbox is offline for the moment so I can't try it again.

Nathan Hewett

I was actually able to find the log. Here is what I think you're looking for, otherwise let me know if you need more from the log:

2018-09-20 18:00:26,769 11380 INFO MYDOMAIN odoo.addons.payment_paypal.controllers.main: Paypal: validated data

2018-09-20 18:00:26,771 11380 INFO MYDOMAIN odoo.addons.payment_paypal.models.payment: Received a notification from Paypal with IPN version 3.9

2018-09-20 18:00:26,771 11380 WARNING MYDOMAIN odoo.addons.payment_paypal.models.payment: Received a notification from Paypal using sandbox

2018-09-20 18:00:26,782 11380 INFO MYDOMAIN odoo.addons.payment_paypal.models.payment: Validated Paypal payment for tx SO011: set as done

2018-09-20 18:00:26,792 11380 INFO MYDOMAIN odoo.addons.sale_payment.models.payment: <paypal> transaction processed: tx ref:SO011, tx amount: 8.99

2018-09-20 18:00:26,793 11380 INFO MYDOMAIN odoo.addons.sale_payment.models.payment: <paypal> transaction completed, auto-confirming order SO011 (ID 11)

2018-09-20 18:00:26,971 11380 INFO MYDOMAIN werkzeug: - - [20/Sep/2018 18:00:26] "POST /payment/paypal/ipn/ HTTP/1.0" 500 -

2018-09-20 18:00:26,980 11380 ERROR MYDOMAIN werkzeug: Error on request:

Traceback (most recent call last):

File "/usr/local/lib/python3.6/dist-packages/werkzeug/", line 270, in run_wsgi


File "/usr/local/lib/python3.6/dist-packages/werkzeug/", line 258, in execute

application_iter = app(environ, start_response)

File "/odoo/odoo-server/odoo/service/", line 250, in app

return, s)

File "/odoo/odoo-server/odoo/service/", line 166, in application

return application_unproxied(environ, start_response)

File "/odoo/odoo-server/odoo/service/", line 154, in application_unproxied

result = handler(environ, start_response)

File "/odoo/odoo-server/odoo/", line 1318, in __call__

return self.dispatch(environ, start_response)

File "/odoo/odoo-server/odoo/", line 1292, in __call__

return, start_wrapped)

File "/usr/local/lib/python3.6/dist-packages/werkzeug/", line 766, in __call__

return, start_response)

File "/odoo/odoo-server/odoo/", line 1490, in dispatch

result = ir_http._dispatch()

File "/odoo/odoo-server/addons/website_sale/models/", line 15, in _dispatch

return super(IrHttp, cls)._dispatch()

File "/odoo/odoo-server/addons/auth_signup/models/", line 19, in _dispatch

return super(Http, cls)._dispatch()

File "/odoo/odoo-server/addons/web_editor/models/", line 22, in _dispatch

return super(IrHttp, cls)._dispatch()

File "/odoo/odoo-server/addons/http_routing/models/", line 393, in _dispatch

result = super(IrHttp, cls)._dispatch()

File "/odoo/odoo-server/addons/utm/models/", line 26, in _dispatch

response = super(IrHttp, cls)._dispatch()

File "/odoo/odoo-server/odoo/addons/base/ir/", line 212, in _dispatch

return cls._handle_exception(e)

File "/odoo/odoo-server/addons/website/models/", line 169, in _handle_exception

return super(Http, cls)._handle_exception(exception)

File "/odoo/odoo-server/addons/utm/models/", line 31, in _handle_exception

response = super(IrHttp, cls)._handle_exception(exc)

File "/odoo/odoo-server/odoo/addons/base/ir/", line 182, in _handle_exception

return request._handle_exception(exception)

File "/odoo/odoo-server/odoo/", line 770, in _handle_exception

return super(HttpRequest, self)._handle_exception(exception)

File "/odoo/odoo-server/odoo/", line 310, in _handle_exception

raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])

File "/odoo/odoo-server/odoo/tools/", line 87, in reraise

raise value

File "/odoo/odoo-server/odoo/addons/base/ir/", line 208, in _dispatch

result = request.dispatch()

File "/odoo/odoo-server/odoo/", line 829, in dispatch

r = self._call_function(**self.params)

File "/odoo/odoo-server/odoo/", line 342, in _call_function

return checked_call(self.db, *args, **kwargs)

File "/odoo/odoo-server/odoo/service/", line 97, in wrapper

return f(dbname, *args, **kwargs)

File "/odoo/odoo-server/odoo/", line 335, in checked_call

result = self.endpoint(*a, **kw)

File "/odoo/odoo-server/odoo/", line 936, in __call__

return self.method(*args, **kw)

File "/odoo/odoo-server/odoo/", line 515, in response_wrap

response = f(*args, **kw)

File "/odoo/odoo-server/addons/payment_paypal/controllers/", line 98, in paypal_ipn


File "/odoo/odoo-server/addons/payment_paypal/controllers/", line 86, in paypal_validate_data

res = request.env['payment.transaction'].sudo().form_feedback(post, 'paypal')

File "/odoo/odoo-server/addons/account_payment/models/", line 20, in form_feedback

res = super(PaymentTransaction, self).form_feedback(data, acquirer_name)

File "/odoo/odoo-server/addons/sale_payment/models/", line 34, in form_feedback


File "/odoo/odoo-server/addons/website_sale/models/", line 20, in _confirm_so

result = super(PaymentTransaction, self)._confirm_so()

File "/odoo/odoo-server/addons/sale_payment/models/", line 71, in _confirm_so


File "/odoo/odoo-server/addons/sale/models/", line 554, in action_confirm


File "/odoo/odoo-server/addons/sale_stock/models/", line 38, in _action_confirm

super(SaleOrder, self)._action_confirm()

File "/odoo/odoo-server/addons/sale/models/", line 539, in _action_confirm


File "/odoo/odoo-server/addons/sale/models/", line 519, in force_quotation_send


File "/odoo/odoo-server/addons/mail/models/", line 1985, in message_post_with_template

update_values = composer.onchange_template_id(template_id, kwargs['composition_mode'], self._name, res_id)['value']

File "/odoo/odoo-server/addons/mail/wizard/", line 365, in onchange_template_id

values = self.generate_email_for_composer(template_id, [res_id])[res_id]

File "/odoo/odoo-server/addons/mail/wizard/", line 500, in generate_email_for_composer

template_values = self.env['mail.template'].with_context(tpl_partners_only=True).browse(template_id).generate_email(res_ids, fields=fields)

File "/odoo/odoo-server/addons/mail/models/", line 511, in generate_email

result, format = report.render_qweb_pdf([res_id])

File "/odoo/odoo-server/odoo/addons/base/ir/", line 626, in render_qweb_pdf

raise UserError(_("Unable to find Wkhtmltopdf on this system. The PDF can not be created."))

odoo.exceptions.UserError: ('Unable to find Wkhtmltopdf on this system. The PDF can not be created.', '')

Nathan Hewett

I discovered the problem after looking at these logs (thank you, Jeremy!). I had installed Odoo v11CE on Ubuntu 18.04 which I thought had been compatible. Turns out, there wasn't a suitable Wkhtmltopfd installed. I re-installed Odoo on Ubuntu 16.04 and everything works as it should.

2 回答
Nathan Hewett
Best Answer

Where would this particular log be located? Adding "?debug=1" to the end of the URL didn't work, and it appears like paypal sandbox is offline for the moment so I can't try it again.