remove unused code frm another project
This commit is contained in:
parent
2550b99b2b
commit
29eda9999f
|
@ -1,219 +0,0 @@
|
||||||
import logging
|
|
||||||
logger = logging.getLogger("bornhack.%s" % __name__)
|
|
||||||
|
|
||||||
|
|
||||||
### epay callback function
|
|
||||||
@require_safe
|
|
||||||
def api_epay_callback(request):
|
|
||||||
### save GET payload
|
|
||||||
callback = EpayCallback.objects.create(
|
|
||||||
json_payload=json.dumps(request.GET),
|
|
||||||
callback_time=timezone.now(),
|
|
||||||
)
|
|
||||||
|
|
||||||
### find order
|
|
||||||
if 'orderid' in request.GET:
|
|
||||||
### find order type
|
|
||||||
if request.GET['orderid'][0] == "M":
|
|
||||||
### find epay order
|
|
||||||
try:
|
|
||||||
order = EpayOrder.objects.get(id=request.GET['orderid'][1:])
|
|
||||||
except EpayOrder.DoesNotExist:
|
|
||||||
logger.error("epay callback - epayorder %s not found" % request.GET['orderid'])
|
|
||||||
return HttpResponse("Not OK")
|
|
||||||
|
|
||||||
### check hash here
|
|
||||||
if 'hash' not in request.GET:
|
|
||||||
logger.error("epay callback - missing epay hash")
|
|
||||||
return HttpResponse("Not OK")
|
|
||||||
|
|
||||||
### this does not work sometimes, ordering is off maybe?
|
|
||||||
hashstring = ''
|
|
||||||
qs = request.META['QUERY_STRING']
|
|
||||||
for kv in qs.split("&"):
|
|
||||||
if kv.split("=")[0] != "hash":
|
|
||||||
hashstring += kv.split("=")[1]
|
|
||||||
hashstring += settings.EPAY_MD5_SECRET
|
|
||||||
epayhash = hashlib.md5(hashstring).hexdigest()
|
|
||||||
if epayhash != request.GET['hash']:
|
|
||||||
logger.error("epay callback - wrong epay hash")
|
|
||||||
return HttpResponse("Not OK")
|
|
||||||
|
|
||||||
### save callback in epayorder
|
|
||||||
order.epay_callback = callback
|
|
||||||
if 'txnid' in request.GET:
|
|
||||||
order.epay_txnid=request.GET['txnid']
|
|
||||||
if 'amount' in request.GET:
|
|
||||||
order.epay_amount=int(request.GET['amount'])/100
|
|
||||||
if 'fraud' in request.GET:
|
|
||||||
if request.GET['fraud'] == '1':
|
|
||||||
order.epay_fraud=True
|
|
||||||
else:
|
|
||||||
order.epay_fraud=False
|
|
||||||
|
|
||||||
### delay epayorder depending on user level
|
|
||||||
if settings.ACCOUNT_LEVEL_SETTINGS[str(order.user.profile.account_level)]['MOBILEPAY_DELAY_DAYS'] > 0:
|
|
||||||
order.btc_processing_delayed = True
|
|
||||||
|
|
||||||
### all ok?
|
|
||||||
if order.epay_amount == order.xxx_amount and not order.epay_fraud:
|
|
||||||
order.epay_payment_ok=True
|
|
||||||
|
|
||||||
### save
|
|
||||||
order.save()
|
|
||||||
else:
|
|
||||||
logger.error("epay callback - order %s not recognized" % request.GET['orderid'])
|
|
||||||
return HttpResponse("Not OK")
|
|
||||||
return HttpResponse("OK")
|
|
||||||
|
|
||||||
|
|
||||||
### epay order function
|
|
||||||
@login_required
|
|
||||||
def epay_order(request):
|
|
||||||
if 'HTTP_X_FORWARDED_FOR' in request.META:
|
|
||||||
ip = request.META['HTTP_X_FORWARDED_FOR']
|
|
||||||
else:
|
|
||||||
ip = request.META['REMOTE_ADDR']
|
|
||||||
|
|
||||||
country = GeoIP().country(ip)["country_code"]
|
|
||||||
if country not in settings.PERMITTED_EPAY_COUNTRIES:
|
|
||||||
return render(request, 'epay_sepa_only.html')
|
|
||||||
|
|
||||||
### get provision percent
|
|
||||||
provision = get_provision_percent(request.user, "epayorder")
|
|
||||||
|
|
||||||
### convert BTC price to DKK
|
|
||||||
btc_usd_price = CurrencyPrice.objects.get(item='BTCUSD').price
|
|
||||||
btc_dkk_price = ConvertCurrency(btc_usd_price, 'USD', 'DKK')
|
|
||||||
|
|
||||||
### add provision
|
|
||||||
btc_dkk_price_with_provision = btc_dkk_price * provision
|
|
||||||
|
|
||||||
### instantiate form
|
|
||||||
form = EpayOrderForm(request.POST or None, request=request, initial={
|
|
||||||
'currency': request.user.profile.preferred_currency,
|
|
||||||
'btc_address': request.user.profile.btc_address,
|
|
||||||
})
|
|
||||||
|
|
||||||
if form.is_valid():
|
|
||||||
### Check exhange rates
|
|
||||||
check_if_exchange_rates_are_too_old()
|
|
||||||
|
|
||||||
### save order
|
|
||||||
try:
|
|
||||||
### save epay order with commit=False
|
|
||||||
epayorder = form.save(commit=False)
|
|
||||||
except Exception as E:
|
|
||||||
logger.error("unable to save epay order with commit=false")
|
|
||||||
return render(request, 'epay_order_fail.html', {
|
|
||||||
'message': _('Unable to save epay order. Please try again, and please contact us if the problem persists.')
|
|
||||||
})
|
|
||||||
|
|
||||||
### set useragent and IP
|
|
||||||
epayorder.useragent = request.META['HTTP_USER_AGENT']
|
|
||||||
epayorder.ip = ip
|
|
||||||
|
|
||||||
### create time
|
|
||||||
epayorder.create_time = timezone.now()
|
|
||||||
|
|
||||||
### set order user
|
|
||||||
epayorder.user = request.user
|
|
||||||
|
|
||||||
### save DKK amount
|
|
||||||
epayorder.dkk_amount = ConvertCurrency(epayorder.xxx_amount, epayorder.currency, 'DKK')
|
|
||||||
|
|
||||||
### set fee
|
|
||||||
epayorder.fee = settings.ACCOUNT_LEVEL_SETTINGS[str(epayorder.user.profile.account_level)]['MOBILEPAY_PROVISION']
|
|
||||||
|
|
||||||
### save epayorder
|
|
||||||
epayorder.save()
|
|
||||||
|
|
||||||
### save btc_address to profile if needed
|
|
||||||
if not request.user.profile.btc_address:
|
|
||||||
request.user.profile.btc_address = epayorder.btc_address
|
|
||||||
request.user.profile.save()
|
|
||||||
|
|
||||||
send_amqp_message("epayorder M%s created by user %s" % (epayorder.id, request.user), "epayorder.create")
|
|
||||||
return HttpResponseRedirect(reverse('epay_epay_form', kwargs={'epayorderid': epayorder.id}))
|
|
||||||
|
|
||||||
### calculate BTC price for the users native currency
|
|
||||||
btc_xxx_price = ConvertCurrency(amount=btc_usd_price, fromcurrency="USD", tocurrency=request.user.profile.preferred_currency or "EUR")
|
|
||||||
|
|
||||||
### add provision
|
|
||||||
btc_xxx_price = btc_xxx_price * provision
|
|
||||||
|
|
||||||
### find out if new orders by this user should be delayed
|
|
||||||
if settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level)]['MOBILEPAY_DELAY_DAYS'] == 0:
|
|
||||||
skipdelay = True
|
|
||||||
else:
|
|
||||||
skipdelay = False
|
|
||||||
|
|
||||||
### delay relevant?
|
|
||||||
if settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level)]['MOBILEPAY_DELAY_DAYS'] > 0:
|
|
||||||
nextlevel_history_delay = settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level+1)]['BUY_HISTORY_DELAY_DAYS']
|
|
||||||
nextlevel_history_amount = settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level+1)]['BUY_HISTORY_MINIMUM']
|
|
||||||
else:
|
|
||||||
nextlevel_history_delay = None
|
|
||||||
nextlevel_history_amount = None
|
|
||||||
|
|
||||||
### render the response
|
|
||||||
return render(request, 'epay_order.html', {
|
|
||||||
'form': form,
|
|
||||||
'btc_xxx_price': round(btc_xxx_price, 2),
|
|
||||||
'currency': request.user.profile.preferred_currency or "EUR",
|
|
||||||
'provision': round((provision-1)*100, 1),
|
|
||||||
'skipdelay': skipdelay,
|
|
||||||
'delaydays': settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level)]['MOBILEPAY_DELAY_DAYS'],
|
|
||||||
'daily_limit': settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level)]['MOBILEPAY_LIMIT_DAY'],
|
|
||||||
'nextlevel_history_delay': nextlevel_history_delay,
|
|
||||||
'nextlevel_history_amount': nextlevel_history_amount,
|
|
||||||
'btc_address': request.user.profile.btc_address,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
### the page which shows the epay epay form
|
|
||||||
@login_required
|
|
||||||
def epay_epay_form(request, epayorderid):
|
|
||||||
epayorder = get_object_or_404(EpayOrder, id=epayorderid, user=request.user, user_cancelled=False, epay_callback__isnull=True)
|
|
||||||
accepturl = request.build_absolute_uri(reverse('epay_thanks', kwargs={'epayorderid': epayorder.id})).replace('http://', 'https://')
|
|
||||||
description = str(request.user.id)
|
|
||||||
hashstring = settings.EPAY_MERCHANT_NUMBER+description+'11'+str(epayorder.xxx_amount*100)+str(epayorder.currency)+'M'+str(epayorder.id)+accepturl+settings.EPAY_MD5_SECRET
|
|
||||||
epayhash = hashlib.md5(hashstring).hexdigest()
|
|
||||||
return render(request, 'epay_form.html', {
|
|
||||||
'orderid': 'M%s' % epayorder.id,
|
|
||||||
'description': description,
|
|
||||||
'merchantnumber': settings.EPAY_MERCHANT_NUMBER,
|
|
||||||
'amount': epayorder.xxx_amount*100,
|
|
||||||
'currency': epayorder.currency,
|
|
||||||
'epayhash': epayhash,
|
|
||||||
'accepturl': accepturl,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
### after epay payment thanks page
|
|
||||||
@login_required
|
|
||||||
def epay_thanks(request, epayorderid):
|
|
||||||
### get order - if it is owned by this user and uncancelled
|
|
||||||
epayorder = get_object_or_404(EpayOrder, id=epayorderid, user=request.user, user_cancelled=False)
|
|
||||||
|
|
||||||
### check for querystring
|
|
||||||
if request.GET:
|
|
||||||
### update order to register thanks page view
|
|
||||||
epayorder.thanks_page_view_time=timezone.now()
|
|
||||||
epayorder.save()
|
|
||||||
|
|
||||||
### redirect to get rid of GET querystring
|
|
||||||
return HttpResponseRedirect(reverse('epay_thanks', kwargs={'epayorderid': epayorder.id}))
|
|
||||||
|
|
||||||
if epayorder.btc_processing_delayed:
|
|
||||||
minamount = ConvertLimit(settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level+1)]['BUY_HISTORY_MINIMUM'], epayorder.currency)
|
|
||||||
delaydays = settings.ACCOUNT_LEVEL_SETTINGS[str(request.user.profile.account_level)]['MOBILEPAY_DELAY_DAYS']
|
|
||||||
else:
|
|
||||||
minamount = None
|
|
||||||
delaydays = None
|
|
||||||
|
|
||||||
return render(request, 'epay_thanks.html', {
|
|
||||||
'order': epayorder,
|
|
||||||
'delaydays': delaydays,
|
|
||||||
'minamount': minamount,
|
|
||||||
})
|
|
Loading…
Reference in a new issue