Exemple #1
0
# 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)
Exemple #2
0
                    '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)
Exemple #3
0
    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)
Exemple #4
0
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)
Exemple #5
0
        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)
Exemple #6
0

    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)
Exemple #7
0
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)
Exemple #8
0
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)
Exemple #9
0
        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)
Exemple #10
0
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)