Ejemplo n.º 1
0
def confirm(request):
    # The view for payment confirmation
    page_title = "Confirmation"
    if request.method == 'POST':
        payment_form = PaymentForm(request.POST)
        if payment_form.is_valid():
            params_dict = get_posted_parameters(payment_form)
            signature = sign(params_dict)
            params_dict['signature'] = signature
            confirmation_form = ConfirmationForm(params_dict)
            return render_to_response('confirm.html', {
                'page_title': page_title,
                'confirmation_form': confirmation_form,
                'params_dict': params_dict,
                'signature': signature
            },
                                      context_instance=RequestContext(request))
        else:
            from configuration import *
            page_title = "Payment"
            return render_to_response('pay.html', {
                'page_title': page_title,
                'payment_form': payment_form
            },
                                      context_instance=RequestContext(request))
    else:
        return pay(request)
Ejemplo n.º 2
0
def dpn_asks_for_money(request):
    if request.method == 'GET':
        alipay_form = PaymentForm(auto_id=False)
        context = {
            "alipay_form": alipay_form,
        }
        return render(request, "pay/payment.html", context)
    # POST method
    site = Site.objects.get_current()
    pay_url = 'http://%s/' % (site.domain)
    form = PaymentForm(request.POST, auto_id=False)
    if not form.is_valid():
        context = {
            "alipay_form": form,
        }
        return render(request, "pay/payment.html", context)
    # alipay form
    item_name = ("Django Alipay example")
    alipay_dict = {
        # base
        "_input_charset":
        'utf-8',
        'notify_url':
        '%salipay/dpn/' % pay_url,
        'return_url':
        '%salipay/dpn/return/' % pay_url,
        # business
        #'seller_email': '',
        'out_trade_no':
        uuid.uuid4().hex,
        'subject':
        item_name,
        'price':
        form.cleaned_data['price'],
        'quantity':
        form.cleaned_data['quantity'],
        # direct pay
        #'extra_common_param': '%s|%d'% (form.cleaned_data['price'], form.cleaned_data['quantity']),
        # partner trade
        'body':
        '%s|%d' % (form.cleaned_data['price'], form.cleaned_data['quantity']),
    }
    alipay_form = AliPayDirectPayForm(auto_id=False, initial=alipay_dict)
    context = {
        'payment_title': ('AliPay Payment'),
        'item_name': item_name,
        'form': form,
        'action': alipay_form.get_action(),
        'paid_form': alipay_form,
    }
    data = get_form_data(alipay_form)
    alipay_form['sign'].field.initial = make_sign(data)
    return render(request, "pay/preview.html", context)
Ejemplo n.º 3
0
def confirm(request):
    # The view for payment confirmation
    page_title = "Confirmation"
    if request.method == 'POST':
        payment_form = PaymentForm(request.POST)
        if payment_form.is_valid():
            params_dict = get_posted_parameters(payment_form)
            signature = sign(params_dict)
            params_dict['signature'] = signature
            confirmation_form = ConfirmationForm(params_dict)
            return render_to_response('confirm.html', {'page_title': page_title, 'confirmation_form': confirmation_form, 'params_dict': params_dict, 'signature': signature}, context_instance=RequestContext(request))
        else:
            from configuration import *
            page_title = "Payment"
            return render_to_response('pay.html', {'page_title': page_title, 'payment_form': payment_form}, context_instance=RequestContext(request))
    else:
        return pay(request)
Ejemplo n.º 4
0
def asks_for_money(request):
    if request.method == 'GET':
        alipay_form = PaymentForm(auto_id=False)
        context = {
                "alipay_form": alipay_form,
                }
        return render_to_response("pay/payment.html", context, context_instance=RequestContext(request))
    # POST method
    site = Site.objects.get_current()
    pay_url = 'http://%s/'%(site.domain)
    form = PaymentForm(request.POST, auto_id=False)
    if not form.is_valid():
        context = {
                "alipay_form": form,
                }
        return render_to_response("pay/payment.html", context, context_instance=RequestContext(request))
    # alipay form
    item_name = ("Django Alipay example")
    alipay_dict = {
            # base
            "_input_charset": 'utf-8',
            'notify_url': '%salipay/ptn/'% pay_url,
            'return_url': '%salipay/return/'% pay_url,
            # business
            #'seller_email': '',
            'out_trade_no': uuid.uuid4().hex,
            'subject': item_name,
            'price': form.cleaned_data['price'],
            'quantity': form.cleaned_data['quantity'],
            # direct pay
            #'extra_common_param': '%s|%d'% (form.cleaned_data['price'], form.cleaned_data['quantity']),
            # partner trade
            'body': '%s|%d'% (form.cleaned_data['price'], form.cleaned_data['quantity']),
            }
    alipay_form = AliPayPartnerTradeForm(auto_id=False, initial=alipay_dict)
    context = {
            'payment_title': ('AliPay Payment'),
            'item_name': item_name,
            'form': form,
            'action': alipay_form.get_action(),
            'paid_form': alipay_form,
            }
    data = get_form_data(alipay_form)
    alipay_form['sign'].field.initial = make_sign(data)
    return render_to_response("pay/preview.html", context, context_instance=RequestContext(request))
