From 2738341c21ec2e2df355bf8d4c98eab0a96cc21d Mon Sep 17 00:00:00 2001
From: Yannick Tivisse
Date: Wed, 20 Feb 2019 16:16:22 +0000
Subject: [PATCH] Revert "[ADD] payment_ccavenue: Add new payment acquirer for
India"
This reverts commit f735951d5c3ba793cc3e421cd0e856cd94064535.
Revert payment acquire due to the fact that the encryption scheme
is broken by design and therefore cannot be trusted.
closes odoo/odoo#31281
---
addons/payment/data/payment_acquirer_data.xml | 22 ---
addons/payment_ccavenue/__init__.py | 6 -
addons/payment_ccavenue/__manifest__.py | 17 --
.../payment_ccavenue/controllers/__init__.py | 4 -
addons/payment_ccavenue/controllers/main.py | 24 ---
.../data/payment_ccavenue_data.xml | 15 --
addons/payment_ccavenue/models/__init__.py | 4 -
addons/payment_ccavenue/models/payment.py | 163 ------------------
.../static/description/icon.png | Bin 418009 -> 0 bytes
.../static/src/img/ccavenue_icon.png | Bin 27474 -> 0 bytes
.../views/payment_acquirer.xml | 17 --
.../views/payment_ccavenue_templates.xml | 10 --
12 files changed, 282 deletions(-)
delete mode 100644 addons/payment_ccavenue/__init__.py
delete mode 100644 addons/payment_ccavenue/__manifest__.py
delete mode 100644 addons/payment_ccavenue/controllers/__init__.py
delete mode 100644 addons/payment_ccavenue/controllers/main.py
delete mode 100644 addons/payment_ccavenue/data/payment_ccavenue_data.xml
delete mode 100644 addons/payment_ccavenue/models/__init__.py
delete mode 100755 addons/payment_ccavenue/models/payment.py
delete mode 100644 addons/payment_ccavenue/static/description/icon.png
delete mode 100644 addons/payment_ccavenue/static/src/img/ccavenue_icon.png
delete mode 100644 addons/payment_ccavenue/views/payment_acquirer.xml
delete mode 100644 addons/payment_ccavenue/views/payment_ccavenue_templates.xml
diff --git a/addons/payment/data/payment_acquirer_data.xml b/addons/payment/data/payment_acquirer_data.xml
index 4b4aa5f400e..27d27ea4258 100644
--- a/addons/payment/data/payment_acquirer_data.xml
+++ b/addons/payment/data/payment_acquirer_data.xml
@@ -265,26 +265,4 @@
ref("payment.payment_icon_cc_codensa_easy_credit")])]'/>
-
- CCAvenue
-
-
-
-
-
- CCAvenue provides complete, simple and secure online payment gateway services and e-business solutions to Indian websites, with real time Credit Card, Debit Card and Net Banking.
-
-
- - Online Payment
- - Payment Status Tracking
-
-
-
-
-
-
diff --git a/addons/payment_ccavenue/__init__.py b/addons/payment_ccavenue/__init__.py
deleted file mode 100644
index e52ad6f83e3..00000000000
--- a/addons/payment_ccavenue/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from . import controllers
-from . import models
-from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
diff --git a/addons/payment_ccavenue/__manifest__.py b/addons/payment_ccavenue/__manifest__.py
deleted file mode 100644
index ac51c2d7891..00000000000
--- a/addons/payment_ccavenue/__manifest__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-{
- 'name': 'CCAvenue Payment Acquirer',
- 'category': 'Accounting',
- 'summary': 'Payment Acquirer: CCAvenue Implementation',
- 'description': """CCAvenue Payment Acquirer""",
- 'depends': ['payment'],
- 'external_dependencies': {'python': ['Crypto']},
- 'data': [
- 'views/payment_acquirer.xml',
- 'views/payment_ccavenue_templates.xml',
- 'data/payment_ccavenue_data.xml',
- ],
- 'post_init_hook': 'create_missing_journal_for_acquirers',
-}
diff --git a/addons/payment_ccavenue/controllers/__init__.py b/addons/payment_ccavenue/controllers/__init__.py
deleted file mode 100644
index 5d4b25db9c0..00000000000
--- a/addons/payment_ccavenue/controllers/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from . import main
diff --git a/addons/payment_ccavenue/controllers/main.py b/addons/payment_ccavenue/controllers/main.py
deleted file mode 100644
index 957df9864b5..00000000000
--- a/addons/payment_ccavenue/controllers/main.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-import logging
-import pprint
-import werkzeug
-
-from odoo import http
-from odoo.http import request
-
-
-_logger = logging.getLogger(__name__)
-
-
-class CCAvenueController(http.Controller):
- _return_url = '/payment/ccavenue/return/'
- _cancel_url = '/payment/ccavenue/cancel/'
-
- @http.route(['/payment/ccavenue/return', '/payment/ccavenue/cancel'], type='http', auth='public', csrf=False)
- def ccavenue_return(self, **post):
- _logger.info('CCAvenue: Entering form_feedback with post data %s', pprint.pformat(post))
- if post:
- request.env['payment.transaction'].sudo().form_feedback(post, 'ccavenue')
- return werkzeug.utils.redirect('/payment/process')
diff --git a/addons/payment_ccavenue/data/payment_ccavenue_data.xml b/addons/payment_ccavenue/data/payment_ccavenue_data.xml
deleted file mode 100644
index 63220392c8a..00000000000
--- a/addons/payment_ccavenue/data/payment_ccavenue_data.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- ccavenue
-
-
- test
- You will be redirected to the CCAvenue website after clicking on the payment button.
]]>
-
- dummy
- dummy
- dummy
-
-
diff --git a/addons/payment_ccavenue/models/__init__.py b/addons/payment_ccavenue/models/__init__.py
deleted file mode 100644
index 2ec5b9cd2f6..00000000000
--- a/addons/payment_ccavenue/models/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from . import payment
diff --git a/addons/payment_ccavenue/models/payment.py b/addons/payment_ccavenue/models/payment.py
deleted file mode 100755
index 2f3ed126548..00000000000
--- a/addons/payment_ccavenue/models/payment.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-import logging
-
-from binascii import hexlify, unhexlify
-from hashlib import md5
-from werkzeug import urls
-
-from odoo import api, fields, models, _
-from odoo.addons.payment.models.payment_acquirer import ValidationError
-from odoo.addons.payment_ccavenue.controllers.main import CCAvenueController
-from odoo.tools.float_utils import float_compare
-
-
-_logger = logging.getLogger(__name__)
-
-try:
- from Crypto.Cipher import AES
-except ImportError:
- _logger.info('pyCrypto library not found. If you plan to use payment_ccavenue, please install the library from https://pypi.python.org/pypi/pyCrypto')
-
-
-class PaymentAcquirer(models.Model):
- _inherit = 'payment.acquirer'
-
- provider = fields.Selection(selection_add=[('ccavenue', 'CCAvenue')])
- ccavenue_merchant_id = fields.Char(string='CCAvenue Merchant ID', required_if_provider='ccavenue', groups='base.group_user')
- ccavenue_access_code = fields.Char(string='Access Code', required_if_provider='ccavenue', groups='base.group_user')
- ccavenue_working_key = fields.Char(string='Working Key', required_if_provider='ccavenue', groups='base.group_user')
-
- def _get_ccavenue_urls(self, environment):
- """ CCAvenue URLs"""
- if environment == 'prod':
- return {'ccavenue_form_url': 'https://secure.ccavenue.com/transaction/transaction.do?command=initiateTransaction'}
- else:
- return {'ccavenue_form_url': 'https://test.ccavenue.com/transaction/transaction.do?command=initiateTransaction'}
-
- def _ccavenue_pad(self, data):
- length = 16 - (len(data) % 16)
- data += chr(length) * length
- return data
-
- @api.multi
- def _ccavenue_encrypt_text(self, plaintext):
- self.ensure_one()
- iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
- plaintext = self._ccavenue_pad(plaintext)
- dec_digest = md5(self.ccavenue_working_key.encode('utf-8')).digest()
- enc_cipher = AES.new(dec_digest, AES.MODE_CBC, iv)
- encrypted_text = hexlify(enc_cipher.encrypt(plaintext)).decode('utf-8')
- return encrypted_text
-
- @api.multi
- def _ccavenue_decrypt_text(self, ciphertext):
- self.ensure_one()
- iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
- dec_digest = md5(self.ccavenue_working_key.encode('utf-8')).digest()
- dec_cipher = AES.new(dec_digest, AES.MODE_CBC, iv)
- decrypted_text = dec_cipher.decrypt(unhexlify(ciphertext)).decode('utf-8')
- return decrypted_text
-
- @api.multi
- def ccavenue_form_generate_values(self, values):
- self.ensure_one()
- base_url = self.env['ir.config_parameter'].get_param('web.base.url')
- ccavenue_values = dict(access_code=self.ccavenue_access_code,
- merchant_id=self.ccavenue_merchant_id,
- order_id=values.get('reference'),
- currency=values.get('currency').name,
- amount=values.get('amount'),
- redirect_url=urls.url_join(base_url, CCAvenueController._return_url),
- cancel_url=urls.url_join(base_url, CCAvenueController._cancel_url),
- language='EN',
- customer_identifier=values.get('partner_email'),
- delivery_name=values.get('partner_name'),
- delivery_address=values.get('partner_address'),
- delivery_city=values.get('partner_city'),
- delivery_state=values.get('partner_state').name,
- delivery_zip=values.get('partner_zip'),
- delivery_country=values.get('partner_country').name,
- delivery_tel=values.get('partner_phone'),
- billing_name=values.get('billing_partner_name'),
- billing_address=values.get('billing_partner_address'),
- billing_city=values.get('billing_partner_city'),
- billing_state=values.get('billing_partner_state').name,
- billing_zip=values.get('billing_partner_zip'),
- billing_country=values.get('billing_partner_country').name,
- billing_tel=values.get('billing_partner_phone'),
- billing_email=values.get('billing_partner_email'),
- )
- ccavenue_values['encRequest'] = self._ccavenue_encrypt_text(urls.url_encode(ccavenue_values))
- return ccavenue_values
-
- @api.multi
- def ccavenue_get_form_action_url(self):
- self.ensure_one()
- return self._get_ccavenue_urls(self.environment)['ccavenue_form_url']
-
-
-class PaymentTransaction(models.Model):
- _inherit = 'payment.transaction'
-
- # Override form_feedback
- @api.model
- def form_feedback(self, data, acquirer_name):
- if acquirer_name == 'ccavenue':
- acquirer = self.env['payment.acquirer'].search([('provider', '=', 'ccavenue')], limit=1)
- data = acquirer._ccavenue_decrypt_text(data.get('encResp'))
- data = urls.url_decode(data)
- return super(PaymentTransaction, self).form_feedback(data=data, acquirer_name=acquirer_name)
-
- @api.model
- def _ccavenue_form_get_tx_from_data(self, data):
- """ Given a data dict coming from ccavenue, verify it and find the related
- transaction record. """
- reference = data.get('order_id')
- if not reference:
- raise ValidationError(_('CCAvenue: received data with missing reference (%s)') % (reference))
-
- transaction = self.search([('reference', '=', reference)])
- if not transaction or len(transaction) > 1:
- error_msg = _('CCAvenue: received data for reference %s') % (reference)
- if not transaction:
- error_msg += _('; no order found')
- else:
- error_msg += _('; multiple order found')
- raise ValidationError(error_msg)
- return transaction
-
- @api.model
- def _ccavenue_form_get_invalid_parameters(self, data):
- invalid_parameters = []
- if self.acquirer_reference and data.get('order_id') != self.acquirer_reference:
- invalid_parameters.append(
- ('Transaction Id', data.get('order_id'), self.acquirer_reference))
- # check what is buyed
- if float_compare(float(data.get('amount', '0.0')), self.amount, precision_digits=2) != 0:
- invalid_parameters.append(('Amount', data.get('amount'), '%.2f' % self.amount))
- return invalid_parameters
-
- @api.model
- def _ccavenue_form_validate(self, data):
- if self.state == 'done':
- _logger.warning('CCAvenue: trying to validate an already validated tx (ref %s)' % self.reference)
- return True
- status_code = data.get('order_status')
- if status_code == "Success":
- _logger.info('Validated CCAvenue payment for tx %s: set as done' % (self.reference))
- self.write({'acquirer_reference': data.get('tracking_id')})
- self._set_transaction_done()
- return True
- elif status_code == "Aborted":
- _logger.info('Aborted CCAvenue payment for tx %s: set as cancel' % (self.reference))
- self.write({'acquirer_reference': data.get('tracking_id'), 'state_message': data.get('status_message')})
- self._set_transaction_cancel()
- return False
- else:
- error = data.get('failure_message') or data.get('status_message')
- _logger.info(error)
- self.write({'acquirer_reference': data.get('tracking_id')})
- self._set_transaction_error(error)
- return False
diff --git a/addons/payment_ccavenue/static/description/icon.png b/addons/payment_ccavenue/static/description/icon.png
deleted file mode 100644
index 368376d35385f4a0367c29442af7c7840986bc6e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 418009
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