def authorize_create(self, values): if values.get('cc_number'): values['cc_number'] = values['cc_number'].replace(' ', '') acquirer = self.env['payment.acquirer'].browse( values['acquirer_id']) expiry = str(values['cc_expiry'][:2]) + str( values['cc_expiry'][-2:]) partner = self.env['res.partner'].browse(values['partner_id']) transaction = AuthorizeAPI(acquirer) res = transaction.create_customer_profile(partner, values['cc_number'], expiry, values['cc_cvc']) if res.get('profile_id') and res.get('payment_profile_id'): return { 'authorize_profile': res.get('profile_id'), 'name': 'XXXXXXXXXXXX%s - %s' % (values['cc_number'][-4:], values['cc_holder_name']), 'acquirer_ref': res.get('payment_profile_id'), } else: raise ValidationError( _('The Customer Profile creation in Authorize.NET failed.') ) else: return values
def authorize_s2s_do_transaction(self, **data): self.ensure_one() transaction = AuthorizeAPI(self.acquirer_id) if self.acquirer_id.auto_confirm != "authorize": res = transaction.auth_and_capture(self.payment_token_id, self.amount, self.reference) else: res = transaction.authorize(self.payment_token_id, self.amount, self.reference) return self._authorize_s2s_validate_tree(res)
def _authorize_form_validate(self, data): if self.state == 'done': _logger.warning('Authorize: trying to validate an already validated tx (ref %s)' % self.reference) return True status_code = int(data.get('x_response_code', '0')) if status_code == self._authorize_valid_tx_status: if data.get('x_type').lower() in ['auth_capture', 'prior_auth_capture']: self.write({ 'state': 'done', 'acquirer_reference': data.get('x_trans_id'), 'date_validate': fields.Datetime.now(), }) elif data.get('x_type').lower() in ['auth_only']: self.write({ 'state': 'authorized', 'acquirer_reference': data.get('x_trans_id'), }) if self.partner_id and not self.payment_token_id and \ (self.type == 'form_save' or self.acquirer_id.save_token == 'always'): transaction = AuthorizeAPI(self.acquirer_id) res = transaction.create_customer_profile_from_tx(self.partner_id, self.acquirer_reference) if res: token_id = self.env['payment.token'].create({ 'authorize_profile': res.get('profile_id'), 'name': res.get('name'), 'acquirer_ref': res.get('payment_profile_id'), 'acquirer_id': self.acquirer_id.id, 'partner_id': self.partner_id.id, }) self.payment_token_id = token_id return True elif status_code == self._authorize_pending_tx_status: self.write({ 'state': 'pending', 'acquirer_reference': data.get('x_trans_id'), }) return True elif status_code == self._authorize_cancel_tx_status: self.write({ 'state': 'cancel', 'acquirer_reference': data.get('x_trans_id'), }) return True else: error = data.get('x_response_reason_text') _logger.info(error) self.write({ 'state': 'error', 'state_message': error, 'acquirer_reference': data.get('x_trans_id'), }) return False
def _authorize_form_validate(self, data): if self.state == 'done': _logger.warning('Authorize: trying to validate an already validated tx (ref %s)' % self.reference) return True status_code = int(data.get('x_response_code', '0')) if status_code == self._authorize_valid_tx_status: if data.get('x_type').lower() in ['auth_capture', 'prior_auth_capture']: self.write({ 'state': 'done', 'acquirer_reference': data.get('x_trans_id'), 'date_validate': fields.Datetime.now(), }) elif data.get('x_type').lower() in ['auth_only']: self.write({ 'state': 'authorized', 'acquirer_reference': data.get('x_trans_id'), }) if self.partner_id and not self.payment_token_id and \ (self.type == 'form_save' or self.acquirer_id.save_token == 'always'): transaction = AuthorizeAPI(self.acquirer_id) res = transaction.create_customer_profile_from_tx(self.partner_id, self.acquirer_reference) token_id = self.env['payment.token'].create({ 'authorize_profile': res.get('profile_id'), 'name': res.get('name'), 'acquirer_ref': res.get('payment_profile_id'), 'acquirer_id': self.acquirer_id.id, 'partner_id': self.partner_id.id, }) self.payment_token_id = token_id return True elif status_code == self._authorize_pending_tx_status: self.write({ 'state': 'pending', 'acquirer_reference': data.get('x_trans_id'), }) return True elif status_code == self._authorize_cancel_tx_status: self.write({ 'state': 'cancel', 'acquirer_reference': data.get('x_trans_id'), }) return True else: error = data.get('x_response_reason_text') _logger.info(error) self.write({ 'state': 'error', 'state_message': error, 'acquirer_reference': data.get('x_trans_id'), }) return False
def authorize_create(self, values): if values.get('cc_number'): values['cc_number'] = values['cc_number'].replace(' ', '') acquirer = self.env['payment.acquirer'].browse(values['acquirer_id']) expiry = str(values['cc_expiry'][:2]) + str(values['cc_expiry'][-2:]) partner = self.env['res.partner'].browse(values['partner_id']) transaction = AuthorizeAPI(acquirer) res = transaction.create_customer_profile(partner, values['cc_number'], expiry, values['cc_cvc']) if res.get('profile_id') and res.get('payment_profile_id'): return { 'authorize_profile': res.get('profile_id'), 'name': 'XXXXXXXXXXXX%s - %s' % (values['cc_number'][-4:], values['cc_holder_name']), 'acquirer_ref': res.get('payment_profile_id'), } else: raise ValidationError('The Customer Profile creation in Authorize.NET failed.') else: return values
def authorize_s2s_void_transaction(self): self.ensure_one() transaction = AuthorizeAPI(self.acquirer_id) tree = transaction.void(self.acquirer_reference or '') return self._authorize_s2s_validate_tree(tree)
def authorize_s2s_capture_transaction(self): self.ensure_one() transaction = AuthorizeAPI(self.acquirer_id) tree = transaction.capture(self.acquirer_reference or '', self.amount) return self._authorize_s2s_validate_tree(tree)
def authorize_test_credentials(self): self.ensure_one() transaction = AuthorizeAPI(self.acquirer_id) return transaction.test_authenticate()
def authorize_s2s_void_transaction(self): self.ensure_one() transaction = AuthorizeAPI(self.acquirer_id) tree = transaction.void(self.acquirer_reference) return self._authorize_s2s_validate_tree(tree)
def authorize_s2s_capture_transaction(self): self.ensure_one() transaction = AuthorizeAPI(self.acquirer_id) tree = transaction.capture(self.acquirer_reference, self.amount) return self._authorize_s2s_validate_tree(tree)