[ADD]:Added Upstream patch for payment_authorize

This commit is contained in:
sheetalPatil 2018-07-09 18:44:39 +05:30
parent 7a27960d56
commit f26524e7dd
4 changed files with 17 additions and 6 deletions

View File

@ -3,3 +3,4 @@
from . import models from . import models
from . import controllers from . import controllers
from flectra.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers

View File

@ -14,4 +14,5 @@
'data/payment_acquirer_data.xml', 'data/payment_acquirer_data.xml',
], ],
'installable': True, 'installable': True,
'post_init_hook': 'create_missing_journal_for_acquirers',
} }

View File

@ -11,7 +11,7 @@ import time
from flectra import _, api, fields, models from flectra import _, api, fields, models
from flectra.addons.payment.models.payment_acquirer import ValidationError from flectra.addons.payment.models.payment_acquirer import ValidationError
from flectra.addons.payment_authorize.controllers.main import AuthorizeController from flectra.addons.payment_authorize.controllers.main import AuthorizeController
from flectra.tools.float_utils import float_compare from flectra.tools.float_utils import float_compare, float_repr
from flectra.tools.safe_eval import safe_eval from flectra.tools.safe_eval import safe_eval
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@ -59,12 +59,21 @@ class PaymentAcquirerAuthorize(models.Model):
@api.multi @api.multi
def authorize_form_generate_values(self, values): def authorize_form_generate_values(self, values):
self.ensure_one() self.ensure_one()
# State code is only supported in US, use state name by default
# See https://developer.authorize.net/api/reference/
state = values['partner_state'].name if values.get('partner_state') else ''
if values.get('partner_country') and values.get('partner_country') == self.env.ref('base.us', False):
state = values['partner_state'].code if values.get('partner_state') else ''
billing_state = values['billing_partner_state'].name if values.get('billing_partner_state') else ''
if values.get('billing_partner_country') and values.get('billing_partner_country') == self.env.ref('base.us', False):
billing_state = values['billing_partner_state'].code if values.get('billing_partner_state') else ''
base_url = self.env['ir.config_parameter'].get_param('web.base.url') base_url = self.env['ir.config_parameter'].get_param('web.base.url')
authorize_tx_values = dict(values) authorize_tx_values = dict(values)
temp_authorize_tx_values = { temp_authorize_tx_values = {
'x_login': self.authorize_login, 'x_login': self.authorize_login,
'x_trans_key': self.authorize_transaction_key, 'x_trans_key': self.authorize_transaction_key,
'x_amount': str(values['amount']), 'x_amount': float_repr(values['amount'], values['currency'].decimal_places if values['currency'] else 2),
'x_show_form': 'PAYMENT_FORM', 'x_show_form': 'PAYMENT_FORM',
'x_type': 'AUTH_CAPTURE' if not self.capture_manually else 'AUTH_ONLY', 'x_type': 'AUTH_CAPTURE' if not self.capture_manually else 'AUTH_ONLY',
'x_method': 'CC', 'x_method': 'CC',
@ -83,7 +92,7 @@ class PaymentAcquirerAuthorize(models.Model):
'first_name': values.get('partner_first_name'), 'first_name': values.get('partner_first_name'),
'last_name': values.get('partner_last_name'), 'last_name': values.get('partner_last_name'),
'phone': values.get('partner_phone'), 'phone': values.get('partner_phone'),
'state': values.get('partner_state') and values['partner_state'].code or '', 'state': state,
'billing_address': values.get('billing_partner_address'), 'billing_address': values.get('billing_partner_address'),
'billing_city': values.get('billing_partner_city'), 'billing_city': values.get('billing_partner_city'),
'billing_country': values.get('billing_partner_country') and values.get('billing_partner_country').name or '', 'billing_country': values.get('billing_partner_country') and values.get('billing_partner_country').name or '',
@ -92,7 +101,7 @@ class PaymentAcquirerAuthorize(models.Model):
'billing_first_name': values.get('billing_partner_first_name'), 'billing_first_name': values.get('billing_partner_first_name'),
'billing_last_name': values.get('billing_partner_last_name'), 'billing_last_name': values.get('billing_partner_last_name'),
'billing_phone': values.get('billing_partner_phone'), 'billing_phone': values.get('billing_partner_phone'),
'billing_state': values.get('billing_partner_state') and values['billing_partner_state'].code or '', 'billing_state': billing_state,
} }
temp_authorize_tx_values['returndata'] = authorize_tx_values.pop('return_url', '') 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) temp_authorize_tx_values['x_fp_hash'] = self._authorize_generate_hashing(temp_authorize_tx_values)

View File

@ -51,7 +51,7 @@ class AuthorizeForm(AuthorizeCommon):
form_values = { form_values = {
'x_login': self.authorize.authorize_login, 'x_login': self.authorize.authorize_login,
'x_trans_key': self.authorize.authorize_transaction_key, 'x_trans_key': self.authorize.authorize_transaction_key,
'x_amount': '320.0', 'x_amount': '56.16',
'x_show_form': 'PAYMENT_FORM', 'x_show_form': 'PAYMENT_FORM',
'x_type': 'AUTH_CAPTURE', 'x_type': 'AUTH_CAPTURE',
'x_method': 'CC', 'x_method': 'CC',
@ -87,7 +87,7 @@ class AuthorizeForm(AuthorizeCommon):
form_values['x_fp_hash'] = self._authorize_generate_hashing(form_values) form_values['x_fp_hash'] = self._authorize_generate_hashing(form_values)
# render the button # render the button
res = self.authorize.render('SO004', 320.0, self.currency_usd.id, values=self.buyer_values) res = self.authorize.render('SO004', 56.16, self.currency_usd.id, values=self.buyer_values)
# check form result # check form result
tree = objectify.fromstring(res) tree = objectify.fromstring(res)