Exemplo n.º 1
0
    def prepare_order(self, request):

        shopping_cart = Cart(request)

        if (not request.session.has_key('order_id')) or request.session['order_id'] is None:
            order = self.create_new_order(request, shopping_cart)
        else:
            try:
                order = Order.objects.get(pk=request.session['order_id'])
            except ObjectDoesNotExist:
                order = self.create_new_order(request, shopping_cart)

        # update order items
        order.fill_items()

        order.ip_address = get_client_ip(request)

        if not order.email and not request.user.is_anonymous():
            order.email = request.user.email
            order.save()

        if not order.user and not request.user.is_anonymous():
            order.user = request.user.get_profile()
            order.save()

        return order
Exemplo n.º 2
0
    def get(self, request, *args, **kwargs):

        method = self.load_method(kwargs['method'])
        settings = method.behavior().config

        order = Order.objects.get(pk=request.session['order_id'])
    #    order.mark_confirmed()

        detalisation = order.get_detalisation()

    #    for row in detalisation['rows']:
    #        ulink_order.items.append(UlinkOrderItem(smart_str(row['title']), '', str(row['price'])))


        # Preparing the data that we are sending to DIBS
        # Order total to be sent to DIBS must be an int specified in cents or
        # equivalent.
        order_total = int(detalisation['full_total'] * 100)
        order_id = order.id

        # Create md5 hash to make payment secure:
        md5_key = md5(settings['MD52'] +
                        md5(settings['MD51'] + 'merchant=%s&orderid=%s&currency=%s&amount=%s' % (settings['MERCHANT'], order_id, settings['CURRENCY'], order_total)))

        # Create the cancel and accept url, based on the request to get the host
        # and reverse to get the url.
        #        cancelurl = 'http://' + request.META['HTTP_HOST'] + reverse('satchmo_checkout-step1')
        #        accepturl = 'http://' + request.META['HTTP_HOST'] + reverse('DIBS_satchmo_checkout-success')
        #        callbackurl = 'http://' + request.META['HTTP_HOST'] + reverse('DIBS_satchmo_checkout-step4') + '?order_id=' + str(order.id)
        #
        cancelurl = 'http://' + settings['CALLBACK_DOMAIN'] + reverse('dibs_payment_cancel', kwargs={'method': method.slug})
        accepturl = 'http://' + settings['CALLBACK_DOMAIN'] + reverse('dibs_payment_accept', kwargs={'method': method.slug})
        callbackurl = 'http://' + settings['CALLBACK_DOMAIN'] + reverse('dibs_payment_callback', kwargs={'method': method.slug})

        data = [
            ('merchant', settings['MERCHANT']),
            ('amount', order_total),
            ('currency', settings['CURRENCY']),
            ('orderid', order_id),
            ('accepturl', accepturl),
            ('cancelurl', cancelurl),
            ('callbackurl', callbackurl),
            ('ip', get_client_ip(request)),
            #('uniqueoid', 'yes'),
            ('lang', get_language()),
            ('md5key', md5_key),
            ('calcfee', 'yes'),
            # Currently not implemented in the flex window.
            # ('delivery1', order.ship_addressee),
            # ('delivery2', order.ship_street1),
            # ('delivery3',  order.ship_postal_code + ' ' +  order.ship_city)
            ('capturenow', 'yes'),
        ]

        log_payment(request, 'dibs', 'pay_start', data)

    #    if settings['CAPTURE']:
    #    data.append(('capturenow', 'yes'))

        if not settings['LIVE']:
            data.append(('test', 'yes'))

        send_data = urllib.urlencode(data)

        return HttpResponseRedirect('https://payment.architrade.com/paymentweb/start.action?' + send_data)