diff options
| author | Damien Bouvy <dbo@odoo.com> | 2015-09-04 15:57:07 +0200 |
|---|---|---|
| committer | Damien Bouvy <dbo@odoo.com> | 2015-09-04 16:08:22 +0200 |
| commit | 526f27ddac8b6d69f3dbbd91e7a83ab9c76c0a5a (patch) | |
| tree | 3eccb217ff97c6fbca90e9f4f446c2fd3de888b9 | |
| parent | f76c78d598307e337db19cc89688c57b84480cda (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
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) |
