Private
Public Access
1
0

test payments working (sort of)

This commit is contained in:
Sander Roosendaal
2018-12-14 16:53:34 +01:00
parent ca823532e0
commit 6b1a1b1702
6 changed files with 404 additions and 2 deletions

View File

@@ -28,6 +28,7 @@ import isodate
import re
import cgi
from icalendar import Calendar, Event
import braintree
from django.shortcuts import render
from django.template.loader import render_to_string
@@ -50,7 +51,7 @@ from rowers.forms import (
RaceResultFilterForm,PowerIntervalUpdateForm,FlexAxesForm,
FlexOptionsForm,DataFrameColumnsForm,OteWorkoutTypeForm,
MetricsForm,DisqualificationForm,disqualificationreasons,
disqualifiers,SearchForm,
disqualifiers,SearchForm,BrainTreeForm
)
from django.core.urlresolvers import reverse, reverse_lazy
@@ -139,6 +140,7 @@ from rowsandall_app.settings import (
UNDERARMOUR_CLIENT_SECRET,UNDERARMOUR_CLIENT_KEY,
RUNKEEPER_CLIENT_ID,RUNKEEPER_REDIRECT_URI,RUNKEEPER_CLIENT_SECRET,
TP_CLIENT_ID,TP_REDIRECT_URI,TP_CLIENT_KEY,TP_CLIENT_SECRET,
BRAINTREE_MERCHANT_ID,BRAINTREE_PUBLIC_KEY,BRAINTREE_PRIVATE_KEY
)
from rowers.tasks_standalone import addcomment2
@@ -1027,6 +1029,87 @@ def add_defaultfavorites(r):
f.save()
return 1
# Experimental - Payments
@login_required()
def payments_view(request):
r = getrequestrower(request)
gateway = braintree.BraintreeGateway(
braintree.Configuration(
braintree.Environment.Sandbox,
merchant_id=BRAINTREE_MERCHANT_ID,
public_key=BRAINTREE_PUBLIC_KEY,
private_key=BRAINTREE_PRIVATE_KEY,
)
)
# add code to store customer_id
client_token = gateway.client_token.generate({
"customer_id": r.id,
})
return render(request,
"payments.html",
{
'client_token':client_token,
})
@login_required()
def checkouts_view(request):
r = getrequestrower(request)
if request.method != 'POST':
url = reverse(payments_view)
return HttpResponseRedirect(url)
# we're still here
gateway = braintree.BraintreeGateway(
braintree.Configuration(
braintree.Environment.Sandbox,
merchant_id=BRAINTREE_MERCHANT_ID,
public_key=BRAINTREE_PUBLIC_KEY,
private_key=BRAINTREE_PRIVATE_KEY,
)
)
form = BrainTreeForm(request.POST)
if form.is_valid():
nonce_from_the_client = form.cleaned_data['payment_method_nonce']
amount = form.cleaned_data['amount']
amount = str(amount)
result = gateway.transaction.sale({
"amount": amount,
"payment_method_nonce": nonce_from_the_client,
"options": {
"submit_for_settlement": True
}
})
if result.is_success:
transaction = result.transaction
amount = transaction.amount
messages.info(request,
"We have successfully received your payment of {amount} Euro".format(
amount=amount
)
)
else:
messages.error(request,"We are sorry but there was an error with the payment")
url = reverse(payments_view)
return HttpResponseRedirect(url)
else:
messages.error(request,"There was an error in the payment form")
url = reverse(payments_view)
return HttpResponseRedirect(url)
url = reverse(payments_view)
return HttpResponseRedirect(url)
# User registration
def rower_register_view(request):