Ejemplo n.º 1
0
def payment_request(request):
    '''
    Creates a payment request and redirects to instamojo payments page and on completion returns to payment_response page.
    '''
    api = Instamojo(api_key=API_KEY, auth_token=AUTH_TOKEN)
    eventid = request.GET['event']
    price = request.GET['price']
    variable = ''
    if eventid == 'all':
        variable = 'payment for acumen it registered events'
    else:
        eventdetail = Event.objects.get(event_id=eventid)
        variable = 'payment for acumen it ' + str(
            eventdetail.event_name) + ' event'
    response = api.payment_request_create(
        amount=price,
        purpose=variable,
        buyer_name=request.user.first_name,
        send_email=True,
        email=request.user.email,
        redirect_url="https://www.acumenit.in/payment_response/" +
        str(eventid) + "/",
    )

    print(response['payment_request']['id'])

    return redirect(response['payment_request']['longurl'])
Ejemplo n.º 2
0
def payment_redirect(request):
    api = Instamojo(api_key='27fb8178a52dc8e02866df53267d016d',
                    auth_token='4c5d72dcdaa1e81b2ec37525609dd6b5',
                    endpoint='https://test.instamojo.com/api/1.1/')

    # Create a new Payment Request
    firstname = request.POST["first_name"]
    amount = request.POST["amount"]
    email = request.POST["email"]
    phone = request.POST["mobile"]
    project = request.POST["project"]
    print project
    response = api.payment_request_create(
        amount=amount,
        purpose=project,
        send_email=True,
        email=email,
        phone=phone,
        buyer_name=firstname,
        redirect_url="http://www.reimaginegiving.org/Success/")
    # print the long URL of the payment request.
    print response
    response1 = response['payment_request']['longurl']
    print response1
    # print the unique ID(or payment request ID)
    # print response['payment_request']['id']
    return redirect(response1)
Ejemplo n.º 3
0
def payment_request(name, amount, purpose, email, mobile):
    api = Instamojo(api_key=os.getenv('api_auth_key'),
                    auth_token=os.getenv('api_auth_token'))

    # Create a new Payment Request
    response = api.payment_request_create(
        buyer_name=name,
        amount=amount,
        purpose=purpose,
        send_email=True,
        email=email,
        phone=mobile,
        redirect_url="https://zeitgeist.org.in/payment_redirect/",
        webhook="https://zeitgeist.org.in/webhook/")
    return response
Ejemplo n.º 4
0
 def get_form(self, payment, data=None):
     if not payment.id:
         payment.save()
     api = Instamojo(api_key=self.api_key, auth_token=self.auth_token, endpoint=self.endpoint)
     payment_request = api.payment_request_create(
         amount=payment.total,
         purpose=payment.description,
         send_email=False,
         redirect_url=self.base_url + payment.get_process_url(),
     )
     try:
         raise RedirectNeeded(payment_request['payment_request']['longurl'])
     except KeyError:
         raise PaymentError(
             'Error in processing payment. Contact developer. Output: %s' % (payment_request))
Ejemplo n.º 5
0
def checkout(request):
    if request.user.is_authenticated:
        user = request.user
        cart = Cart.objects.get_or_create(user=user)[0]

        if cart.products.count() > 0:
            total_price = cart.total_price()
            api = Instamojo(api_key=settings.API_KEY,
                            auth_token=settings.AUTH_TOKEN,
                            endpoint='https://test.instamojo.com/api/1.1/')
            response = api.payment_request_create(
                amount=str(total_price),
                purpose="Buying Products from March Site.",
                redirect_url="http://localhost:8000/success")
            return redirect(response['payment_request']['longurl'])
    return HttpResponse("You're not logged In.")
Ejemplo n.º 6
0
def payment_request(request):
    '''
    Creates a payment request and redirects to instamojo payments page and on completion returns to payment_response page.
    '''
    api = Instamojo(api_key=API_KEY, auth_token=AUTH_TOKEN)

    participant = Participant.objects.get(user=request.user)
    response = api.payment_request_create(
        amount='180',
        purpose='Acument IT Hackathon',
        buyer_name=request.user.first_name,
        send_email=True,
        email=request.user.email,
        phone=participant.contact,
        redirect_url="https://www.acumenit.in/acuthon/payment_response",
        webhook="http://www.acumenit.in/acuthon/payment_webhook")

    print(response['payment_request']['id'])

    return redirect(response['payment_request']['longurl'])
