summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorDamien Bouvy <dbo@odoo.com>2015-09-04 15:57:07 +0200
committerDamien Bouvy <dbo@odoo.com>2015-09-04 16:08:22 +0200
commit526f27ddac8b6d69f3dbbd91e7a83ab9c76c0a5a (patch)
tree3eccb217ff97c6fbca90e9f4f446c2fd3de888b9 /addons
parentf76c78d598307e337db19cc89688c57b84480cda (diff)
[IMP] payment,payment_*,website_quote,website_sale: new rendering mechanism compatibility for payment providers
merge *ALL* the dicts The form rendering used to receive a dict for partner information and a dict for tx information and to transmit another dict to the qweb template; now everything is done in a single dict
Diffstat (limited to 'addons')
-rw-r--r--addons/payment/models/payment_acquirer.py242
-rw-r--r--addons/payment/tests/common.py20
-rw-r--r--addons/payment_adyen/models/adyen.py20
-rw-r--r--addons/payment_adyen/views/adyen.xml26
-rw-r--r--addons/payment_authorize/models/authorize.py28
-rw-r--r--addons/payment_authorize/tests/test_authorize.py2
-rw-r--r--addons/payment_authorize/views/authorize.xml48
-rw-r--r--addons/payment_buckaroo/models/buckaroo.py19
-rw-r--r--addons/payment_buckaroo/views/buckaroo.xml32
-rw-r--r--addons/payment_ogone/models/ogone.py35
-rw-r--r--addons/payment_ogone/views/ogone.xml42
-rw-r--r--addons/payment_paypal/models/paypal.py57
-rw-r--r--addons/payment_paypal/tests/__init__.py1
-rw-r--r--addons/payment_paypal/tests/test_paypal.py55
-rw-r--r--addons/payment_paypal/views/paypal.xml44
-rw-r--r--addons/payment_sips/models/sips.py14
-rw-r--r--addons/payment_sips/views/sips.xml6
-rw-r--r--addons/payment_transfer/views/transfer.xml6
-rw-r--r--addons/website_quote/controllers/main.py6
-rw-r--r--addons/website_sale/controllers/main.py4
20 files changed, 314 insertions, 393 deletions
diff --git a/addons/payment/models/payment_acquirer.py b/addons/payment/models/payment_acquirer.py
index 0fe6bf53d17..a9a44df475f 100644
--- a/addons/payment/models/payment_acquirer.py
+++ b/addons/payment/models/payment_acquirer.py
@@ -145,93 +145,16 @@ class PaymentAcquirer(osv.Model):
return getattr(self, '%s_get_form_action_url' % acquirer.provider)(cr, uid, id, context=context)
return False
- def form_preprocess_values(self, cr, uid, id, reference, amount, currency_id, tx_id, partner_id, partner_values, tx_values, context=None):
- """ Pre process values before giving them to the acquirer-specific render
- methods. Those methods will receive:
-
- - partner_values: will contain name, lang, email, zip, address, city,
- country_id (int or False), country (browse or False), phone, reference
- - tx_values: will contain reference, amount, currency_id (int or False),
- currency (browse or False), partner (browse or False)
- """
- acquirer = self.browse(cr, uid, id, context=context)
-
- if tx_id:
- tx = self.pool.get('payment.transaction').browse(cr, uid, tx_id, context=context)
- tx_data = {
- 'reference': tx.reference,
- 'amount': tx.amount,
- 'currency_id': tx.currency_id.id,
- 'currency': tx.currency_id,
- 'partner': tx.partner_id,
- }
- partner_data = {
- 'name': tx.partner_name,
- 'lang': tx.partner_lang,
- 'email': tx.partner_email,
- 'zip': tx.partner_zip,
- 'address': tx.partner_address,
- 'city': tx.partner_city,
- 'country_id': tx.partner_country_id.id,
- 'country': tx.partner_country_id,
- 'phone': tx.partner_phone,
- 'state': None,
- }
- else:
- if partner_id:
- partner = self.pool['res.partner'].browse(cr, uid, partner_id, context=context)
- partner_data = {
- 'name': partner.name,
- 'lang': partner.lang,
- 'email': partner.email,
- 'zip': partner.zip,
- 'city': partner.city,
- 'address': _partner_format_address(partner.street, partner.street2),
- 'country_id': partner.country_id.id,
- 'country': partner.country_id,
- 'phone': partner.phone,
- 'state': partner.state_id,
- }
- else:
- partner, partner_data = False, {}
- partner_data.update(partner_values)
-
- if currency_id:
- currency = self.pool['res.currency'].browse(cr, uid, currency_id, context=context)
- else:
- currency = self.pool['res.users'].browse(cr, uid, uid, context=context).company_id.currency_id
- tx_data = {
- 'reference': reference,
- 'amount': amount,
- 'currency_id': currency.id,
- 'currency': currency,
- 'partner': partner,
- }
-
- # update tx values
- tx_data.update(tx_values)
-
- # update partner values
- if not partner_data.get('address'):
- partner_data['address'] = _partner_format_address(partner_data.get('street', ''), partner_data.get('street2', ''))
- if not partner_data.get('country') and partner_data.get('country_id'):
- partner_data['country'] = self.pool['res.country'].browse(cr, uid, partner_data.get('country_id'), context=context)
- partner_data.update({
- 'first_name': _partner_split_name(partner_data['name'])[0],
- 'last_name': _partner_split_name(partner_data['name'])[1],
- })
-
- # compute fees
- fees_method_name = '%s_compute_fees' % acquirer.provider
- if hasattr(self, fees_method_name):
- fees = getattr(self, fees_method_name)(
- cr, uid, id, tx_data['amount'], tx_data['currency_id'], partner_data['country_id'], context=None)
- tx_data['fees'] = float_round(fees, 2)
-
- return (partner_data, tx_data)
-
- def render(self, cr, uid, id, reference, amount, currency_id, tx_id=None, partner_id=False, partner_values=None, tx_values=None, context=None):
+ def render(self, cr, uid, id, reference, amount, currency_id, partner_id=False, values=None, context=None):
""" Renders the form template of the given acquirer as a qWeb template.
+ :param string reference: the transaction reference
+ :param float amount: the amount the buyer has to pay
+ :param currency_id: currency id
+ :param dict partner_id: optional partner_id to fill values
+ :param dict values: a dictionary of values for the transction that is
+ given to the acquirer-specific method generating the form values
+ :param dict context: OpenERP context
+
All templates will receive:
- acquirer: the payment.acquirer browse record
@@ -239,71 +162,90 @@ class PaymentAcquirer(osv.Model):
- currency_id: id of the transaction currency
- amount: amount of the transaction
- reference: reference of the transaction
- - partner: the current partner browse record, if any (not necessarily set)
- - partner_values: a dictionary of partner-related values
- - tx_values: a dictionary of transaction related values that depends on
- the acquirer. Some specific keys should be managed in each
- provider, depending on the features it offers:
-
- - 'feedback_url': feedback URL, controler that manage answer of the acquirer
- (without base url) -> FIXME
- - 'return_url': URL for coming back after payment validation (wihout
- base url) -> FIXME
- - 'cancel_url': URL if the client cancels the payment -> FIXME
- - 'error_url': URL if there is an issue with the payment -> FIXME
-
+ - partner_*: partner-related values
+ - partner: optional partner browse record
+ - 'feedback_url': feedback URL, controler that manage answer of the acquirer (without base url) -> FIXME
+ - 'return_url': URL for coming back after payment validation (wihout base url) -> FIXME
+ - 'cancel_url': URL if the client cancels the payment -> FIXME
+ - 'error_url': URL if there is an issue with the payment -> FIXME
- context: OpenERP context dictionary
- :param string reference: the transaction reference
- :param float amount: the amount the buyer has to pay
- :param res.currency browse record currency: currency
- :param int tx_id: id of a transaction; if set, bypasses all other given
- values and only render the already-stored transaction
- :param res.partner browse record partner_id: the buyer
- :param dict partner_values: a dictionary of values for the buyer (see above)
- :param dict tx_custom_values: a dictionary of values for the transction
- that is given to the acquirer-specific method
- generating the form values
- :param dict context: OpenERP context
"""
if context is None:
context = {}
- if tx_values is None:
- tx_values = {}
- if partner_values is None:
- partner_values = {}
+ if values is None:
+ values = {}
acquirer = self.browse(cr, uid, id, context=context)
- # pre-process values
+ # reference and amount
+ values.setdefault('reference', reference)
amount = float_round(amount, 2)
- partner_values, tx_values = self.form_preprocess_values(
- cr, uid, id, reference, amount, currency_id, tx_id, partner_id,
- partner_values, tx_values, context=context)
+ values.setdefault('amount', amount)
+
+ # currency id
+ currency_id = values.setdefault('currency_id', currency_id)
+ if currency_id:
+ currency = self.pool['res.currency'].browse(cr, uid, currency_id, context=context)
+ else:
+ currency = self.pool['res.users'].browse(cr, uid, uid, context=context).company_id.currency_id
+ values['currency'] = currency
+
+ # Fill partner_* using values['partner_id'] or partner_id arguement
+ partner_id = values.get('partner_id', partner_id)
+ if partner_id:
+ partner = self.pool['res.partner'].browse(cr, uid, partner_id, context=context)
+ values.update({
+ 'partner': partner,
+ 'partner_id': partner_id,
+ 'partner_name': partner.name,
+ 'partner_lang': partner.lang,
+ 'partner_email': partner.email,
+ 'partner_zip': partner.zip,
+ 'partner_city': partner.city,
+ 'partner_address': _partner_format_address(partner.street, partner.street2),
+ 'partner_country_id': partner.country_id.id,
+ 'partner_country': partner.country_id,
+ 'partner_phone': partner.phone,
+ 'partner_state': partner.state_id,
+ })
+ if values.get('partner_name'):
+ values.update({
+ 'partner_first_name': _partner_split_name(values.get('partner_name'))[0],
+ 'partner_last_name': _partner_split_name(values.get('partner_name'))[1],
+ })
+
+ # Fix address, country fields
+ if not values.get('partner_address'):
+ values['address'] = _partner_format_address(values.get('partner_street', ''), values.get('partner_street2', ''))
+ if not values.get('partner_country') and values.get('partner_country_id'):
+ values['country'] = self.pool['res.country'].browse(cr, uid, values.get('partner_country_id'), context=context)
+
+
+ # compute fees
+ fees_method_name = '%s_compute_fees' % acquirer.provider
+ if hasattr(self, fees_method_name):
+ fees = getattr(self, fees_method_name)(cr, uid, id, values['amount'], values['currency_id'], values['partner_country_id'], context=None)
+ values['fees'] = float_round(fees, 2)
# call <name>_form_generate_values to update the tx dict with acqurier specific values
cust_method_name = '%s_form_generate_values' % (acquirer.provider)
if hasattr(self, cust_method_name):
method = getattr(self, cust_method_name)
- partner_values, tx_values = method(cr, uid, id, partner_values, tx_values, context=context)
+ values = method(cr, uid, id, values, context=context)
- qweb_context = {
+ values.update({
'tx_url': context.get('tx_url', self.get_form_action_url(cr, uid, id, context=context)),
'submit_class': context.get('submit_class', 'btn btn-link'),
'submit_txt': context.get('submit_txt'),
'acquirer': acquirer,
'user': self.pool.get("res.users").browse(cr, uid, uid, context=context),
- 'reference': tx_values['reference'],
- 'amount': tx_values['amount'],
- 'currency': tx_values['currency'],
- 'partner': tx_values.get('partner'),
- 'partner_values': partner_values,
- 'tx_values': tx_values,
'context': context,
- 'type': tx_values.get('type') or 'form',
- }
+ 'type': values.get('type') or 'form',
+ })
+ values.setdefault('return_url', False)
# because render accepts view ids but not qweb -> need to use the xml_id
- return self.pool['ir.ui.view'].render(cr, uid, acquirer.view_template_id.xml_id, qweb_context, engine='ir.qweb', context=context)
+ return self.pool['ir.ui.view'].render(cr, uid, acquirer.view_template_id.xml_id, values, engine='ir.qweb', context=context)
def _registration_render(self, cr, uid, id, partner_id, qweb_context=None, context=None):
acquirer = self.browse(cr, uid, id, context=context)
@@ -465,21 +407,43 @@ class PaymentTransaction(osv.Model):
partner = None
if partner_id:
partner = self.pool['res.partner'].browse(cr, uid, partner_id, context=context)
- return {'value': {
- 'partner_name': partner and partner.name or False,
- 'partner_lang': partner and partner.lang or 'en_US',
- 'partner_email': partner and partner.email or False,
- 'partner_zip': partner and partner.zip or False,
- 'partner_address': _partner_format_address(partner and partner.street or '', partner and partner.street2 or ''),
- 'partner_city': partner and partner.city or False,
- 'partner_country_id': partner and partner.country_id.id or False,
- 'partner_phone': partner and partner.phone or False,
- }}
+ return {'value': {
+ 'partner_name': partner and partner.name or False,
+ 'partner_lang': partner and partner.lang or 'en_US',
+ 'partner_email': partner and partner.email or False,
+ 'partner_zip': partner and partner.zip or False,
+ 'partner_address': _partner_format_address(partner and partner.street or '', partner and partner.street2 or ''),
+ 'partner_city': partner and partner.city or False,
+ 'partner_country_id': partner and partner.country_id.id or False,
+ 'partner_phone': partner and partner.phone or False,
+ }}
+ return {}
# --------------------------------------------------
# FORM RELATED METHODS
# --------------------------------------------------
+ def render(self, cr, uid, id, context=None):
+ tx = self.browse(cr, uid, id, context=context)
+ values = {
+ 'reference': tx.reference,
+ 'amount': tx.amount,
+ 'currency_id': tx.currency_id.id,
+ 'currency': tx.currency_id,
+ 'partner': tx.partner_id,
+ 'partner_name': tx.partner_name,
+ 'partner_lang': tx.partner_lang,
+ 'partner_email': tx.partner_email,
+ 'partner_zip': tx.partner_zip,
+ 'partner_address': tx.partner_address,
+ 'partner_city': tx.partner_city,
+ 'partner_country_id': tx.partner_country_id.id,
+ 'partner_country': tx.partner_country_id,
+ 'partner_phone': tx.partner_phone,
+ 'partner_state': None,
+ }
+ return tx.acquirer_id.render(None, None, None, values=values)
+
def form_feedback(self, cr, uid, data, acquirer_name, context=None):
invalid_parameters, tx = None, None
diff --git a/addons/payment/tests/common.py b/addons/payment/tests/common.py
index 93a1820a447..ff1800496e9 100644
--- a/addons/payment/tests/common.py
+++ b/addons/payment/tests/common.py
@@ -21,16 +21,16 @@ class PaymentAcquirerCommon(common.TransactionCase):
# dict partner values
self.buyer_values = {
- 'name': 'Norbert Buyer',
- 'lang': 'en_US',
- 'email': 'norbert.buyer@example.com',
- 'street': 'Huge Street',
- 'street2': '2/543',
- 'phone': '0032 12 34 56 78',
- 'city': 'Sin City',
- 'zip': '1000',
- 'country_id': self.country_belgium_id,
- 'country_name': 'Belgium',
+ 'partner_name': 'Norbert Buyer',
+ 'partner_lang': 'en_US',
+ 'partner_email': 'norbert.buyer@example.com',
+ 'partner_address': 'Huge Street 2/543',
+ 'partner_phone': '0032 12 34 56 78',
+ 'partner_city': 'Sin City',
+ 'partner_zip': '1000',
+ 'partner_country': self.env['res.country'].browse(self.country_belgium_id),
+ 'partner_country_id': self.country_belgium_id,
+ 'partner_country_name': 'Belgium',
}
# test partner
diff --git a/addons/payment_adyen/models/adyen.py b/addons/payment_adyen/models/adyen.py
index 4facd11be17..7c89a53e390 100644
--- a/addons/payment_adyen/models/adyen.py
+++ b/addons/payment_adyen/models/adyen.py
@@ -71,7 +71,7 @@ class AcquirerAdyen(osv.Model):
key = acquirer.adyen_skin_hmac_key.encode('ascii')
return base64.b64encode(hmac.new(key, sign, sha1).digest())
- def adyen_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
+ def adyen_form_generate_values(self, cr, uid, id, values, context=None):
base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url')
acquirer = self.browse(cr, uid, id, context=context)
# tmp
@@ -79,22 +79,20 @@ class AcquirerAdyen(osv.Model):
from dateutil import relativedelta
tmp_date = datetime.date.today() + relativedelta.relativedelta(days=1)
- adyen_tx_values = dict(tx_values)
- adyen_tx_values.update({
- 'merchantReference': tx_values['reference'],
- 'paymentAmount': '%d' % int(float_round(tx_values['amount'], 2) * 100),
- 'currencyCode': tx_values['currency'] and tx_values['currency'].name or '',
+ values.update({
+ 'merchantReference': values['reference'],
+ 'paymentAmount': '%d' % int(float_round(values['amount'], 2) * 100),
+ 'currencyCode': values['currency'] and values['currency'].name or '',
'shipBeforeDate': tmp_date,
'skinCode': acquirer.adyen_skin_code,
'merchantAccount': acquirer.adyen_merchant_account,
- 'shopperLocale': partner_values['lang'],
+ 'shopperLocale': values.get('partner_lang'),
'sessionValidity': tmp_date,
'resURL': '%s' % urlparse.urljoin(base_url, AdyenController._return_url),
+ 'merchantReturnData': json.dumps({'return_url': '%s' % values.pop('return_url')}) if values.get('return_url') else False,
+ 'merchantSig': self._adyen_generate_merchant_sig(acquirer, 'in', values),
})
- if adyen_tx_values.get('return_url'):
- adyen_tx_values['merchantReturnData'] = json.dumps({'return_url': '%s' % adyen_tx_values.pop('return_url')})
- adyen_tx_values['merchantSig'] = self._adyen_generate_merchant_sig(acquirer, 'in', adyen_tx_values)
- return partner_values, adyen_tx_values
+ return values
def adyen_get_form_action_url(self, cr, uid, id, context=None):
acquirer = self.browse(cr, uid, id, context=context)
diff --git a/addons/payment_adyen/views/adyen.xml b/addons/payment_adyen/views/adyen.xml
index 79281f43a99..76856158030 100644
--- a/addons/payment_adyen/views/adyen.xml
+++ b/addons/payment_adyen/views/adyen.xml
@@ -4,21 +4,21 @@
<template id="adyen_acquirer_button">
<form t-if="acquirer.adyen_merchant_account" t-att-action="tx_url" method="post" target="_self">
- <input type="hidden" name="merchantReference" t-att-value="tx_values['merchantReference']"/>
- <input type="hidden" name="paymentAmount" t-att-value="tx_values['paymentAmount'] or '0.0'"/>
- <input type="hidden" name="currencyCode" t-att-value="tx_values['currencyCode']"/>
- <input type="hidden" name="shipBeforeDate" t-att-value="tx_values['shipBeforeDate']"/>
- <input type="hidden" name="skinCode" t-att-value="tx_values['skinCode']"/>
- <input type="hidden" name="merchantAccount" t-att-value="tx_values['merchantAccount']"/>
- <input type="hidden" name="shopperLocale" t-att-value="tx_values['shopperLocale']"/>
- <input type="hidden" name="sessionValidity" t-att-value="tx_values['sessionValidity']"/>
- <input type="hidden" name="merchantSig" t-att-value="tx_values['merchantSig']"/>
+ <input type="hidden" name="merchantReference" t-att-value="merchantReference"/>
+ <input type="hidden" name="paymentAmount" t-att-value="paymentAmount"/>
+ <input type="hidden" name="currencyCode" t-att-value="currencyCode"/>
+ <input type="hidden" name="shipBeforeDate" t-att-value="shipBeforeDate"/>
+ <input type="hidden" name="skinCode" t-att-value="skinCode"/>
+ <input type="hidden" name="merchantAccount" t-att-value="merchantAccount"/>
+ <input type="hidden" name="shopperLocale" t-att-value="shopperLocale"/>
+ <input type="hidden" name="sessionValidity" t-att-value="sessionValidity"/>
+ <input type="hidden" name="merchantSig" t-att-value="merchantSig"/>
<!-- URLs -->
- <input t-if="tx_values.get('resURL')" type='hidden' name='resURL'
- t-att-value="tx_values.get('resURL')"/>
+ <input type='hidden' name='resURL'
+ t-att-value="resURL"/>
<!-- custom -->
- <input t-if="tx_values.get('merchantReturnData')" type='hidden' name='merchantReturnData'
- t-att-value="tx_values.get('merchantReturnData')"/>
+ <input t-if="merchantReturnData" type='hidden' name='merchantReturnData'
+ t-att-value="merchantReturnData"/>
<!-- submit -->
<button type="submit" width="100px"
t-att-class="submit_class">
diff --git a/addons/payment_authorize/models/authorize.py b/addons/payment_authorize/models/authorize.py
index ec39bac344d..af5226a3237 100644
--- a/addons/payment_authorize/models/authorize.py
+++ b/addons/payment_authorize/models/authorize.py
@@ -43,14 +43,14 @@ class PaymentAcquirerAuthorize(models.Model):
return hmac.new(str(values['x_trans_key']), data, hashlib.md5).hexdigest()
@api.multi
- def authorize_form_generate_values(self, partner_values, tx_values):
+ def authorize_form_generate_values(self, values):
self.ensure_one()
base_url = self.env['ir.config_parameter'].get_param('web.base.url')
- authorize_tx_values = dict(tx_values)
+ authorize_tx_values = dict(values)
temp_authorize_tx_values = {
'x_login': self.authorize_login,
'x_trans_key': self.authorize_transaction_key,
- 'x_amount': str(tx_values['amount']),
+ 'x_amount': str(values['amount']),
'x_show_form': 'PAYMENT_FORM',
'x_type': 'AUTH_CAPTURE',
'x_method': 'CC',
@@ -60,21 +60,21 @@ class PaymentAcquirerAuthorize(models.Model):
'x_fp_timestamp': str(int(time.time())),
'x_relay_url': '%s' % urlparse.urljoin(base_url, AuthorizeController._return_url),
'x_cancel_url': '%s' % urlparse.urljoin(base_url, AuthorizeController._cancel_url),
- 'x_currency_code': tx_values['currency'] and tx_values['currency'].name or '',
- 'address': partner_values['address'],
- 'city': partner_values['city'],
- 'country': partner_values['country'] and partner_values['country'].name or '',
- 'email': partner_values['email'],
- 'zip': partner_values['zip'],
- 'first_name': partner_values['first_name'],
- 'last_name': partner_values['last_name'],
- 'phone': partner_values['phone'],
- 'state': partner_values.get('state') and partner_values['state'].name or '',
+ 'x_currency_code': values['currency'] and values['currency'].name or '',
+ 'address': values.get('partner_address'),
+ 'city': values.get('partner_city'),
+ 'country': values.get('partner_country') and values.get('partner_country').name or '',
+ 'email': values.get('partner_email'),
+ 'zip_code': values.get('partner_zip'),
+ 'first_name': values.get('partner_first_name'),
+ 'last_name': values.get('partner_last_name'),
+ 'phone': values.get('partner_phone'),
+ 'state': values.get('partner_state') and values['partner_state'].name or '',
}
temp_authorize_tx_values['returndata'] = authorize_tx_values.pop('return_url', '')
temp_authorize_tx_values['x_fp_hash'] = self._authorize_generate_hashing(temp_authorize_tx_values)
authorize_tx_values.update(temp_authorize_tx_values)
- return partner_values, authorize_tx_values
+ return authorize_tx_values
@api.multi
def authorize_get_form_action_url(self):
diff --git a/addons/payment_authorize/tests/test_authorize.py b/addons/payment_authorize/tests/test_authorize.py
index f038016d579..ed71213fc0c 100644
--- a/addons/payment_authorize/tests/test_authorize.py
+++ b/addons/payment_authorize/tests/test_authorize.py
@@ -78,7 +78,7 @@ class AuthorizeForm(AuthorizeCommon):
cr, uid, context = self.env.cr, self.env.uid, {}
res = self.payment_acquirer.render(
cr, uid, self.authorize_id, 'SO004', 320.0, self.currency_usd.id,
- partner_id=None, partner_values=self.buyer_values, context=context)
+ values=self.buyer_values, context=context)
# check form result
tree = objectify.fromstring(res)
self.assertEqual(tree.get('action'), 'https://test.authorize.net/gateway/transact.dll', 'Authorize: wrong form POST url')
diff --git a/addons/payment_authorize/views/authorize.xml b/addons/payment_authorize/views/authorize.xml
index 543af8fdedf..e21baa58b8d 100644
--- a/addons/payment_authorize/views/authorize.xml
+++ b/addons/payment_authorize/views/authorize.xml
@@ -4,32 +4,32 @@
<template id="authorize_acquirer_button">
<form t-if="acquirer" t-att-action="tx_url" method="post" target="_self">
- <input type='hidden' name='x_login' t-att-value='tx_values["x_login"]'/>
- <input type='hidden' name='x_fp_hash' t-att-value='tx_values["x_fp_hash"]'/>
- <input type='hidden' name='x_amount' t-att-value='tx_values["x_amount"] or "0.0"'/>
- <input type='hidden' name='x_show_form' t-att-value="tx_values['x_show_form']"/>
- <input type='hidden' name='x_type' t-att-value="tx_values['x_type']"/>
- <input type='hidden' name='x_method' t-att-value="tx_values['x_method']"/>
- <input type='hidden' name='x_fp_sequence' t-att-value='tx_values["x_fp_sequence"]'/>
- <input type='hidden' name='x_version' t-att-value="tx_values['x_version']"/>
- <input type="hidden" name="x_relay_response" t-att-value="tx_values['x_relay_response']"/>
- <input type="hidden" name="x_relay_url" t-att-value="tx_values['x_relay_url']"/>
- <input type='hidden' name="x_fp_timestamp" t-att-value="tx_values['x_fp_timestamp']"/>
- <input type="hidden" name='return_url' t-att-value="tx_values['returndata']"/>
- <input type="hidden" name='x_cancel_url' t-att-value="tx_values['x_cancel_url']"/>
+ <input type='hidden' name='x_login' t-att-value='x_login'/>
+ <input type='hidden' name='x_fp_hash' t-att-value='x_fp_hash'/>
+ <input type='hidden' name='x_amount' t-att-value='x_amount'/>
+ <input type='hidden' name='x_show_form' t-att-value="x_show_form"/>
+ <input type='hidden' name='x_type' t-att-value="x_type"/>
+ <input type='hidden' name='x_method' t-att-value="x_method"/>
+ <input type='hidden' name='x_fp_sequence' t-att-value='x_fp_sequence'/>
+ <input type='hidden' name='x_version' t-att-value="x_version"/>
+ <input type="hidden" name="x_relay_response" t-att-value="x_relay_response"/>
+ <input type="hidden" name="x_relay_url" t-att-value="x_relay_url"/>
+ <input type='hidden' name="x_fp_timestamp" t-att-value="x_fp_timestamp"/>
+ <input type="hidden" name='return_url' t-att-value="returndata"/>
+ <input type="hidden" name='x_cancel_url' t-att-value="x_cancel_url"/>
<!--Order Information -->
- <input type='hidden' name='x_invoice_num' t-att-value='tx_values["reference"]'/>
- <input type='hidden' name='x_currency_code' t-att-value='tx_values["x_currency_code"]'/>
+ <input type='hidden' name='x_invoice_num' t-att-value='reference'/>
+ <input type='hidden' name='x_currency_code' t-att-value='x_currency_code'/>
<!-- Billing Information-->
- <input type='hidden' name='x_first_name' t-att-value="tx_values['first_name']"/>
- <input type='hidden' name='x_last_name' t-att-value="tx_values['last_name']"/>
- <input type='hidden' name='x_address' t-att-value="tx_values['address']"/>
- <input type='hidden' name='x_city' t-att-value="tx_values['city']"/>
- <input type='hidden' name='x_zip' t-att-value="tx_values['zip']"/>
- <input type='hidden' name='x_country' t-att-value="tx_values['country']"/>
- <input type='hidden' name='x_phone' t-att-value='tx_values["phone"]'/>
- <input type='hidden' name='x_email' t-att-value="tx_values['email']"/>
- <input type='hidden' name='x_state' t-att-value="tx_values['state']"/>
+ <input type='hidden' name='x_first_name' t-att-value="first_name"/>
+ <input type='hidden' name='x_last_name' t-att-value="last_name"/>
+ <input type='hidden' name='x_address' t-att-value="address"/>
+ <input type='hidden' name='x_city' t-att-value="city"/>
+ <input type='hidden' name='x_zip' t-att-value="zip_code"/>
+ <input type='hidden' name='x_country' t-att-value="country"/>
+ <input type='hidden' name='x_phone' t-att-value='phone'/>
+ <input type='hidden' name='x_email' t-att-value="email"/>
+ <input type='hidden' name='x_state' t-att-value="state"/>
<!-- Submit-->
<button type="submit" width="100px" t-att-class="submit_class">
<img t-if="not submit_txt" src="/payment_authorize/static/src/img/authorize_icon.png"/>
diff --git a/addons/payment_buckaroo/models/buckaroo.py b/addons/payment_buckaroo/models/buckaroo.py
index fbdf5e251c9..054dd749e98 100644
--- a/addons/payment_buckaroo/models/buckaroo.py
+++ b/addons/payment_buckaroo/models/buckaroo.py
@@ -75,28 +75,25 @@ class AcquirerBuckaroo(osv.Model):
return shasign
- def buckaroo_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
+ def buckaroo_form_generate_values(self, cr, uid, id, values, context=None):
base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url')
acquirer = self.browse(cr, uid, id, context=context)
- buckaroo_tx_values = dict(tx_values)
+ buckaroo_tx_values = dict(values)
buckaroo_tx_values.update({
'Brq_websitekey': acquirer.brq_websitekey,
- 'Brq_amount': tx_values['amount'],
- 'Brq_currency': tx_values['currency'] and tx_values['currency'].name or '',
- 'Brq_invoicenumber': tx_values['reference'],
+ 'Brq_amount': values['amount'],
+ 'Brq_currency': values['currency'] and values['currency'].name or '',
+ 'Brq_invoicenumber': values['reference'],
'brq_test': False if acquirer.environment == 'prod' else True,
'Brq_return': '%s' % urlparse.urljoin(base_url, BuckarooController._return_url),
'Brq_returncancel': '%s' % urlparse.urljoin(base_url, BuckarooController._cancel_url),
'Brq_returnerror': '%s' % urlparse.urljoin(base_url, BuckarooController._exception_url),
'Brq_returnreject': '%s' % urlparse.urljoin(base_url, BuckarooController._reject_url),
- 'Brq_culture': (partner_values.get('lang') or 'en_US').replace('_', '-'),
+ 'Brq_culture': (values.get('partner_lang') or 'en_US').replace('_', '-'),
+ 'add_returndata': {'return_url': '%s' % buckaroo_tx_values.pop('return_url')} if buckaroo_tx_values.get('return_url') else ''
})
- if buckaroo_tx_values.get('return_url'):
- buckaroo_tx_values['add_returndata'] = {'return_url': '%s' % buckaroo_tx_values.pop('return_url')}
- else:
- buckaroo_tx_values['add_returndata'] = ''
buckaroo_tx_values['Brq_signature'] = self._buckaroo_generate_digital_sign(acquirer, 'in', buckaroo_tx_values)
- return partner_values, buckaroo_tx_values
+ return buckaroo_tx_values
def buckaroo_get_form_action_url(self, cr, uid, id, context=None):
acquirer = self.browse(cr, uid, id, context=context)
diff --git a/addons/payment_buckaroo/views/buckaroo.xml b/addons/payment_buckaroo/views/buckaroo.xml
index 567a2691b00..0ce58e6850a 100644
--- a/addons/payment_buckaroo/views/buckaroo.xml
+++ b/addons/payment_buckaroo/views/buckaroo.xml
@@ -4,23 +4,23 @@
<template id="buckaroo_acquirer_button">
<form t-if="acquirer.brq_websitekey" t-att-action="tx_url" method="post" target="_self">
- <input type="hidden" name="Brq_websitekey" t-att-value="tx_values['Brq_websitekey']"/>
- <input type="hidden" name="Brq_amount" t-att-value="tx_values['Brq_amount'] or '0.0'"/>
- <input type="hidden" name="Brq_currency" t-att-value="tx_values['Brq_currency']"/>
- <input type="hidden" name="Brq_invoicenumber" t-att-value="tx_values['Brq_invoicenumber']"/>
- <input type="hidden" name="Brq_signature" t-att-value="tx_values['Brq_signature']"/>
- <input type="hidden" name="brq_test" t-att-value="tx_values['brq_test']"/>
- <input type="hidden" name="Brq_culture" t-att-value="tx_values['Brq_culture']"/>
+ <input type="hidden" name="Brq_websitekey" t-att-value="Brq_websitekey"/>
+ <input type="hidden" name="Brq_amount" t-att-value="Brq_amount"/>
+ <input type="hidden" name="Brq_currency" t-att-value="Brq_currency"/>
+ <input type="hidden" name="Brq_invoicenumber" t-att-value="Brq_invoicenumber"/>
+ <input type="hidden" name="Brq_signature" t-att-value="Brq_signature"/>
+ <input type="hidden" name="brq_test" t-att-value="brq_test"/>
+ <input type="hidden" name="Brq_culture" t-att-value="Brq_culture"/>
<!-- URLs -->
- <input t-if="tx_values.get('Brq_return')" type='hidden' name='Brq_return'
- t-att-value="tx_values.get('Brq_return')"/>
- <input t-if="tx_values.get('Brq_returncancel')" type='hidden' name='Brq_returncancel'
- t-att-value="tx_values.get('Brq_returncancel')"/>
- <input t-if="tx_values.get('Brq_returnerror')" type='hidden' name='Brq_returnerror'
- t-att-value="tx_values.get('Brq_returnerror')"/>
- <input t-if="tx_values.get('Brq_returnreject')" type='hidden' name='Brq_returnreject'
- t-att-value="tx_values.get('Brq_returnreject')"/>
- <input type='hidden' name='add_returndata' t-att-value="tx_values.get('add_returndata')"/>
+ <input t-if="Brq_return" type='hidden' name='Brq_return'
+ t-att-value="Brq_return"/>
+ <input t-if="Brq_returncancel" type='hidden' name='Brq_returncancel'
+ t-att-value="Brq_returncancel"/>
+ <input t-if="Brq_returnerror" type='hidden' name='Brq_returnerror'
+ t-att-value="Brq_returnerror"/>
+ <input t-if="Brq_returnreject" type='hidden' name='Brq_returnreject'
+ t-att-value="Brq_returnreject"/>
+ <input type='hidden' name='add_returndata' t-att-value="add_returndata"/>
<!-- submit -->
<button type="submit" width="100px"
t-att-class="submit_class">
diff --git a/addons/payment_ogone/models/ogone.py b/addons/payment_ogone/models/ogone.py
index f2a57807436..79c938c33c8 100644
--- a/addons/payment_ogone/models/ogone.py
+++ b/addons/payment_ogone/models/ogone.py
@@ -145,39 +145,38 @@ class PaymentAcquirerOgone(osv.Model):
shasign = sha1(sign).hexdigest()
return shasign
- def ogone_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
+ def ogone_form_generate_values(self, cr, uid, id, values, context=None):
base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url')
acquirer = self.browse(cr, uid, id, context=context)
- ogone_tx_values = dict(tx_values)
+ ogone_tx_values = dict(values)
temp_ogone_tx_values = {
'PSPID': acquirer.ogone_pspid,
- 'ORDERID': tx_values['reference'],
- 'AMOUNT': float_repr(float_round(tx_values['amount'], 2) * 100, 0),
- 'CURRENCY': tx_values['currency'] and tx_values['currency'].name or '',
- 'LANGUAGE': partner_values['lang'],
- 'CN': partner_values['name'],
- 'EMAIL': partner_values['email'],
- 'OWNERZIP': partner_values['zip'],
- 'OWNERADDRESS': partner_values['address'],
- 'OWNERTOWN': partner_values['city'],
- 'OWNERCTY': partner_values['country'] and partner_values['country'].code or '',
- 'OWNERTELNO': partner_values['phone'],
+ 'ORDERID': values['reference'],
+ 'AMOUNT': float_repr(float_round(values['amount'], 2) * 100, 0),
+ 'CURRENCY': values['currency'] and values['currency'].name or '',
+ 'LANGUAGE': values.get('partner_lang'),
+ 'CN': values.get('partner_name'),
+ 'EMAIL': values.get('partner_email'),
+ 'OWNERZIP': values.get('partner_zip'),
+ 'OWNERADDRESS': values.get('partner_address'),
+ 'OWNERTOWN': values.get('partner_city'),
+ 'OWNERCTY': values.get('partner_country') and values.get('partner_country').code or '',
+ 'OWNERTELNO': values.get('partner_phone'),
'ACCEPTURL': '%s' % urlparse.urljoin(base_url, OgoneController._accept_url),
'DECLINEURL': '%s' % urlparse.urljoin(base_url, OgoneController._decline_url),
'EXCEPTIONURL': '%s' % urlparse.urljoin(base_url, OgoneController._exception_url),
'CANCELURL': '%s' % urlparse.urljoin(base_url, OgoneController._cancel_url),
+ 'PARAMPLUS': 'return_url=%s' % ogone_tx_values.pop('return_url') if ogone_tx_values.get('return_url') else False,
}
- if tx_values.get('type') == 'form_save':
+ if values.get('type') == 'form_save':
temp_ogone_tx_values.update({
'ALIAS': 'ODOO-NEW-ALIAS-%s' % time.time(), # something unique,
- 'ALIASUSAGE': tx_values.get('alias_usage') or acquirer.ogone_alias_usage,
+ 'ALIASUSAGE': values.get('alias_usage') or acquirer.ogone_alias_usage,
})
- if ogone_tx_values.get('return_url'):
- temp_ogone_tx_values['PARAMPLUS'] = 'return_url=%s' % ogone_tx_values.pop('return_url')
shasign = self._ogone_generate_shasign(acquirer, 'in', temp_ogone_tx_values)
temp_ogone_tx_values['SHASIGN'] = shasign
ogone_tx_values.update(temp_ogone_tx_values)
- return partner_values, ogone_tx_values
+ return ogone_tx_values
def ogone_get_form_action_url(self, cr, uid, id, context=None):
acquirer = self.browse(cr, uid, id, context=context)
diff --git a/addons/payment_ogone/views/ogone.xml b/addons/payment_ogone/views/ogone.xml
index a6dcd4f5624..deca7a2605c 100644
--- a/addons/payment_ogone/views/ogone.xml
+++ b/addons/payment_ogone/views/ogone.xml
@@ -5,26 +5,26 @@
<template id="ogone_acquirer_button">
<form t-if="acquirer" t-att-action="tx_url" method="post" target="_self">
<!-- seller -->
- <input type='hidden' name='PSPID' t-att-value='tx_values["PSPID"]'/>
- <input type='hidden' name='ORDERID' t-att-value='tx_values["ORDERID"]'/>
+ <input type='hidden' name='PSPID' t-att-value='PSPID'/>
+ <input type='hidden' name='ORDERID' t-att-value='ORDERID'/>
<!-- cart -->
- <input type='hidden' name='AMOUNT' t-att-value='tx_values["AMOUNT"] or "0.0"'/>
- <input type='hidden' name='CURRENCY' t-att-value='tx_values["CURRENCY"]'/>
+ <input type='hidden' name='AMOUNT' t-att-value='AMOUNT or "0.0"'/>
+ <input type='hidden' name='CURRENCY' t-att-value='CURRENCY'/>
<!-- buyer -->
- <input type='hidden' name='LANGUAGE' t-att-value='tx_values["LANGUAGE"]'/>
- <input type='hidden' name='CN' t-att-value='tx_values["CN"]'/>
- <input type='hidden' name='EMAIL' t-att-value='tx_values["EMAIL"]'/>
- <input type='hidden' name='OWNERZIP' t-att-value='tx_values["OWNERZIP"]'/>
- <input type='hidden' name='OWNERADDRESS' t-att-value='tx_values["OWNERADDRESS"]'/>
- <input type='hidden' name='OWNERCTY' t-att-value='tx_values["OWNERCTY"]'/>
- <input type='hidden' name='OWNERTOWN' t-att-value='tx_values["OWNERTOWN"]'/>
- <input type='hidden' name='OWNERTELNO' t-att-value='tx_values["OWNERTELNO"]'/>
+ <input type='hidden' name='LANGUAGE' t-att-value='LANGUAGE'/>
+ <input type='hidden' name='CN' t-att-value='CN'/>
+ <input type='hidden' name='EMAIL' t-att-value='EMAIL'/>
+ <input type='hidden' name='OWNERZIP' t-att-value='OWNERZIP'/>
+ <input type='hidden' name='OWNERADDRESS' t-att-value='OWNERADDRESS'/>
+ <input type='hidden' name='OWNERCTY' t-att-value='OWNERCTY'/>
+ <input type='hidden' name='OWNERTOWN' t-att-value='OWNERTOWN'/>
+ <input type='hidden' name='OWNERTELNO' t-att-value='OWNERTELNO'/>
<t t-if="type == 'form_save'">
- <input type='hidden' name='ALIAS' t-att-value='tx_values["ALIAS"]'/>
- <input type='hidden' name='ALIASUSAGE' t-att-value='tx_values["ALIASUSAGE"]'/>
+ <input type='hidden' name='ALIAS' t-att-value='ALIAS'/>
+ <input type='hidden' name='ALIASUSAGE' t-att-value='ALIASUSAGE'/>
</t>
<!-- before payment verification -->
- <input type='hidden' name='SHASIGN' t-att-value='tx_values["SHASIGN"]'/>
+ <input type='hidden' name='SHASIGN' t-att-value='SHASIGN'/>
<!-- look and print -->
<!-- <input type='hidden' name='TITLE' t-att-value='tx_dict["currency_name"]'/>
<input type='hidden' name='BGCOLOR' t-att-value='tx_dict["currency_name"]'/>
@@ -36,14 +36,14 @@
<input type='hidden' name='LOGO' t-att-value='tx_dict["currency_name"]'/>
<input type='hidden' name='FONTTYPE' t-att-value='tx_dict["currency_name"]'/> -->
<!-- after payment parameters -->
- <t t-if='tx_values.get("PARAMPLUS")'>
- <input type='hidden' name="PARAMPLUS" t-att-value='tx_values["PARAMPLUS"]'/>
+ <t t-if='PARAMPLUS'>
+ <input type='hidden' name="PARAMPLUS" t-att-value='PARAMPLUS'/>
</t>
<!-- redirection -->
- <input type='hidden' name='ACCEPTURL' t-att-value='tx_values["ACCEPTURL"]'/>
- <input type='hidden' name='DECLINEURL' t-att-value='tx_values["DECLINEURL"]'/>
- <input type='hidden' name='EXCEPTIONURL' t-att-value='tx_values["EXCEPTIONURL"]'/>
- <input type='hidden' name='CANCELURL' t-att-value='tx_values["CANCELURL"]'/>
+ <input type='hidden' name='ACCEPTURL' t-att-value='ACCEPTURL'/>
+ <input type='hidden' name='DECLINEURL' t-att-value='DECLINEURL'/>
+ <input type='hidden' name='EXCEPTIONURL' t-att-value='EXCEPTIONURL'/>
+ <input type='hidden' name='CANCELURL' t-att-value='CANCELURL'/>
<!-- submit -->
<button type="submit" width="100px"
t-att-class="submit_class">
diff --git a/addons/payment_paypal/models/paypal.py b/addons/payment_paypal/models/paypal.py
index 1fca9134d11..e8e028c19b9 100644
--- a/addons/payment_paypal/models/paypal.py
+++ b/addons/payment_paypal/models/paypal.py
@@ -106,35 +106,33 @@ class AcquirerPaypal(osv.Model):
fees = (percentage / 100.0 * amount + fixed ) / (1 - percentage / 100.0)
return fees
- def paypal_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
+ def paypal_form_generate_values(self, cr, uid, id, values, context=None):
base_url = self.pool['ir.config_parameter'].get_param(cr, SUPERUSER_ID, 'web.base.url')
acquirer = self.browse(cr, uid, id, context=context)
- paypal_tx_values = dict(tx_values)
+ paypal_tx_values = dict(values)
paypal_tx_values.update({
'cmd': '_xclick',
'business': acquirer.paypal_email_account,
- 'item_name': '%s: %s' % (acquirer.company_id.name, tx_values['reference']),
- 'item_number': tx_values['reference'],
- 'amount': tx_values['amount'],
- 'currency_code': tx_values['currency'] and tx_values['currency'].name or '',
- 'address1': partner_values['address'],
- 'city': partner_values['city'],
- 'country': partner_values['country'] and partner_values['country'].name or '',
- 'state': partner_values['state'] and partner_values['state'].name or '',
- 'email': partner_values['email'],
- 'zip': partner_values['zip'],
- 'first_name': partner_values['first_name'],
- 'last_name': partner_values['last_name'],
- 'return': '%s' % urlparse.urljoin(base_url, PaypalController._return_url),
+ 'item_name': '%s: %s' % (acquirer.company_id.name, values['reference']),
+ 'item_number': values['reference'],
+ 'amount': values['amount'],
+ 'currency_code': values['currency'] and values['currency'].name or '',
+ 'address1': values.get('partner_address'),
+ 'city': values.get('partner_city'),
+ 'country': values.get('partner_country') and values.get('partner_country').name or '',
+ 'state': values.get('partner_state') and values.get('partner_state').name or '',
+ 'email': values.get('partner_email'),
+ 'zip_code': values.get('partner_zip'),
+ 'first_name': values.get('partner_first_name'),
+ 'last_name': values.get('partner_last_name'),
+ 'paypal_return': '%s' % urlparse.urljoin(base_url, PaypalController._return_url),
'notify_url': '%s' % urlparse.urljoin(base_url, PaypalController._notify_url),
'cancel_return': '%s' % urlparse.urljoin(base_url, PaypalController._cancel_url),
+ 'handling': '%.2f' % paypal_tx_values.pop('fees', 0.0) if acquirer.fees_active else False,
+ 'custom': json.dumps({'return_url': '%s' % paypal_tx_values.pop('return_url')}) if paypal_tx_values.get('return_url') else False,
})
- if acquirer.fees_active:
- paypal_tx_values['handling'] = '%.2f' % paypal_tx_values.pop('fees', 0.0)
- if paypal_tx_values.get('return_url'):
- paypal_tx_values['custom'] = json.dumps({'return_url': '%s' % paypal_tx_values.pop('return_url')})
- return partner_values, paypal_tx_values
+ return paypal_tx_values
def paypal_get_form_action_url(self, cr, uid, id, context=None):
acquirer = self.browse(cr, uid, id, context=context)
@@ -224,8 +222,8 @@ class TxPaypal(osv.Model):
if 'handling_amount' in data and float_compare(float(data.get('handling_amount')), tx.fees, 2) != 0:
invalid_parameters.append(('handling_amount', data.get('handling_amount'), tx.fees))
# check buyer
- if tx.partner_reference and data.get('payer_id') != tx.partner_reference:
- invalid_parameters.append(('payer_id', data.get('payer_id'), tx.partner_reference))
+ if tx.payment_method_id and data.get('payer_id') != tx.payment_method_id.acquirer_ref:
+ invalid_parameters.append(('payer_id', data.get('payer_id'), tx.payment_method_id.acquirer_ref))
# check seller
if data.get('receiver_email') != tx.acquirer_id.paypal_email_account:
invalid_parameters.append(('receiver_email', data.get('receiver_email'), tx.acquirer_id.paypal_email_account))
@@ -236,24 +234,23 @@ class TxPaypal(osv.Model):
def _paypal_form_validate(self, cr, uid, tx, data, context=None):
status = data.get('payment_status')
- data = {
+ res = {
'acquirer_reference': data.get('txn_id'),
'paypal_txn_type': data.get('payment_type'),
- 'partner_reference': data.get('payer_id')
}
if status in ['Completed', 'Processed']:
_logger.info('Validated Paypal payment for tx %s: set as done' % (tx.reference))
- data.update(state='done', date_validate=data.get('payment_date', fields.datetime.now()))
- return tx.write(data)
+ res.update(state='done', date_validate=data.get('payment_date', fields.datetime.now()))
+ return tx.write(res)
elif status in ['Pending', 'Expired']:
_logger.info('Received notification for Paypal payment %s: set as pending' % (tx.reference))
- data.update(state='pending', state_message=data.get('pending_reason', ''))
- return tx.write(data)
+ res.update(state='pending', state_message=data.get('pending_reason', ''))
+ return tx.write(res)
else:
error = 'Received unrecognized status for Paypal payment %s: %s, set as error' % (tx.reference, status)
_logger.info(error)
- data.update(state='error', state_message=error)
- return tx.write(data)
+ res.update(state='error', state_message=error)
+ return tx.write(res)
# --------------------------------------------------
# SERVER2SERVER RELATED METHODS
diff --git a/addons/payment_paypal/tests/__init__.py b/addons/payment_paypal/tests/__init__.py
index 40a96afc6ff..5feb98a09c6 100644
--- a/addons/payment_paypal/tests/__init__.py
+++ b/addons/payment_paypal/tests/__init__.py
@@ -1 +1,2 @@
# -*- coding: utf-8 -*-
+import test_paypal \ No newline at end of file
diff --git a/addons/payment_paypal/tests/test_paypal.py b/addons/payment_paypal/tests/test_paypal.py
index 8428222442e..b0eaa84b7f8 100644
--- a/addons/payment_paypal/tests/test_paypal.py
+++ b/addons/payment_paypal/tests/test_paypal.py
@@ -33,45 +33,12 @@ class PaypalCommon(PaymentAcquirerCommon):
self.switch_polo = (('6331101999990016', '123'))
-class PaypalServer2Server(PaypalCommon):
-
- def test_00_tx_management(self):
- cr, uid, context = self.cr, self.uid, {}
- # be sure not to do stupid things
- paypal = self.payment_acquirer.browse(self.cr, self.uid, self.paypal_id, None)
- self.assertEqual(paypal.environment, 'test', 'test without test environment')
-
- res = self.payment_acquirer._paypal_s2s_get_access_token(cr, uid, [self.paypal_id], context=context)
- self.assertTrue(res[self.paypal_id] is not False, 'paypal: did not generate access token')
-
- tx_id = self.payment_transaction.s2s_create(
- cr, uid, {
- 'amount': 0.01,
- 'acquirer_id': self.paypal_id,
- 'currency_id': self.currency_euro_id,
- 'reference': 'test_reference',
- 'partner_id': self.buyer_id,
- }, {
- 'number': self.visa[0][0],
- 'cvc': self.visa[0][1],
- 'brand': 'visa',
- 'expiry_mm': 9,
- 'expiry_yy': 2015,
- }, context=context
- )
-
- tx = self.payment_transaction.browse(cr, uid, tx_id, context=context)
- self.assertTrue(tx.paypal_txn_id is not False, 'paypal: txn_id should have been set after s2s request')
-
- self.payment_transaction.write(cr, uid, tx_id, {'paypal_txn_id': False}, context=context)
-
-
class PaypalForm(PaypalCommon):
def test_10_paypal_form_render(self):
cr, uid, context = self.cr, self.uid, {}
# be sure not to do stupid things
- self.payment_acquirer.write(cr, uid, self.paypal_id, {'fees_active': False}, context)
+ self.payment_acquirer.write(cr, uid, self.paypal_id, {'paypal_email_account': 'tde+paypal-facilitator@openerp.com', 'fees_active': False}, context)
paypal = self.payment_acquirer.browse(cr, uid, self.paypal_id, context)
self.assertEqual(paypal.environment, 'test', 'test without test environment')
@@ -83,17 +50,16 @@ class PaypalForm(PaypalCommon):
res = self.payment_acquirer.render(
cr, uid, self.paypal_id,
'test_ref0', 0.01, self.currency_euro_id,
- partner_id=None,
- partner_values=self.buyer_values,
+ values=self.buyer_values,
context=context)
form_values = {
'cmd': '_xclick',
'business': 'tde+paypal-facilitator@openerp.com',
- 'item_name': 'test_ref0',
+ 'item_name': 'YourCompany: test_ref0',
'item_number': 'test_ref0',
- 'first_name': 'Buyer',
- 'last_name': 'Norbert',
+ 'first_name': 'Norbert',
+ 'last_name': 'Buyer',
'amount': '0.01',
'currency_code': 'EUR',
'address1': 'Huge Street 2/543',
@@ -136,9 +102,8 @@ class PaypalForm(PaypalCommon):
# render the button
res = self.payment_acquirer.render(
cr, uid, self.paypal_id,
- 'test_ref0', 12.50, self.currency_euro,
- partner_id=None,
- partner_values=self.buyer_values,
+ 'test_ref0', 12.50, self.currency_euro_id,
+ values=self.buyer_values,
context=context)
# check form result
@@ -163,7 +128,7 @@ class PaypalForm(PaypalCommon):
'protection_eligibility': u'Ineligible',
'last_name': u'Poilu',
'txn_id': u'08D73520KX778924N',
- 'receiver_email': u'tde+paypal-facilitator@openerp.com',
+ 'receiver_email': u'dummy',
'payment_status': u'Pending',
'payment_gross': u'',
'tax': u'0.00',
@@ -183,9 +148,9 @@ class PaypalForm(PaypalCommon):
'address_name': u'Norbert Poilu',
'pending_reason': u'multi_currency',
'item_number': u'test_ref_2',
- 'receiver_id': u'DEG7Z7MYGT6QA',
+ 'receiver_id': u'dummy',
'transaction_subject': u'',
- 'business': u'tde+paypal-facilitator@openerp.com',
+ 'business': u'dummy',
'test_ipn': u'1',
'payer_id': u'VTDKRZQSAHYPS',
'verify_sign': u'An5ns1Kso7MWUdW4ErQKJJJ4qi4-AVoiUf-3478q3vrSmqh08IouiYpM',
diff --git a/addons/payment_paypal/views/paypal.xml b/addons/payment_paypal/views/paypal.xml
index 7a9731c4dfe..6491f0e8ed5 100644
--- a/addons/payment_paypal/views/paypal.xml
+++ b/addons/payment_paypal/views/paypal.xml
@@ -4,32 +4,32 @@
<template id="paypal_acquirer_button">
<form t-if="acquirer.paypal_email_account" t-att-action="tx_url" method="post" target="_self">
- <input type="hidden" name="cmd" t-att-value="tx_values['cmd']"/>
- <input type="hidden" name="business" t-att-value="tx_values['business']"/>
- <input type="hidden" name="item_name" t-att-value="tx_values['item_name']"/>
- <input type="hidden" name="item_number" t-att-value="tx_values['item_number']"/>
- <input type="hidden" name="amount" t-att-value="tx_values['amount'] or '0.0'"/>
- <input t-if="'handling' in tx_values" type="hidden" name="handling"
- t-att-value="tx_values.get('handling')"/>
- <input type="hidden" name="currency_code" t-att-value="tx_values['currency_code']"/>
+ <input type="hidden" name="cmd" t-att-value="cmd"/>
+ <input type="hidden" name="business" t-att-value="business"/>
+ <input type="hidden" name="item_name" t-att-value="item_name"/>
+ <input type="hidden" name="item_number" t-att-value="item_number"/>
+ <input type="hidden" name="amount" t-att-value="amount"/>
+ <input t-if="handling" type="hidden" name="handling"
+ t-att-value="handling"/>
+ <input type="hidden" name="currency_code" t-att-value="currency_code"/>
<!-- partner / address data -->
- <input type="hidden" name="address1" t-att-value="tx_values['address1']"/>
- <input type="hidden" name="city" t-att-value="tx_values['city']"/>
- <input type="hidden" name="country" t-att-value="tx_values['country']"/>
- <input type="hidden" name="email" t-att-value="tx_values['email']"/>
- <input type="hidden" name="first_name" t-att-value="tx_values['first_name']"/>
- <input type="hidden" name="last_name" t-att-value="tx_values['last_name']"/>
- <input type="hidden" name="zip" t-att-value="tx_values['zip']"/>
+ <input type="hidden" name="address1" t-att-value="address1"/>
+ <input type="hidden" name="city" t-att-value="city"/>
+ <input type="hidden" name="country" t-att-value="country"/>
+ <input type="hidden" name="email" t-att-value="email"/>
+ <input type="hidden" name="first_name" t-att-value="first_name"/>
+ <input type="hidden" name="last_name" t-att-value="last_name"/>
+ <input type="hidden" name="zip" t-att-value="zip_code"/>
<!-- after payment parameters -->
- <input t-if='tx_values.get("custom")' type='hidden' name="custom"
- t-att-value='tx_values.get("custom")'/>
+ <input t-if='custom' type='hidden' name="custom"
+ t-att-value='custom'/>
<!-- URLs -->
- <input t-if="tx_values.get('return')" type='hidden' name='return'
- t-att-value="tx_values.get('return')"/>
+ <input t-if="paypal_return" type='hidden' name='return'
+ t-att-value="paypal_return"/>
<input t-if="acquirer.paypal_use_ipn" type='hidden' name='notify_url'
- t-att-value="tx_values.get('notify_url')"/>
- <input t-if="tx_values.get('cancel_return')" type="hidden" name="cancel_return"
- t-att-value="tx_values.get('cancel_return')"/>
+ t-att-value="notify_url"/>
+ <input t-if="cancel_return" type="hidden" name="cancel_return"
+ t-att-value="cancel_return"/>
<!-- submit -->
<button type="submit" width="100px"
t-att-class="submit_class">
diff --git a/addons/payment_sips/models/sips.py b/addons/payment_sips/models/sips.py
index 980873178a9..0b76ff5ddf6 100644
--- a/addons/payment_sips/models/sips.py
+++ b/addons/payment_sips/models/sips.py
@@ -78,14 +78,14 @@ class AcquirerSips(models.Model):
return shasign.hexdigest()
@api.multi
- def sips_form_generate_values(self, partner_values, tx_values):
+ def sips_form_generate_values(self, values):
self.ensure_one()
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
- currency = self.env['res.currency'].sudo().browse(tx_values['currency_id'])
+ currency = self.env['res.currency'].sudo().browse(values['currency_id'])
currency_code = CURRENCY_CODES.get(currency.name, False)
if not currency_code:
raise ValidationError(_('Currency not supported by Wordline'))
- amount = int(tx_values.get('amount') * 100)
+ amount = int(values['amount'] * 100)
if self.environment == 'prod':
# For production environment, key version 2 is required
merchant_id = getattr(self, 'sips_merchant_id')
@@ -95,15 +95,15 @@ class AcquirerSips(models.Model):
merchant_id = '002001000000001'
key_version = '1'
- sips_tx_values = dict(tx_values)
+ sips_tx_values = dict(values)
sips_tx_values.update({
'Data': u'amount=%s|' % amount +
u'currencyCode=%s|' % currency_code +
u'merchantId=%s|' % merchant_id +
u'normalReturnUrl=%s|' % urlparse.urljoin(base_url, SipsController._return_url) +
u'automaticResponseUrl=%s|' % urlparse.urljoin(base_url, SipsController._return_url) +
- u'transactionReference=%s|' % tx_values['reference'] +
- u'statementReference=%s|' % tx_values['reference'] +
+ u'transactionReference=%s|' % values['reference'] +
+ u'statementReference=%s|' % values['reference'] +
u'keyVersion=%s' % key_version,
'InterfaceVersion': 'HP_2.3',
})
@@ -116,7 +116,7 @@ class AcquirerSips(models.Model):
shasign = self._sips_generate_shasign(sips_tx_values)
sips_tx_values['Seal'] = shasign
- return partner_values, sips_tx_values
+ return sips_tx_values
@api.multi
def sips_get_form_action_url(self):
diff --git a/addons/payment_sips/views/sips.xml b/addons/payment_sips/views/sips.xml
index 02553d2c754..2aeda71c3aa 100644
--- a/addons/payment_sips/views/sips.xml
+++ b/addons/payment_sips/views/sips.xml
@@ -4,9 +4,9 @@
<template id="sips_acquirer_button">
<form t-att-action="tx_url" method="post" target="_self">
- <input type="hidden" name="Data" t-att-value="tx_values['Data']"/>
- <input type="hidden" name="InterfaceVersion" t-att-value="tx_values['InterfaceVersion']"/>
- <input type="hidden" name="Seal" t-att-value="tx_values['Seal']"/>
+ <input type="hidden" name="Data" t-att-value="Data"/>
+ <input type="hidden" name="InterfaceVersion" t-att-value="InterfaceVersion"/>
+ <input type="hidden" name="Seal" t-att-value="Seal"/>
<!-- submit -->
<button type="submit" width="100px"
t-att-class="submit_class">
diff --git a/addons/payment_transfer/views/transfer.xml b/addons/payment_transfer/views/transfer.xml
index e972677a4a1..1a36f925758 100644
--- a/addons/payment_transfer/views/transfer.xml
+++ b/addons/payment_transfer/views/transfer.xml
@@ -4,11 +4,11 @@
<template id="transfer_acquirer_button">
<form t-if="acquirer" t-att-action="tx_url" method="post" target="_self">
- <t t-if="tx_values.get('return_url')">
- <input type='hidden' name='return_url' t-att-value='tx_values["return_url"]'/>
+ <t t-if="return_url">
+ <input type='hidden' name='return_url' t-att-value='return_url'/>
</t>
<input type='hidden' name='reference' t-att-value='reference'/>
- <input type='hidden' name='amount' t-att-value='amount or "0.0"'/>
+ <input type='hidden' name='amount' t-att-value='amount'/>
<input type='hidden' name='currency' t-att-value='currency.name'/>
<!-- submit -->
<button type="submit" width="100px"
diff --git a/addons/website_quote/controllers/main.py b/addons/website_quote/controllers/main.py
index 84c69e5f1f5..173045a9484 100644
--- a/addons/website_quote/controllers/main.py
+++ b/addons/website_quote/controllers/main.py
@@ -68,11 +68,11 @@ class sale_quote(http.Controller):
order.name,
order.amount_total,
order.pricelist_id.currency_id.id,
- partner_id=order.partner_id.id,
- tx_values={
+ values={
'return_url': '/quote/%s/%s' % (order_id, token) if token else '/quote/%s' % order_id,
'type': 'form',
- 'alias_usage': _('If we store your payment information on our server, subscription payments will be made automatically.')
+ 'alias_usage': _('If we store your payment information on our server, subscription payments will be made automatically.'),
+ 'partner_id': order.partner_id.id,
},
context=render_ctx)
return request.website.render('website_quote.so_quotation', values)
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index a47c5cba7c9..38559086c4c 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -741,9 +741,9 @@ class website_sale(http.Controller):
order.name,
order.amount_total,
order.pricelist_id.currency_id.id,
- partner_id=shipping_partner_id,
- tx_values={
+ values={
'return_url': '/shop/payment/validate',
+ 'partner_id': shipping_partner_id
},
context=render_ctx)