Ejemplo n.º 5
0
 def test_payments_form_with_missing_last_name(self):
     form = PaymentForm({
         'first_name': 'eric',
         'address_line_1': '28201 E. Bonanza St.',
         'address_line_2': 'South Park',
         'address_line_3': '',
         'address_line_4': '',
         'post_code': 'er1 1ic',
         'email_address': '*****@*****.**',
         'credit_card_number': '4242424242424242',
         'cvv': '123',
         'expiry_month': 'Jan',
         'expiry_year': '2037',
         'stripe_id': 'test_stripe_id'
     })
     self.assertFalse(form.is_valid())
     self.assertRaisesMessage(forms.ValidationError,
                              "Please fill in this field",
                              form.full_clean())
Ejemplo n.º 6
0
def pay(request):
  """
  A view that handles a payment request. It checks the HTTP method and the payment
  checksum and in successful cases renders the payment "confirmation" page.
  """
  if request.method != 'POST': # only HTTP POSTs are allowed
    return HttpResponse("%s Not Allowed"%request.method, status=405)
  try:
    checksum_ok = check_md5(request.POST)
  except: # the md5 function can fail with non-ascii data
    checksum_ok = False
  if not checksum_ok:
    return HttpResponse("The checksum does not match the data", status=400)
  payment_form = PaymentForm(request.POST)
  if payment_form.is_valid():
    payment = payment_form.save()
    dev = True if 'dev' in request.POST else False
    return render_to_response('payment/pay.html', {'payment': payment, 'dev': dev},
              context_instance=RequestContext(request))
  else:
    return HttpResponse("Invalid or missing data POSTed", status=400)
Ejemplo n.º 7
0
Archivo: views.py Proyecto: mrb101/pos
def checkout(request, pk):
    template = 'pos/checkout.html'
    form = PaymentForm()
    table = pk
    try:
        order = Order.objects.filter(table=table).latest('created')
    except Order.DoesNotExist:
        order = None
    if order == None or order.paid == True:
        messages.success(request, "No open orders on this table")
        return redirect("/cash")
    elif order.paid == False:
        orders = OrderItem.objects.filter(order=order)
        total = 0
        for item in orders:
            total += item.total_price
    pay_form = PaymentForm(request.POST or None)
    if request.method == 'POST':
        if pay_form.is_valid():
            if request.POST.get('type') == 'VISA':
                addon = (total * 5) / 100
                total = total + addon
                order.paid = True
                order.save()
                messages.success(request, total)
                return redirect("/cash")
            back = int(request.POST.get('cash')) - total
            log = "Return" + " " + str(back)
            order.paid = True
            order.save()
            messages.success(request, log)
            return redirect("/cash")
    context = {'total': total,
               'table': table,
               'orders': orders,
               'order': order,
               'form': form}
    return render(request, template, context)
def pay(request):
    """
  A view that handles a payment request. It checks the HTTP method and the payment
  checksum and in successful cases renders the payment "confirmation" page.
  """
    if request.method != 'POST':  # only HTTP POSTs are allowed
        return HttpResponse("%s Not Allowed" % request.method, status=405)
    try:
        checksum_ok = check_md5(request.POST)
    except:  # the md5 function can fail with non-ascii data
        checksum_ok = False
    if not checksum_ok:
        return HttpResponse("The checksum does not match the data", status=400)
    payment_form = PaymentForm(request.POST)
    if payment_form.is_valid():
        payment = payment_form.save()
        dev = True if 'dev' in request.POST else False
        return render_to_response('payment/pay.html', {
            'payment': payment,
            'dev': dev
        },
                                  context_instance=RequestContext(request))
    else:
        return HttpResponse("Invalid or missing data POSTed", status=400)