Ejemplo n.º 7
0
def downloadrequestpage(request):
    if request.method=="GET":
        id=request.GET.get('id')
        user=request.session.get('user')
        product=Product.objects.get(id=id)
        request.session['product_name']=product.name
        userObject=User.objects.get(id=request.session['id'])
        amount=product.price-((product.price)*(product.discount)/100)
        api = Instamojo(api_key=PAYMENT_API_KEY, auth_token=PAYMENT_API_AUTH_TOKEN);
        response = api.payment_request_create(
            amount=math.floor(amount),
            purpose=f'Payment For {product.name}',
            send_email=True,
            email=request.session.get('email'),
            redirect_url="http://localhost:8000/Download/complete-payment"
            )
        payment_request_id=response['payment_request']['id']
        payment=Payment(product=product,user=userObject,payment_request_id=payment_request_id)
        payment.save()
        url=response['payment_request']['longurl']
        print(response)
        return redirect(url)
Ejemplo n.º 8
0
def payRegistration(payload):
    try:
        api = Instamojo(api_key=API_KEY, auth_token=AUTH_TOKEN)
        # api = Instamojo(api_key=API_KEY, auth_token=AUTH_TOKEN, endpoint='https://test.instamojo.com/api/1.1/')
        response = api.payment_request_create(
            amount='100',
            purpose='Intern Fair 2k20 IIT Ropar Student Registration',
            send_email=True,
            email=payload["email"],
            buyer_name=payload["name"],
            send_sms=True,
            phone=payload["phone_number"],
            redirect_url=payload["redirect_url"],
        )
        data = {
            "id": response['payment_request']['id'],
            "link": response['payment_request']['longurl'],
            "error": False
        }
        return data
    except Exception:
        return {"error": True}
Ejemplo n.º 9
0
def order_create(request):
    cart = Cart(request)
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)
        if form.is_valid():
            order = form.save()
            for item in cart:
                a=OrderItem.objects.create(order=order,
                                         product=item['product'],
                                         price=item['price'],
                                         quantity=item['quantity'])
            price=OrderItem.get_cost(a)
            # clear the cart
            request.session['order_id'] = order.id
            cart.clear()
            api = Instamojo(api_key="327dc26252b623af6faa0ef987188be5", auth_token="fb79872dab2032fd4c678f4d927c5625", endpoint='https://test.instamojo.com/api/1.1/');
            response = api.payment_request_create(
                purpose= 'Review Hub',
                amount= price,
                buyer_name= order.get_full_name(),
                email= order.email,
                phone= order.mobile,
                redirect_url=request.build_absolute_uri(reverse('orders:invoice', kwargs={'order_id':order.id})),
                send_email= 'True',
                send_sms= 'True',
                webhook= 'http://www.example.com/webhook/',
                allow_repeated_payments= 'False',
            )
            print (response)
            return HttpResponseRedirect(response['payment_request']['longurl'])
            # launch asynchronous task
            #order_created.delay(order.id)
            #return render(request, 'orders/order/created.html', {'order': order})
    else:
        form = OrderCreateForm()
    return render(request, 'orders/order/create.html', {'cart': cart,
                                                        'form': form})
Ejemplo n.º 10
0
from instamojo_wrapper import Instamojo
API_KEY="test_8ae61cb145b7edb37b01806374c"
AUTH_TOKEN="test_0a1a23705c1024395442cad8c43"

api = Instamojo(api_key=API_KEY, auth_token=AUTH_TOKEN, endpoint='https://test.instamojo.com/api/1.1/');


# Create a new Payment Request
response = api.payment_request_create(
    amount='11',
    purpose='testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://localhost:8000/handle_redirect.py"
    )
# print the long URL of the payment request.
print (response['payment_request']['longurl'])
Ejemplo n.º 11
0
from instamojo_wrapper import Instamojo
API_KEY = "YOUR_KEY"
AUTH_TOKEN = 'YOUR_TOKEN'

api = Instamojo(api_key=API_KEY, auth_token=AUTH_TOKEN, endpoint='https://test.instamojo.com/api/1.1/');
response = api.payment_request_create(
    amount='11',
    purpose='Testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://localhost:8000/handle_redirect"
    )

