Ejemplo n.º 1
0
def mainPay(request):
    print "i got here"
    rp = request.POST
    print 'rp', rp
    email = request.user.email
    random_ref = purchase_ref()
    request.session['ref_no'] = random_ref
    request.session['user'] = request.user
    amount = rp.get('paystack_amount')
    print amount
    request.session['amount'] = amount
    url = 'payments:verify_payment'
    callback_url = request.build_absolute_uri(reverse(url))
    print "callback-url", callback_url
    response = Transaction.initialize(reference=random_ref,
                                      amount=(float(amount) * 100.0),
                                      email=request.user.email,
                                      callback_url=callback_url)
    # print 'response:', response
    data = response.get('data')
    # print "data:", data
    authorization_code = data['access_code']
    print "access_code", authorization_code
    url = data['authorization_url']
    # print 'url', url

    payment = Payments.objects.create(user=request.user,
                                      amount=amount,
                                      status="Pending",
                                      date_created=timezone.now(),
                                      payment_ref=random_ref)

    return redirect(url)
Ejemplo n.º 2
0
def payement(request):
    if request.method == 'POST':
        refrence = request.POST.get('refrence')
        email = request.POST.get('email')
        amount = int(float(request.POST.get('amount')))
        response = Transaction.initialize(reference=refrence,
                                          amount=amount,
                                          email=email)
        return JsonResponse(response, status=200, safe=False)
    return JsonResponse({'error': 'could not add item to cart'}, status=400)
Ejemplo n.º 3
0
    def test_initialize(self):
        httpretty.register_uri(
            httpretty.GET,
            "https://api.paystack.co/transaction/initialize",
            content_type='text/json',
            body='{"status": true, "contributors": true}',
            status=201,
        )

        response = Transaction.initialize(reference='getupall',
                                          amount=12000,
                                          email='*****@*****.**')
        self.assertTrue(response['status'])
Ejemplo n.º 4
0
    def test_initialize(self):
        httpretty.register_uri(
            httpretty.POST,
            self.endpoint_url("/transaction/initialize"),
            content_type='text/json',
            body='{"status": true, "contributors": true}',
            status=201,
        )

        response = Transaction.initialize(reference='getupall',
                                          amount=12000,
                                          email='*****@*****.**')
        self.assertTrue(response['status'])
    def test_initialize(self):
        httpretty.register_uri(
            httpretty.GET,
            "https://api.paystack.co/transaction/initialize",
            content_type='text/json',
            body='{"status": true, "contributors": true}',
            status=201,
        )

        response = Transaction.initialize(
            reference='getupall', amount=12000,
            email='*****@*****.**')
        self.assertTrue(response['status'])
Ejemplo n.º 6
0
def new_transaction(email, price, cart):
    # start transaction and get payment url
    # reference = request.args.get("reference")
    # gets args from the checkout endpoint
    amount = price
    response = Transaction.initialize(amount=amount,
                                      email=email,
                                      callback_url="localhost:5000",
                                      metadata=cart)
    response = json.load(response)
    if response["status"]:
        payment_url = response['data']["authorization_url"]
        return True, payment_url
    else:
        return False, ""
    def test_initialize(self):
        with mock.patch('paystackapi.transaction.Transaction.initialize') \
                as mock_initialize:
                mock_initialize.return_value = {
                    'status': True, 'message': 'Authorization URL created',
                    'data': {
                        'authorization_url': 'https://standard.paystackapi.co/pay/xam1uq26de',
                        'access_code': 'xam1uq26de',
                        'reference': 'getupall'
                    }
                }

                response = Transaction.initialize(
                    'getupall', 12000,
                    '*****@*****.**',
                    'daily')
                self.assertTrue(response['status'])
Ejemplo n.º 8
0
def new_transaction():
    reference = request.form.get("reference")
    amount = request.form.get("amount")
    email = request.form.get("email")
    response = Transaction.initialize(reference=reference,
                                      amount=amount,
                                      email=email)
    if response["status"]:
        return jsonify({
            "success": True,
            "payment_url": response["data"]["authorization_url"],
            "reference": response["data"]["reference"],
            "message": response["message"]
        }), 200
    else:
        return jsonify({
            "success": False,
            "message": response["message"],
        }), 400
