def complete_payment(request): proj_name = settings.PROJECT_NAME proj_addr = settings.PROJECT_ADDR time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') if request.session['fd']: reward_desc = (Reward.objects.get( name=request.session['fd']['reward_name']).desc if request.session['fd']['reward'] else 'None') btc = True o = Order( name=(request.session['fd']['namecredit'] if request.session['fd']['namecredit'] else (request.session['fd']['sh_name'] if request.session['fd']['sh_name'] else 'Bitcoin User')), addr1=request.session['fd']['sh_addr1'], addr2=request.session['fd']['sh_addr2'], city=request.session['fd']['sh_city'], state=request.session['fd']['sh_state'], pcode=request.session['fd']['sh_post'], country=request.session['fd']['sh_country'], reward=(Reward.objects.get( name=request.session['fd']['reward_name']) if request.session['fd']['reward'] else None), amount=decimal.Decimal( float(get_btc_rate()) * float(request.session['fd']['amount'])), ptype='BC', pref=request.session['fd']['ref'], email=request.session['fd']['email'], namecredit=request.session['fd']['namecredit'], notes=request.session['fd']['notes']) try: o.notify = request.session['fd']['notify'] except: pass o.save() if request.session['fd']['email']: send_mail(subject='Thank you for your contribution', message=get_template('notify.txt').render( Context({ 'order': request.session['fd'], 'proj_name': proj_name, 'proj_addr': proj_addr, 'time': time, 'reward_desc': reward_desc })), from_email=settings.NOTIFY_SENDER, recipient_list=[request.session['fd']['email']], fail_silently=False) request.session['fd'] = {} return render(request, 'payment/success.html', locals()) else: msg = 'Your session data could not be found. Please retry your submission again.' return render(request, 'error.html', locals())
def complete_payment(request): paypalrestsdk.configure({ 'mode': settings.PAYPAL_MODE, 'client_id': settings.PAYPAL_CLIENT_ID, 'client_secret': settings.PAYPAL_CLIENT_SECRET }) if request.session['fd'] and request.session['paypal_id']: time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') reward_desc = (Reward.objects.get( name=request.session['fd']['reward_name']).desc if request.session['fd']['reward'] else 'None') pmt = paypalrestsdk.Payment.find(request.session['paypal_id']) if pmt['state'] == 'created': if pmt.execute({"payer_id": request.session['paypal_pid']}): o = Order( name=(request.session['fd']['namecredit'] if request.session['fd']['namecredit'] else 'PayPal User'), addr1='', addr2='', city='', state='', pcode='', country='', reward=(Reward.objects.get( name=request.session['fd']['reward_name']) if request.session['fd']['reward'] else None), amount=decimal.Decimal(request.session['fd']['amount']), ptype='PP', pref=request.session['paypal_id'], email=request.session['fd']['email'], namecredit=request.session['fd']['namecredit'], notes=request.session['fd']['notes']) request.session['paypal_id'] = {} request.session['paypal_pid'] = {} try: o.notify = request.session['fd']['notify'] except: pass o.save() if request.session['fd']['email']: send_mail(subject=settings.PROJECT_NAME + ' - Thank you for your contribution', message=get_template('notify.txt').render( Context({ 'order': request.session['fd'], 'proj_name': settings.PROJECT_NAME, 'proj_addr': settings.PROJECT_ADDR, 'time': time, 'reward_desc': reward_desc })), from_email=settings.NOTIFY_SENDER, recipient_list=[request.session['fd']['email']], fail_silently=True) request.session['fd'] = {} return render(request, 'payment/success.html', locals()) else: request.session['paypal_id'] = {} request.session['paypal_pid'] = {} msg = 'There was an error with your payment.\n' + str( pmt.error) return render(request, 'error.html', locals()) else: request.session['paypal_id'] = {} request.session['paypal_pid'] = {} msg = 'An unexpected error has occurred. Please try again.' return render(request, 'error.html', locals()) else: msg = 'Your session data could not be found. Please retry your submission again.' return render(request, 'error.html', locals())
def complete_payment(request): if request.session['fd']: stripe.api_key = settings.STRIPE_PRIVATE_KEY proj_name = settings.PROJECT_NAME proj_addr = settings.PROJECT_ADDR time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') reward_desc = (Reward.objects.get( name=request.session['fd']['reward_name']).desc if request.session['fd']['reward'] else 'None') # amount in cents amount = int(request.session['fd']['amount']) * 100 token = request.session['fd']['stripeToken'] desc = request.session['fd']['email'] try: o = Order(name=(request.session['fd']['sh_name'] if request.session['fd']['sh_name'] else request.session['fd']['cc_name']), addr1=request.session['fd']['sh_addr1'], addr2=request.session['fd']['sh_addr2'], city=request.session['fd']['sh_city'], state=request.session['fd']['sh_state'], pcode=request.session['fd']['sh_post'], country=request.session['fd']['sh_country'], reward=(Reward.objects.get( name=request.session['fd']['reward_name']) if request.session['fd']['reward'] else None), amount=decimal.Decimal(request.session['fd']['amount']), ptype='CC', pref=request.session['fd']['cc_type'] + ' x-' + request.session['fd']['cc_last4'], email=request.session['fd']['email'], namecredit=request.session['fd']['namecredit'], notes=request.session['fd']['notes']) except: msg = "There was a problem saving your order details to the database. Your card has NOT been charged. Please notify the site operator." return render(request, 'error.html', locals()) try: charge = stripe.Charge.create(amount=amount, currency="usd", card=token, description=desc) try: o.notify = request.session['fd']['notify'] except: pass o.save() send_mail(subject=proj_name + ' - Thank you for your contribution', message=get_template('notify.txt').render( Context({ 'order': request.session['fd'], 'proj_name': proj_name, 'proj_addr': proj_addr, 'time': time, 'reward_desc': reward_desc })), from_email=settings.NOTIFY_SENDER, recipient_list=[request.session['fd']['email']], fail_silently=False) request.session['fd'] = {} return render(request, 'payment/success.html', locals()) except stripe.CardError, e: msg = "Your card has been declined. Please choose a new card or a new payment method and restart your order." return render(request, 'error.html', locals()) except: