Esempio n. 1
0
    def get(self, request, order_id):
        user = request.user
        try:
            order = OrderInfo.objects.get(
                order_id=order_id,
                user=user,
                pay_method=OrderInfo.PAY_METHODS_ENUM["ALIPAY"],
                status=OrderInfo.ORDER_STATUS_ENUM["UNPAID"],
            )
        except OrderInfo.DoesNotExist:
            return Response({'meaaage': '订单错误'},
                            status=status.HTTP_400_BAD_REQUEST)

        alipay = Alipay(appid="2016100100641406",
                        app_notify_url=None,
                        app_private_key_path=os.path.join(
                            os.path.dirname(os.path.abspath(__file__)),
                            'app_private_key.pem'),
                        alipay_public_key_path=os.path.join(
                            os.path.dirname(os.path.abspath(__file__)),
                            'alipay_public_key.pem'),
                        sign_type="RSA2",
                        debug=True)

        sum_price = order.total_amount
        order_string = alipay.api_alipay_trade_page_pay(
            out_trade_no=order_id,
            total_amount=str(sum_price),
            subject='美多商城',
            return_url='http://www.meiduo.site:8080/pay_success.html',
            notify_url=None  # this is optional
        )
        alipay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string

        return Response({'alipay_url': alipay_url})
Esempio n. 2
0
	def post(self, request):
		'''订单支付'''

		# 用户是否登录
		user = request.user
		if not user.is_authenticated():
			return JsonResponse({'res':0,'errmsg':'用户未登陆'})

		# 接收参数
		order_id = request.POST.get('order_id')

		# 校验参数
		if not order_id:
			return JsonResponse({'res':1,'errmsg':'无效的订单id'})
		
		try:  #查出的订单必须要符合id相同,用户相同,支付方式为3,订单状态为:未支付
			order = OrderInfo.objects.get(order_id = order_id,
											user = user,
											pay_method = 3,
											order_status = 1)
		except OrderInfo.DoesNotExist:
			return JsonResponse({'res':1,'errmsg':订单错误})

		# 业务处理:使用python sdk调用支付宝的支付接口


		# 初始化
		alipay = Alipay(
			appid = "2016093000628658", #自己沙箱中的APPID
			app_notify_url = None, #默认的回调url
			app_private_key_path = os.path.join(settings.BASE_DIR,'apps/order/app_private_key.pem'),
			alipay_public_key_path = os.path.join(settings.BASE_DIR,'apps/order/alipay_public_key.pem'),
			sign_type = "RSA2",  #RSA或者RSA2
			debug = "True"  #沙箱模式就是调试模式
			)
		# 调用支付接口
		# 电脑网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
		total_pay = order.total_price + order.transit_price  #Decimal类型,无法序列化
		order_string = alipay.api_alipay_trade_page_pay(
			out_trade_no = order_id,#订单号
			total_amount = str(total_pay), #原本是Decimal数据类型,无法序列化Json形式,只能先转化为str
			subject = '天天生鲜%s'%order_id, #标题
			return_url = None,
			notify_url = None #都不填,因为我们现在没有公网ip
			)

		# 返回应答
		pay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string
		return JsonResponse({'res':3,'pay_url':pay_url})
Esempio n. 3
0
    def post(self, request):
        """创建alipay对象,调用支付接口"""
        # 获取订单id
        order_id = request.POST.get('order_id')

        # 校验订单id
        if not order_id:
            return JsonResponse({'code':2, 'message':'没有订单id'})

        # 获取订单信息:状态是待支付,支付方式是支付宝
        try:
            order = OrderInfo.objects.get(order_id=order_id, user=request.user,
                                          status=OrderInfo.ORDER_STATUS_ENUM["UNPAID"],
                                          pay_method=OrderInfo.PAY_METHODS_ENUM["ALIPAY"])

        except OrderInfo.DoesNotExist:
            return JsonResponse({'code': 3, 'message': '订单错误'})

        # 创建用于支付宝支付的对象
        alipay = AliPay(
            appid = settings.ALIPAY_APPID,
            app_notify_url = None,  # 默认回调url
            # 自己生产的私钥
            app_private_key_path = settings.APP_PRIVATE_KEY_PATH,
            # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            alipay_public_key_path = settings.ALIPAY_PUBLIC_KEY_PATH,
            sign_type = "RSA2",  # RSA 或者 RSA2
            debug = True  # 默认False 配合沙箱模式使用
        )

        # 电脑网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
        order_string = alipay.api_alipay_trade_page_pay(
            out_trade_no = order_id,
            total_amount = str(order.total_amount),  # 将浮点数转成字符串
            subject = '天天生鲜',
            return_url = None,
            notify_url = None  # 可选, 不填则使用默认notify url
        )

        # 生成url:让用户进入支付宝页面的支付网址
        url = settings.ALIPAY_URL + '?' + order_string

        # 响应结果
        return JsonResponse({'code':0, 'message':'支付成功', 'url':url})
Esempio n. 4
0
def AlipayView(request):
    order_number = request.GET.get('order_number')
    order_total = request.GET.get('total')

    # 实例化支付
    alipay = Alipay(appid='2016101200667735',
                    app_notify_url=None,
                    app_private_key_string=alipay_private_key_string,
                    alipay_public_key_string=alipay_public_key_string,
                    sign_type='RSA2')
    # 实例化订单
    order_string = alipay.api_alipay_trade_page_pay(
        out_trade_no=str(order_number),
        total_amount=str(order_total),
        subject='服装',
        return_url="/Buyer/pay_result/",
        notify_url="/Buyer/pay_result/",
    )  # 网页支付订单

    # 拼接收款地址=支付宝网关+订单返回参数
    result = "https://openapi.alipaydev.com/gateway.do?" + order_string
    return HttpResponseRedirect(result)
Esempio n. 5
0
    def post(self,request):
        user = request.user
        if not user.is_authenticated():
            return redirect(reverse('user:login'))

        ordid_after = request.POST.get('order_id')
        if not ordid_after:
            return JsonResponse({'info':'订单不存在'})
        try:
            Order.objects.get(order_id=ordid_after,user=user,pay_style=1,states=0)
        except Exception as e:
            return JsonResponse({'indo':'订单不存在'})
        # alipay = Alipay(
        #     appid=''
        #     app_notify
        # )
        alipay = Alipay(
            appid='2016091400508206',
            app_notify_url=None,  # 默认回调url
            app_private_key_path=os.path.join(settings.BASE_DIR, "user/orderform/app_private_key.pem"),
            alipay_public_key_path=os.path.join(settings.BASE_DIR, "user/orderform/app_public_key.pem"),
        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
            sign_type="RSA2",  # RSA 或者 RSA2
            debug=True  # 默认False  配合沙箱模式使用
            )

        ord_cost = order.tprice
        order_sit=alipay.api_alipay_trade_page_pay(
            subject='hsrsc',
            out_trade_no=ordid_after,
            total_amount=ord_cost,
            return_url=None,
            notify_url=None,
        )
        # alipay.api_alipay_trade_page_pay这里应该有个结果返回接口
        url = 'https://openapi.alipaydev.com/gateway.do'+ordid_after
        return JsonResponse({'info':'','cost_url':url})