Пример #1
0
    def process_view(self, request, view_func, view_args, view_kwargs):
       
        
        current_url = resolve(request.path_info)
        url_name = current_url.url_name
        
        if url_name == 'payment_sucesss': 
            payer_id = request.GET.get('PayerID',None)
            payment_id = request.GET.get('paymentId',None)
            if payer_id is not None and payment_id is not None:
                paypalrestsdk.configure({
                    "mode": settings.PAYPAL_MODE,
                    "client_id": settings.PAYPAL_CLIENT_ID,
                    "client_secret": settings.PAYPAL_CLIENT_SECRET 
                })
                payment = paypalrestsdk.Payment.find(
                    payment_id
                )
               
                if payment.execute({"payer_id": payer_id}):
                    print("Payment execute successfully")
                    if len(payment.transactions) > 0:
                        params = parse_qs(payment.transactions[0].custom)
                        D = PaymentMethod()   
                        D.payment_method = "paypal"
                        D.status = "Aprobbed"
                        D.amount = payment.transactions[0].amount.total
                        D.currency = payment.transactions[0].amount.currency
                        D.save()

                        pf = PaymentMethodFields()
                        pf.payment = D
                        pf.key = "first_name"
                        pf.value = payment.payer.payer_info.first_name
                        pf.save()
                        
                        pf = PaymentMethodFields()
                        pf.payment = D
                        pf.key = "last_name"
                        pf.value = payment.payer.payer_info.last_name
                        pf.save()
                        pf = PaymentMethodFields()
                        pf.payment = D
                        pf.key = "email"
                        pf.value = payment.payer.payer_info.email


                        pf.save()
                            
                           
                        o = Orders()
                        o.status = "pending"
                        o.payment_method = pf


                        try:
                            o.shipping_addresss = Addresess.objects.get(id=int(params['shipping_addresss_id']))
                        except Addresess.DoesNotExist:
                            pass
                        try:
                            o.billing_addresss = Addresess.objects.get(id=int(params['billing_addresss_id']))
                        except Addresess.DoesNotExist:
                            pass
                        try:
                            o.autor = User.objects.get(id=int(params['user_id']))
                        except User.DoesNotExist:
                            pass
                        
                        o.save()

                        cart = Cart(params['cart_id'])

                        for c in cart.items():
                            os = OrderShippingItem()
                            os.order = o
                            os.product = c.product
                            os.variant_id = c.variant_id
                            os.price = c.unit_price
                            os.qty = c.quantity
                            os.save()
Пример #2
0
    def handle(self, *args, **options):
        s = Addresess()
        s.autor = User.objects.get(id=1)
        s.city = "Montreal"
        s.country = "CA"
        s.zip_code = "2003"
        s.first_name = "mike"
        s.last_name = "thonson"
        s.address_line_1 = "montreal canada"
        s.address_line_2 = "Canada"
        s.address_type = "shipping"
        s.save()

        b = Addresess()
        b.autor = User.objects.get(id=1)
        b.city = "Montreal"
        b.country = "CA"
        b.zip_code = "2003"
        b.first_name = "mike"
        b.last_name = "thonson"
        b.address_line_1 = "montreal canada"
        b.address_line_2 = "Canada"
        b.address_type = "billing"
        b.save()

        p = PaymentMethod()
        p.amount = 100.00
        p.currency = "USD"
        p.payment_method = "paypal"
        p.save()

        pf = PaymentMethodFields()
        pf.key = "first_name"
        pf.value = "mike"
        pf.payment = p
        pf.save()

        pf = PaymentMethodFields()
        pf.key = "last_name"
        pf.value = "thonson"
        pf.payment = p
        pf.save()

        pf = PaymentMethodFields()
        pf.key = "city"
        pf.value = "FL"
        pf.payment = p
        pf.save()

        pf = PaymentMethodFields()
        pf.key = "country"
        pf.value = "US"
        pf.payment = p
        pf.save()

        pf = PaymentMethodFields()
        pf.key = "email"
        pf.value = "*****@*****.**"
        pf.payment = p
        pf.save()

        for o in range(1, 100):
            orders = Orders()
            orders.status = "approved"
            orders.autor = User.objects.get(id=1)
            orders.billing_addresss = b
            orders.shipping_addresss = b
            orders.payment_method = p
            orders.save()
            item = OrderShippingItem()
            item.order = orders
            item.product = PostItem.objects.get(id=1)
            item.price = 1.00
            item.qty = 15
            item.save()

        pass
Пример #3
0
def process_mercadopago(request):
        
    if request.method == 'POST':
        pk = request.query_params.get("id")
         
        mp = mercadopago.MP(
            settings.MERCADOPAGO_CLIENT_ID, 
            settings.MERCADOPAGO_CLIENT_SECRET
        )
        paymentInfo = mp.get_payment (pk)
        
        if paymentInfo["status"] == 200:
            data = json.dumps(paymentInfo, indent=4)
          

            D.payment_method = "mercadopago"
            D.status = "Aprobbed"
            D.amount = 0.00
            D.currency = "VEF"

            for d in data['response']['items']:
                D.amount += d.unit_price

            D.save()

            pf = PaymentMethodFields()
            pf.payment = D
            pf.key = "first_name"
            pf.value = data['response']['payer']['first_name']
            pf.save()
            
            pf = PaymentMethodFields()
            pf.payment = D
            pf.key = "last_name"
            pf.value = data['response']['payer']['last_name']
            pf.save()
            pf = PaymentMethodFields()
            pf.payment = D
            pf.key = "email"
            pf.value = data['response']['payer']['email']
            pf.save()

            o = Orders()
            o.status = "pending"
            o.payment_method = pf
            
            try:
                o.shipping_addresss = Addresess.objects.get(id=int(paymentInfo['response']['external_reference']['shipping_addresss_id']))
            except Addresess.DoesNotExist:
                pass
            try:
                o.billing_addresss = Addresess.objects.get(id=int(paymentInfo['response']['external_reference']['billing_addresss_id']))
            except Addresess.DoesNotExist:
                pass
            try:
                o.autor = User.objects.get(id=int(paymentInfo['response']['external_reference']['user_id']))
            except User.DoesNotExist:
                pass
            
            o.save()

            cart = Cart(paymentInfo['response']['external_reference']['cart_id'])

            for c in cart.items():
                os = OrderShippingItem()
                os.order =o
                os.product = c.product
                os.variant_id = c.variant_id
                os.price = c.unit_price
                os.qty = c.quantity
                os.save()

#            payment_new.send(
#                sender=D.__class__, 
#                payment_method="MercadoPago",
#                cart_id=paymentInfo['response']['external_reference']['cart_id'],
#                user_id=paymentInfo['response']['external_reference']['user_id']
#            )

            

    return Response(status=status.HTTP_201_CREATED)