def post(self, request): company = request.data.get("companyId") address = request.data.get("addressId") payment_method = request.data.get("paymentMethod") retry_in_local_request = request.data.get("retryInLocal") total = request.data.get("total") items = request.data.get("items") if payment_method is None \ or total is None or items is None: return Response({'message': 'Some Atribute is not Found'}, status=400) client = Client.objects.get(user=self.request.user) company = Company.objects.get(pk=company) if not company.available_now: return Response({'state': "Cancelado", 'responseCode': 400}) order = Order() order.id_company = company order.state = State.objects.get(pk=1) order.retry_in_local = retry_in_local_request if not retry_in_local_request: order.address = AddressSaved.objects.get(pk=address) order.client = client order.payment_method = PaymentMethod.objects.get( description=payment_method) order.total = int(total) order.save() for item in items: detail_order = DetailOrder() detail_order.order = order detail_order.product = Products.objects.get(pk=item.get('id')) detail_order.quantity = item.get('quantity') detail_order.save() response = { 'dateCreated': formats.date_format(timezone.localtime(order.date), "d/m/Y H:i"), 'orderId': order.pk, 'state': order.state.description, 'responseCode': 200 } title = "Hay un nuevo pedido Pendiente" text = "{} esta esperando a que lo confirmes".format( client.user.first_name) send_notification_to_seller(order, text, title) return Response(response)
def post(self, request): data = request.data link = Link.objects.filter(code=data['code']).first() if not link: raise exceptions.APIException('Invalid code!') try: order = Order() order.code = link.code order.user_id = link.user.id order.ambassador_email = link.user.email order.first_name = data['first_name'] order.last_name = data['last_name'] order.email = data['email'] order.address = data['address'] order.country = data['country'] order.city = data['city'] order.zip = data['zip'] order.save() line_items = [] for item in data['products']: product = Product.objects.filter(pk=item['product_id']).first() quantity = decimal.Decimal(item['quantity']) order_item = OrderItem() order_item.order = order order_item.product_title = product.title order_item.price = product.price order_item.quantity = quantity order_item.ambassador_revenue = decimal.Decimal(.1) * product.price * quantity order_item.admin_revenue = decimal.Decimal(.9) * product.price * quantity order_item.save() line_items.append({ 'name': product.title, 'description': product.description, 'images': [ product.image ], 'amount': int(100 * product.price), 'currency': 'usd', 'quantity': quantity }) stripe.api_key = 'sk_test_51H0wSsFHUJ5mamKOVQx6M8kihCIxpBk6DzOhrf4RrpEgqh2bfpI7vbsVu2j5BT0KditccHBnepG33QudcrtBUHfv00Bbw1XXjL' source = stripe.checkout.Session.create( success_url='http://localhost:5000/success?source={CHECKOUT_SESSION_ID}', cancel_url='http://localhost:5000/error', payment_method_types=['card'], line_items=line_items ) order.transaction_id = source['id'] order.save() return Response(source) except Exception: transaction.rollback() return Response({ 'message': "Error occurred" })
def post(self, request): data = request.data link = Link.objects.filter(code=data['code']).first() if not link: raise exceptions.APIException('Invalid code!') try: order = Order() # creo ordine # DATI PRESI DAL LINK (il carrello) order.code = link.code order.user_id = link.user.id order.ambassador_email = link.user.email # =========================== # DATI PRESI DALLA RICHIESTA POST (dal front-end) order.first_name = data['first_name'] order.last_name = data['last_name'] order.email = data['email'] order.address = data['address'] order.country = data['country'] order.city = data['city'] order.zip = data['zip'] # salvo su db ma nella trnsazione order.save() # preparo lista di items dell'ordine CON I DATI - lista di oggetti json line_items = [] for item in data['products']: product = Product.objects.filter(pk=item['product_id']).first() quantity = decimal.Decimal(item['quantity']) order_item = OrderItem() # creo item order_item.order = order order_item.product_title = product.title order_item.price = product.price order_item.quantity = quantity order_item.ambassador_revenue = decimal.Decimal(.1) * product.price * quantity order_item.admin_revenue = decimal.Decimal(.9) * product.price * quantity order_item.save() # SALVO l'item dell'ordine line_items.append({ 'name': product.title, 'description': product.description, 'images': [ product.image ], 'amount': int(100 * product.price), #in centesimi di dollaro (per stripe) 'currency': 'usd', 'quantity': quantity }) stripe.verify_ssl_certs = False stripe.api_key = "sk_test_B9N7bDJ1lEt8ey2GZ72qCCor" source = stripe.checkout.Session.create( success_url='http://localhost:5000/success?source={CHECKOUT_SESSION_ID}', #URL DEL FRONTEND cancel_url='http://localhost:5000/error', payment_method_types=['card'], line_items=line_items ) order.transaction_id = source['id'] #id della transazione di stripe order.save() return Response(source) except Exception: transaction.rollback() return Response({ 'message': "Error occurred" })