# Import from shop.payments from cash_views import CashPayment_Configure, CashPayment_End from cash_views import CashPayment_RecordView, CashPayment_RecordEdit from shop.payments.payment_way import PaymentWay from shop.payments.registry import register_payment_way class CashPayment(PaymentWay): class_id = 'cash-payment' class_title = MSG(u'Payment by cash') class_description = MSG(u'Payment by cash') class_views = ['configure', 'payments'] # Views configure = CashPayment_Configure() end = CashPayment_End() # Order admin views order_view = CashPayment_RecordView order_edit_view = CashPayment_RecordEdit @classmethod def get_metadata_schema(cls): return merge_dicts(PaymentWay.get_metadata_schema(), address=Unicode) register_resource_class(CashPayment) register_payment_way(CashPayment)
'PBX_RANG', 'PBX_DIFF', 'PBX_AUTOSEULE']: kw[key] = self.get_property(key) kw['PBX_DEVISE'] = shop.get_property('devise') # PBX_PORTEUR kw['PBX_PORTEUR'] = context.user.get_property('email') # En mode test: if not self.get_property('real_mode'): kw.update(self.test_configuration) # Attributes attributes = ['%s=%s' % (x[0], x[1]) for x in kw.items()] # Build cmd cmd = '%s %s' % (cgi_path, ' '.join(attributes)) # Call the CGI file = popen(cmd) # Check if all is ok result = file.read() html = match ('.*?<HEAD>(.*?)</HTML>', result, DOTALL) if html is None: raise ValueError, u"Error, payment module can't be load" # We return the payment widget html = html.group(1) # Encapsulate in pay view view = payments.pay_view(body=HTMLFile(string=html).events) return view.GET(self, context) register_resource_class(Paybox) register_payment_way(Paybox) register_resource_class(PayboxTable)
def _show_payment_form(self, context, payment): percent = self.get_property('percent') payment['mode'] = 'paybox' # XXX (Can have another name ?) if self.get_property('pay_tax'): payment['amount'] = payment['amount'] * (percent / decimal('100.0')) else: payment['amount'] = payment['amount_without_tax'] * (percent / decimal('100.0')) return self.parent.show_payment_form(context, payment) def get_payment_way_description(self, context, total_amount): msg = MSG(u"Pay {percent}% of {original_amount} now ({amount})") percent = self.get_property('percent') if self.get_property('pay_tax'): total_amount = total_amount['with_tax'].split(' ')[0] total_amount = decimal(total_amount) else: total_amount = total_amount['without_tax'].split(' ')[0] total_amount = decimal(total_amount) amount = total_amount * (percent / decimal('100.0')) msg = msg.gettext(percent=percent, original_amount=format_price(total_amount), amount=format_price(amount)) return list(XMLParser(msg.encode('utf-8'))) + self.get_property('data') register_resource_class(Deposit) register_payment_way(Deposit)
class CheckPayment(PaymentWay): class_id = 'check-payment' class_title = MSG(u'Payment by check') class_description = MSG(u'Payment by check') class_views = ['configure', 'payments'] # XXX found a good logo logo = '/ui/backoffice/payments/paybox/images/logo.png' payment_table = CheckPaymentTable # Views configure = CheckPayment_Configure() end = CheckPayment_End() # Order admin views order_view = CheckPayment_RecordView order_edit_view = CheckPayment_RecordEdit @classmethod def get_metadata_schema(cls): return merge_dicts(PaymentWay.get_metadata_schema(), to=Unicode, address=Unicode) register_resource_class(CheckPayment) register_resource_class(CheckPaymentTable) register_payment_way(CheckPayment)
print 'SIGNATURE ', sign.hexdigest() return sign.hexdigest() def _show_payment_form(self, context, payment): kw = { 'amout': '25', 'currency': '978', # Euros, 'capture_delay': '3', 'ctx_mode': 'TEST', 'payment_cards': 'AMEX;CB;MASTERCARD;VISA', 'payment_config': 'SINGLE', 'site_id': '12345678', 'trans_date': '20100303105332', 'url_return': 'http://shop:8080', 'trans_id': '1', 'validation_mode': '0', #Validation automatique 'version': 'V1' } # Get signature kw['signature'] = self.get_signature(kw) # Return URI uri = get_reference(self.uri) uri.query = kw print '======>', uri return context.uri.resolve(uri) register_resource_class(SystemPay) register_payment_way(SystemPay) #register_resource_class(PayboxTable)
def _show_payment_form(self, context, payment): amount_available = self.get_credit_available_for_user(context.user.name) remaining_to_pay = payment['amount'] - amount_available # Partial payment if remaining_to_pay > decimal('0'): # Delete credit users_credit = self.get_resource('users-credit') results = users_credit.handler.search(user=context.user.name) if len(results) == 0: raise ValueError, 'Error, credit do not exist' record = results[0] old_amount = users_credit.handler.get_record_value(record, 'amount') new_amount = old_amount - payment['amount'] if new_amount < decimal('0'): users_credit.del_record(record.id) else: kw = {'amount': new_amount} users_credit.update_recod(record.id, **kw) # Encapsulate in pay view payment['mode'] = 'paybox' # XXX (Can have another name ?) payment['amount'] = remaining_to_pay return self.parent.show_payment_form(context, payment) # Complete payment return PaymentWay._show_payment_form(self, context, payment) register_resource_class(CreditPayment) register_payment_way(CreditPayment)
from shop.payments.payment_way import PaymentWay from shop.payments.registry import register_payment_way class TransferPayment(PaymentWay): class_id = 'transfer-payment' class_title = MSG(u'Payment by transfer') class_description = MSG(u'Payment by transfer') class_views = ['configure', 'payments'] logo = '/ui/backoffice/payments/transfer/images/logo.png' # Views configure = TransferPayment_Configure() end = TransferPayment_End() # Order admin views order_view = TransferPayment_RecordView order_edit_view = TransferPayment_RecordEdit @classmethod def get_metadata_schema(cls): return merge_dicts(PaymentWay.get_metadata_schema(), RIB=RIB, IBAN=IBAN) register_resource_class(TransferPayment) register_payment_way(TransferPayment)
from shop.payments.registry import register_payment_way class TransferPayment(PaymentWay): class_id = 'transfer-payment' class_title = MSG(u'Payment by transfer') class_description = MSG(u'Payment by transfer') class_views = ['configure', 'payments'] logo = '/ui/backoffice/payments/transfer/images/logo.png' # Views configure = TransferPayment_Configure() end = TransferPayment_End() # Order admin views order_view = TransferPayment_RecordView order_edit_view = TransferPayment_RecordEdit @classmethod def get_metadata_schema(cls): return merge_dicts(PaymentWay.get_metadata_schema(), RIB=RIB, IBAN=IBAN) register_resource_class(TransferPayment) register_payment_way(TransferPayment)
return sign.hexdigest() def _show_payment_form(self, context, payment): kw = {'amout': '25', 'currency': '978', # Euros, 'capture_delay': '3', 'ctx_mode': 'TEST', 'payment_cards': 'AMEX;CB;MASTERCARD;VISA', 'payment_config': 'SINGLE', 'site_id': '12345678', 'trans_date': '20100303105332', 'url_return': 'http://shop:8080', 'trans_id': '1', 'validation_mode': '0', #Validation automatique 'version': 'V1'} # Get signature kw['signature'] = self.get_signature(kw) # Return URI uri = get_reference(self.uri) uri.query = kw print '======>', uri return context.uri.resolve(uri) register_resource_class(SystemPay) register_payment_way(SystemPay) #register_resource_class(PayboxTable)
from cash_views import CashPayment_RecordView, CashPayment_RecordEdit from shop.payments.payment_way import PaymentWay from shop.payments.registry import register_payment_way class CashPayment(PaymentWay): class_id = 'cash-payment' class_title = MSG(u'Payment by cash') class_description = MSG(u'Payment by cash') class_views = ['configure', 'payments'] # Views configure = CashPayment_Configure() end = CashPayment_End() # Order admin views order_view = CashPayment_RecordView order_edit_view = CashPayment_RecordEdit @classmethod def get_metadata_schema(cls): return merge_dicts(PaymentWay.get_metadata_schema(), address=Unicode) register_resource_class(CashPayment) register_payment_way(CashPayment)