def save_order_payment_result(): """ 保存订单支付结果 :return: """ alipay_dict = request.form.to_dict() alipay_sign = alipay_dict.pop("sign") alipay_client = Alipay( appid='2016092500594612', app_notify_url=None, app_private_key_path=os.path.join(os.path.dirname(__file__), "keys/app_private_key.pem"), alipay_public_key_path=os.path.join(os.path.dirname(__file__), "keys/alilay_public_key.pem"), sign_type='RSA2', debug=True) result = alipay_client.verify(alipay_dict, alipay_sign) if request: order_id = alipay_dict.get("out_trade_no") trade_no = alipay_dict.get("trade_no") try: Order.query.filter_by(id=order_id).update({ "status": "WAIT_COMMENT", "trade_no": "trade_no" }) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(code=RET.OK, msg="OK")
def save_order_payment_result(): """保存订单支付结果""" alipay_dict = request.form.to_dict() # 对支付宝的数据进行分离 提取出支付宝的签名参数sign 和剩下的其他数据 alipay_sign = alipay_dict.pop("sign") # 创建支付宝sdk的工具对象 alipay_client = AliPay( appid="2016081600258081", app_notify_url=None, # 默认回调url app_private_key_path=os.path.join(os.path.dirname(__file__), "keys/app_private_key.pem"), # 私钥 alipay_public_key_path=os.path.join(os.path.dirname(__file__), "keys/alipay_public_key.pem"), # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, sign_type="RSA2", # RSA 或者 RSA2 debug=True # 默认False ) # 借助工具验证参数的合法性 # 如果确定参数是支付宝的,返回True,否则返回false result = alipay_client.verify(alipay_dict, alipay_sign) if result: # 修改数据库的订单状态信息 order_id = alipay_dict.get("out_trade_no") trade_no = alipay_dict.get("trade_no") # 支付宝的交易号 try: Order.query.filter_by(id=order_id).update({"status": "WAIT_COMMENT", "trade_no": trade_no}) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.OK, errmsg="OK")
def put(self, request): data = request.query_params.dict() signature = data.pop("sign") 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) success = alipay.verify(data, signature) if not success: return Response({'message': '非法请求'}, status=status.HTTP_403_FORBIDDEN) # 获取订单编号和支付宝流水号 order_id = data.get('out_trade_no') trade_id = data.get('trade_no') # 校验订单id(order_id) try: order = OrderInfo.objects.get( order_id=order_id, user=request.user, status=OrderInfo.ORDER_STATUS_ENUM['UNPAID']) except OrderInfo.DoesNotExist: return Response({'message': '订单信息有误'}, status=status.HTTP_400_BAD_REQUEST) # 更新订单的支付状态 order.status = OrderInfo.ORDER_STATUS_ENUM['UNSEND'] order.save() return Response({'trade_id': trade_id})