print( response['payment_request']['longurl'])
Ejemplo n.º 12
0
from instamojo_wrapper import Instamojo
from download_products.settings import PAYMENT_API_KEY, PAYMENT_API_AUTH_TOKEN

api = Instamojo(api_key=PAYMENT_API_KEY,
                auth_token=PAYMENT_API_AUTH_TOKEN,
                endpoint='https://test.instamojo.com/api/1.1/')

# Create a new Payment Request
response = api.payment_request_create(
    amount='10',
    purpose='Testing ..',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://www.feelfreetocode.com")

print(response)
# print the long URL of the payment request.
print(response['payment_request']['longurl'])
# print the unique ID(or payment request ID)
print(response['payment_request']['id'])
Ejemplo n.º 13
0
from instamojo_wrapper import Instamojo

API_KEY = 'test_e6f3ee14401e08c4f2605416b8'
AUTH_TOKEN = 'test_1f464b71f44e8a749d23a33720'
api = Instamojo(api_key=API_KEY,
                auth_token=AUTH_TOKEN,
                endpoint='https://test.instamojo.com/api/1.1/')

response = api.payment_request_create(
    amount='11',
    purpose='testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://www.example.com/handle_redirect.py")

print(response['payment_request']['longurl'])
Ejemplo n.º 14
0
from instamojo_wrapper import Instamojo
from digitatShop.settings import PAYMENT_API_KEY,PAYMENT_API_AUTH_TOKEN

api = Instamojo(api_key=PAYMENT_API_KEY,
                auth_token=PAYMENT_API_AUTH_TOKEN, endpoint='https://test.instamojo.com/api/1.1/')

# Create a new Payment Requestexite
response = api.payment_request_create(
    amount='20',
    purpose='For testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://www.feelfreetocode.in"
    )

# print the long URL of the payment request.
url =  response['payment_request']['longurl']
print(url)
Ejemplo n.º 15
0
from instamojo_wrapper import Instamojo
from digitalShop.settings import PAYMENT_API_KEY, PAYMENT_AUTH_TOKEN

api = Instamojo(api_key=PAYMENT_API_KEY,
                auth_token=PAYMENT_AUTH_TOKEN,
                endpoint='https://test.instamojo.com/api/1.1/')

# Create a new Payment Request
response = api.payment_request_create(
    amount='20',
    purpose='Testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="https://www.programminghubs.com")
# print the long URL of the payment request.
url = response['payment_request']['longurl']
# print the unique ID(or payment request ID)
id = response['payment_request']['id']

print(url, id)
Ejemplo n.º 16
0
from instamojo_wrapper import Instamojo

API_KEY = "test_e6582de88962af12a93fa92b007"
AUTH_TOKEN = "test_8fe51d2f048f114df2e7535f024"
api = Instamojo(api_key=API_KEY, auth_token=AUTH_TOKEN, endpoint='https://test.instamojo.com/api/1.1/')

# Create a new Payment Request
response = api.payment_request_create(
    amount='101',
    purpose='i am Testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://127.0.0.1:8000/handle_redirect"
    )

print ("longurl: ",response['payment_request']['longurl'])
Ejemplo n.º 17
0
from instamojo_wrapper import Instamojo
API_KEY = "test_04d6f40897bebe960c0d2dcc939"
AUTH_TOKEN = "test_72b7dd93d6738104f7e78f3c097"
api = Instamojo(api_key=API_KEY,
                auth_token=AUTH_TOKEN,
                endpoint='https://test.instamojo.com/api/1.1/')

# Create a new Payment Request
response = api.payment_request_create(
    amount='20',
    purpose='Testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://localhost/handle_redirect.py")
# print the long URL of the payment request.
print(response['payment_request']['longurl'])
# print the unique ID(or payment request ID)
print(response['payment_request']['id'])
Ejemplo n.º 18
0
class TestPaymentRequests(BaseTestClass):
    def setUp(self):
        self.api_endpoint = 'https://www.instamojo.com/api/1.1/'
        self.api = Instamojo('API-KEY', 'AUTH-TOKEN', self.api_endpoint)

    @responses.activate
    def test_payment_request_create(self):
        data = payment_requests_payload['payment_request_create']
        endpoint = self.api_endpoint + 'payment-requests/'
        responses.add(responses.POST,
                      endpoint,
                      body='{}',
                      content_type='application/json')
        resp = self.api.payment_request_create(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(responses.calls[0].request.url, endpoint)

    @responses.activate
    def test_payment_request_status(self):
        data = payment_requests_payload['payment_request_status']
        endpoint = self.api_endpoint + 'payment-requests/{id}/'.format(
            **data['request'])
        responses.add(responses.GET,
                      endpoint,
                      body='{}',
                      content_type='application/json')
        resp = self.api.payment_request_status(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(responses.calls[0].request.url, endpoint)

    @responses.activate
    def test_payment_requests_list(self):
        data = payment_requests_payload['payment_requests_list']
        endpoint = self.api_endpoint + 'payment-requests/'
        responses.add(responses.GET,
                      endpoint,
                      body='{}',
                      content_type='application/json')
        resp = self.api.payment_requests_list(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(responses.calls[0].request.url, endpoint)

    @responses.activate
    def test_payment_requests_list_optional_params(self):
        data = payment_requests_payload[
            'payment_requests_list_optional_params']
        endpoint = self.api_endpoint + 'payment-requests/'
        responses.add(responses.GET,
                      endpoint,
                      body='{}',
                      content_type='application/json')
        resp = self.api.payment_requests_list(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        parsed_url = urlparse(responses.calls[0].request.url)
        self.assertTrue(endpoint.endswith(parsed_url.path))
        self.assertDictEqual(dict(parse_qsl(parsed_url.query.strip('/'))),
                             data['request'])

    @responses.activate
    def test_payment_request_payment_status(self):
        data = payment_requests_payload['payment_request_payment_status']
        endpoint = self.api_endpoint + 'payment-requests/{id}/{payment_id}/'.format(
            **data['request'])
        responses.add(responses.GET,
                      endpoint,
                      body='{}',
                      content_type='application/json')
        resp = self.api.payment_request_payment_status(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(responses.calls[0].request.url, endpoint)
Ejemplo n.º 19
0
    def create(self, validated_data):
        """
        Create payment request with Instamojo server and save proper
        data in database.

        Parameters
        ----------
        validated_data: OrderedDict

        Returns
        -------
        instance

        Author: Himanshu Shankar (https://himanshus.com)
        """
        from instamojo_wrapper import Instamojo

        from django.db.utils import IntegrityError
        from django.contrib.auth import get_user_model

        # Extract configuration (Also, it's not required by
        # instamojo_wrapper)
        ic = validated_data.pop('configuration')

        # Initialize created_by with None (Will raise an error while
        # saving)
        created_by = None

        # Check if created_by or created_by_id is provided. If so,
        # set created_by and remove it from validated_data
        # Again, its not required by instamojo_wrapper
        if 'created_by' in validated_data:
            created_by = validated_data.pop('created_by')
        elif 'created_by_id' in validated_data:
            user_model = get_user_model()
            id = validated_data.pop('created_by_id')
            try:
                created_by = user_model.objects.get(pk=id)
            except user_model.DoesNotExist:
                raise serializers.ValidationError(_(f"User with ID: {id} does "
                                                    "not exists."))

        # Initialize instamojo wrapper
        imojo = Instamojo(api_key=ic.api_key, auth_token=ic.auth_token,
                          endpoint=ic.base_url)

        # Try to create a payment request with processed validated_data
        try:
            response = imojo.payment_request_create(**validated_data)
        except ConnectionError as err:
            raise APIException(_("Server error occurred while creating "
                                 "payment request with Instamojo: {err}"
                                 .format(err=str(err))))

        if not response['success']:
            raise APIException(_("Server error occurred while creating "
                                 "payment request with Instamojo: {err}"
                                 .format(err=str(response['message']))))

        # Make a copy of successful payment_request
        data = response['payment_request'].copy()

        # Set created_by and configuration again
        if created_by:
            data['created_by'] = created_by
        data['configuration'] = ic

        # Create json dump of original response
        data['instamojo_raw_response'] = json.dumps(response)

        # Call super function to save data
        try:
            return super(PaymentRequestSerializer, self).create(
                validated_data=data)

        # Saving may throw error related to created_by, handle it and
        # throw APIException as this needs to handled at coding level
        # while calling .save()
        except IntegrityError as err:
            raise APIException(_("Server error: {}".format(str(err))))
Ejemplo n.º 20
0
from instamojo_wrapper import Instamojo
from download_products.settings import PAYMENT_API_AUTH_TOKEN,PAYMENT_API_KEY
api = Instamojo(api_key=PAYMENT_API_KEY,
                auth_token=PAYMENT_API_AUTH_TOKEN,
                endpoint='https://test.instamojo.com/api/1.1/')


# Create a new Payment Request
response = api.payment_request_create(
    amount='20',
    purpose='Testing',
    send_email=True,
    email="*****@*****.**",
    redirect_url="http://www.example.com/handle_redirect.py"
    )
# print the long URL of the payment request.
url =  response['payment_request']['longurl']
# print the unique ID(or payment request ID)
print(url)
Ejemplo n.º 21
0
from instamojo_wrapper import Instamojo
from fullecomm.settings import PAYMENT_API_AUTH_TOKEN, PAYMENT_API_KEY

api = Instamojo(api_key=PAYMENT_API_KEY,
                auth_token=PAYMENT_API_AUTH_TOKEN,
                endpoint='https://test.instamojo.com/api/1.1/')

# Create a new Payment Request
response = api.payment_request_create(amount='20',
                                      purpose='Testing ke liye',
                                      send_email=True,
                                      email="*****@*****.**",
                                      redirect_url="http://www.google.com")
# print the long URL of the payment request.
url = response['payment_request']['longurl']
# print the unique ID(or payment request ID)
print(url)
Ejemplo n.º 22
0
class TestPaymentRequests(BaseTestClass):
    def setUp(self):
        self.api_endpoint = 'https://www.instamojo.com/api/1.1/'
        self.api = Instamojo('API-KEY', 'AUTH-TOKEN', self.api_endpoint)

    @responses.activate
    def test_payment_request_create(self):
        data = payment_requests_payload['payment_request_create']
        endpoint = self.api_endpoint + 'payment-requests/'
        responses.add(
            responses.POST,
            endpoint,
            body='{}',
            content_type='application/json'
        )
        resp = self.api.payment_request_create(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(
            responses.calls[0].request.url, endpoint)

    @responses.activate
    def test_payment_request_status(self):
        data = payment_requests_payload['payment_request_status']
        endpoint = self.api_endpoint + 'payment-requests/{id}/'.format(**data['request'])
        responses.add(
            responses.GET,
            endpoint,
            body='{}',
            content_type='application/json'
        )
        resp = self.api.payment_request_status(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(
            responses.calls[0].request.url, endpoint)

    @responses.activate
    def test_payment_requests_list(self):
        data = payment_requests_payload['payment_requests_list']
        endpoint = self.api_endpoint + 'payment-requests/'
        responses.add(
            responses.GET,
            endpoint,
            body='{}',
            content_type='application/json'
        )
        resp = self.api.payment_requests_list(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(
            responses.calls[0].request.url, endpoint)

    @responses.activate
    def test_payment_requests_list_optional_params(self):
        data = payment_requests_payload['payment_requests_list_optional_params']
        endpoint = self.api_endpoint + 'payment-requests/'
        responses.add(
            responses.GET,
            endpoint,
            body='{}',
            content_type='application/json'
        )
        resp = self.api.payment_requests_list(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        parsed_url = urlparse(responses.calls[0].request.url)
        self.assertTrue(endpoint.endswith(parsed_url.path))
        self.assertDictEqual(dict(parse_qsl(parsed_url.query.strip('/'))), data['request'])

    @responses.activate
    def test_payment_request_payment_status(self):
        data = payment_requests_payload['payment_request_payment_status']
        endpoint = self.api_endpoint + 'payment-requests/{id}/{payment_id}/'.format(**data['request'])
        responses.add(
            responses.GET,
            endpoint,
            body='{}',
            content_type='application/json'
        )
        resp = self.api.payment_request_payment_status(**data['request'])
        self.assertEqual(resp, {})
        self.assertEqual(len(responses.calls), 1)
        self.assertEqual(
            responses.calls[0].request.url, endpoint)