Ejemplo n.º 9
0
def payment_process(request):
    order_id = request.session.get("order_id")
    order = get_object_or_404(Order, id=order_id)
    paystack_key = paystack_public_key

    if request.method == "POST":
        transaction = Transaction.initialize(
            reference=f"ANGALABIRI_REF_ORDER_{order_id}",
            email=order.email,
            amount="{:.2f}".format(order.get_total_cost()) * 100,
        )
        if transaction.is_success:
            order.paid = True
            order.transaction_id = transaction.id
            order.save()
            return redirect('shop:payment-done')
        else:
            return redirect('shop:payment-failed')
    return render(request, 'shop/billing/payment.html', {'order': order, 'paystack_key': paystack_key})
Ejemplo n.º 10
0
def subscribe_full(request):
    amount = '170000'
    user = request.user
    full_name = request.user.full_name
    email = request.user.email
    phone = request.user.phone_number

    response = Transaction.initialize(amount=amount, email=email)

    ref = response['data']['reference']
    print(full_name)
    create_pay_instance = Payment.objects.create(customers_name=full_name,
                                                 customers_email=email,
                                                 customers_phone=phone,
                                                 product_type='1 Year',
                                                 reference=ref,
                                                 amount='1700')

    a_url = response['data']['authorization_url']
    return redirect(a_url)
Ejemplo n.º 11
0
def initiate_charge_card(request, **kwargs):
    if request.method == "POST":
        markup_percentage, markup_min_charge, is_nigerian_card = get_markup_charge(
            request)
        txn_desc = kwargs['txn_desc']
        txn_ref = kwargs['txn_ref']
        request.session['txn_ref'] = txn_ref
        actual_amount_D = round(kwargs.get('actual_amount', 0), 2)
        request.session['actual_amount_D'] = actual_amount_D
        print 'markup_percentage, markup_min_charge: ', markup_percentage, markup_min_charge
        markup_charge_D = round(
            (float(actual_amount_D) * markup_percentage) + markup_min_charge,
            2)
        if is_nigerian_card:
            max_markup_charge_D = 5
            if markup_charge_D > max_markup_charge_D:
                markup_charge_D = max_markup_charge_D
            amount_D = round(actual_amount_D + markup_charge_D, 2)
            cost_calc = marketingmember_costcalc(request, 'Nigeria')
            amount_N = format(amount_D * float(cost_calc.dollar_exchange_rate),
                              '.2f')
            amountz = amount_D * float(cost_calc.dollar_exchange_rate) * 100
        print "going to paystack to charge card"
        email = request.user.email
        url = 'general:verifyPayment'
        callback_url = request.build_absolute_uri(reverse(url))
        print "callback-url", callback_url
        response = Transaction.initialize(reference=txn_ref,
                                          amount=amountz,
                                          email=email,
                                          callback_url=callback_url)
        print 'response:', response
        data = response.get('data')
        print "data:", data
        authorization_code = data['access_code']
        print "access_code", authorization_code
        url = data['authorization_url']
        print 'url', url
    return redirect(url)
Ejemplo n.º 12
0
def mainPay(request):
    marketer = marketing_member(request)
    print "i got here"
    rp = request.POST
    print 'rp', rp
    if request.method == "POST":
        bot_catcher = request.POST.get('bot_catcher')
        print "bot_catcher", bot_catcher
        payment_method = request.POST.get('payment-method')
        if bot_catcher != "botty":
            return redirect(reverse('general:homepage'))
        try:
            value = int(request.POST.get('amount'))
        except:
            messages.info(request, 'Invalid amount entered')
            # return redirect('wallet:wallet')
            return redirect
        if payment_method == "bank":
            # print a
            random_ref = purchase_ref()

            bank_payment = MarketerPayment.objects.create(
                user=request.user.useraccount,
                payment_channel="Bank Payment",
                purchase_type_2="Add",
                created_at=timezone.now(),
                message="Vei Wallet Fund",
                amount=amount,
                ref_no=random_ref,
                marketer=marketer,
                bank=None,
                teller_no=random_ref)

            payment = MarketerPayment.objects.filter(
                user=request.user.useraccount)
            return redirect('wallet:wallet')
        # if value > 9999:
        #     messages.info(request, 'You have exceeded the Top up Limit, Pls enter an amount less than 10,000')
        #     return redirect('wallet:wallet')
        # print "value", value
        amount = value
        # print "amount", amount
        email = request.user.email

        #secret_key = 'sk_test_9fe140b2bf798accdc2aade269cac47bc2de7ecc'
        random_ref = purchase_ref()
        request.session['ref_no'] = random_ref
        request.session['user'] = request.user
        request.session['amount'] = amount
        url = 'wallet:verify_payment'
        callback_url = request.build_absolute_uri(reverse(url))
        print "callback-url", callback_url
        response = Transaction.initialize(reference=random_ref,
                                          amount=float(amount * 100),
                                          email=email,
                                          callback_url=callback_url)
        # print 'response:', response
        data = response.get('data')
        # print "data:", data
        authorization_code = data['access_code']
        # print "access_code", authorization_code
        url = data['authorization_url']
        # print 'url', url
        payment = MarketerPayment.objects.create(
            user=request.user.useraccount,
            payment_channel="Card Payment",
            purchase_type_2="Add",
            created_at=timezone.now(),
            message="Paystack Vei Wallet Fund",
            purchase_type_3="veiwallet",
            amount=amount,
            ref_no=random_ref,
            marketer=marketer,
            bank=None,
            teller_no=random_ref)

        user_acc = request.user.useraccount

        return redirect(url)

    return render(request, 'volkmann/vei_wallet.html')