Ejemplo n.º 9
0
def payment(request,reservation_id):
    reservation= get_object_or_404(Reservation, pk=reservation_id)
    user= request.user
    if user != reservation.user or reservation.is_cancelled():
        return HttpResponseForbidden()
    if reservation.is_paid():
        redirect_url = reverse('reservation_info',kwargs={'reservation_id':reservation.pk})
        return HttpResponseRedirect(redirect_url)       

    stripe_key="pk_test_LTzee3NEdHl6M7MCaCJWWoch"
    invoiceId= b64encode('invoice='+unicode(reservation.user)+","+unicode(reservation.pk))
    customId= b64encode('reservation='+unicode(reservation.user)+","+unicode(reservation.pk))
    print "InvoiceId=" + invoiceId
    print "CustomId=" + customId

    paypal_dict = {
        "business": settings.PAYPAL_RECEIVER_EMAIL,
        "amount": reservation.value,
        "item_name": unicode(reservation),
        "invoice": invoiceId,
        "notify_url": settings.SITE_URL + reverse('paypal-ipn'),
        "return_url": settings.SITE_URL + reverse('paypal_return', kwargs={'reservation_id':reservation_id}),
        "cancel_return": settings.SITE_URL + reverse('reservation_payment', kwargs={'reservation_id':reservation_id}),#paypal_cancel_return'),
        "custom": customId,  # Custom command to correlate to some function later (optional)
        "rm":2,
    }

    # Create the instance.
    paypal_form = PayPalPaymentsForm(initial=paypal_dict)



    data={
        'reservation':reservation,
        'amount':int(reservation.value*100),
        'error_exist': False,
        'error_msg': '',
        'stripe_key': stripe_key,
        'paypal_form':paypal_form,
    }

    if request.method == 'POST': #Stripe processing only
        print "Method is POST"
        form = PaymentForm(request.POST)
        if form.is_valid():
            print "Form is valid"
            token = form.cleaned_data['stripeToken']           
            stripe.api_key = "sk_test_HthF4Hs8I4oGjA39RFdTDwko"
            try:
                charge = stripe.Charge.create(
                    amount=int(reservation.value*100),
                    currency="usd",
                    source=token,
                    description=unicode(reservation)
                )
                card_error=False
            except stripe.error.CardError,e:
                card_error=True
                card_error_msg=unicode(e)
                print "Error: exception " + unicode(e)
            if card_error is False:
                print "No Error" 
                reservation.pay(confirmation=json.dumps(charge),choice='S')
                redirect_url = reverse('payment_success',kwargs={'reservation_id':reservation.pk})
                return HttpResponseRedirect(redirect_url)                 
            else:
                print "Error"
                data['error_msg']=card_error_msg
                data['error_exist']=True
Ejemplo n.º 10
0
def asks_for_money(request):
    if request.method == 'GET':
        alipay_form = PaymentForm(auto_id=False)
        context = {
            "alipay_form": alipay_form,
        }
        return render_to_response("pay/payment.html",
                                  context,
                                  context_instance=RequestContext(request))
    # POST method
    site = Site.objects.get_current()
    pay_url = 'http://%s/' % (site.domain)
    form = PaymentForm(request.POST, auto_id=False)
    if not form.is_valid():
        context = {
            "alipay_form": form,
        }
        return render_to_response("pay/payment.html",
                                  context,
                                  context_instance=RequestContext(request))
    # alipay form
    item_name = ("Django Alipay example")
    alipay_dict = {
        # base
        "_input_charset":
        'utf-8',
        'notify_url':
        '%salipay/dpn/' % pay_url,
        'return_url':
        '%salipay/return/' % pay_url,
        'service':
        SERVICE[0],
        # business
        #'seller_email': '',
        'out_trade_no':
        uuid.uuid4().hex,
        'subject':
        "xxx",
        'price':
        form.cleaned_data['price'],
        'quantity':
        form.cleaned_data['quantity'],
        'total_fee':
        form.cleaned_data['price'] * form.cleaned_data['quantity'],
        # direct pay
        #'extra_common_param': '%s|%d'% (form.cleaned_data['price'], form.cleaned_data['quantity']),
        # partner trade
        'body':
        '%s|%d' % (form.cleaned_data['price'], form.cleaned_data['quantity']),
    }
    alipay_form = AliPayPartnerTradeForm(auto_id=False, initial=alipay_dict)

    data = get_form_data(alipay_form)
    alipay_form['sign'].field.initial = make_sign(data)
    data = get_form_data(alipay_form)

    url = ALIPAY_GATEWAY + "?"
    for p in data:
        url = url + p + "=" + str(data[p]) + "&"
    url = url[:-1]

    context = {
        'payment_title': ('AliPay Payment'),
        'item_name': item_name,
        'form': form,
        'action': url,
        'paid_form': alipay_form,
    }
    return render_to_response("pay/preview.html",
                              context,
                              context_instance=RequestContext(request))