Ejemplo n.º 13
0
def main(request):
    try:
        useraccount = UserAccount.objects.get(user=request.user)
        if not useraccount.profile_updated:
            messages.info(request,
                          'Please Update your profile to top up your wallet')
            return redirect('general:profile')
    except Exception as e:
        print "e", e
        messages.info(request,
                      'Please Update your profile to top up your wallet')
        return redirect('general:profile')
    if request.method == "POST":
        bot_catcher = request.POST.get('bot_catcher')
        # print "bot_catcher",bot_catcher
        payment_method = request.POST.get('payment-method')
        if bot_catcher != "botty":
            return redirect(reverse('general:homepage'))

        try:
            value = int(request.POST.get('amount'))
        except:
            messages.info(request, 'Invalid amount entered')
            return redirect('wallet:wallet')
        if payment_method == "bank":
            # print a
            random_ref = purchase_ref()
            bank_record = Bank.objects.create(
                user=request.user,
                txn_type="Add",
                amount=value,
                ref_no=random_ref,
                created_at=timezone.now,
                date_created=timezone.now().date(),
                bank="BANK DEPOSIT",
                message="Wallet Top up Via Bank Deposit")
            bank_record.save()
            print bank_record
            payment = Bank.objects.filter(user=request.user)
            return render(request, 'general_snippets/bank_details.html', {
                'ref': random_ref,
                'wallet': payment
            })
        if value > 20000:
            messages.info(
                request,
                'You have exceeded the Top up Limit, Pls enter an amount less than 20,000'
            )
            return redirect('wallet:wallet')
        # print "value", value
        amount = value * 100
        # print "amount", amount
        email = request.user.email

        #secret_key = 'sk_test_9fe140b2bf798accdc2aade269cac47bc2de7ecc'
        random_ref = purchase_ref()
        request.session['ref_no'] = random_ref
        url = 'wallet:verify_payment'
        callback_url = request.build_absolute_uri(reverse(url))
        # print "callback-url", callback_url
        response = Transaction.initialize(reference=random_ref,
                                          amount=amount,
                                          email=email,
                                          callback_url=callback_url)
        # print 'response:', response
        data = response.get('data')
        # print "data:", data
        authorization_code = data['access_code']
        # print "access_code", authorization_code
        url = data['authorization_url']
        # print 'url', url
        bank_record = Bank.objects.create(user=request.user,
                                          txn_type="Add",
                                          amount=value,
                                          ref_no=random_ref,
                                          created_at=timezone.now,
                                          date_created=timezone.now().date())
        bank_record.save()
        return redirect(url)
        # response = Transaction.charge(reference=random_ref,
        #                       authorization_code=authorization_code,
        #                       email=email,
        #                       amount=amount)
        # response_dict = Transaction.verify(reference=random_ref)
        # print "response_dict", response_dict
        #test_email = email
        #test_amount = amount
        #plan = 'Basic'
        # client = TransactionResource(secret_key, random_ref)
        # response = client.initialize(amount,email)
        # print"response",response
        # client.authorize() # Will open a browser window for client to enter card details
        # verify = client.verify() # Verify client credentials
        # print "verify", verify
        # print type(verify)
        # ref = verify.get('data')
        # print ref

        #client.charge(None,amount,email,random_ref)
        #print client.charge() # Charge an already exsiting client
    return render(request, 'wallet/topup.html')