Exemplo n.º 1
0
        /// <summary>
        /// 取消订单
        /// </summary>
        /// <returns></returns>
        public ActionResult CancelFNOrder()
        {
            string orderid       = Context.GetRequest("orderid", string.Empty);
            string orderno       = Context.GetRequest("orderno", string.Empty);
            int    cancelcode    = Context.GetRequestInt("cancel_reason_id", 0);
            string cancel_reason = Context.GetRequest("cancel_reason", string.Empty);

            object data = new FNCancelOrderRequestModel()
            {
                partner_order_code       = orderno,
                order_cancel_reason_code = 2,
                order_cancel_code        = cancelcode,
                order_cancel_description = cancel_reason,
                order_cancel_time        = Convert.ToInt64(FNApi.SingleModel.GetTimeStamp()),
            };
            string url    = FNApi._cancelorderapi;
            string result = FNApi.SingleModel.UseFNApi(data, url);

            if (string.IsNullOrEmpty(result))
            {
                return(Json(new { isok = false, msg = "取消订单失败" }, JsonRequestBehavior.AllowGet));
            }

            FNApiReponseModel <object> reposemodel = JsonConvert.DeserializeObject <FNApiReponseModel <object> >(result);

            if (reposemodel == null || reposemodel.code != 200)
            {
                return(Json(new { isok = false, msg = reposemodel == null ?"接口异常":reposemodel.msg }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                FNOrder order = FNOrderBLL.SingleModel.GetModelByOrderNo(orderno);
                if (order == null)
                {
                    return(Json(new { isok = false, msg = "找不到蜂鸟订单" }, JsonRequestBehavior.AllowGet));
                }

                order.state      = (int)FNOrderEnum.已取消;
                order.updatetime = DateTime.Now;
                order.order_cancel_reason_code = 2;
                order.order_cancel_code        = cancelcode;
                order.order_cancel_description = cancel_reason;
                order.order_cancel_time        = FNApi.SingleModel.GetTimeStamp().ToString();
                bool success = FNOrderBLL.SingleModel.Update(order, "state,updatetime,order_cancel_reason_code,order_cancel_code,order_cancel_description,order_cancel_time");

                if (!success)
                {
                    return(Json(new { isok = false, msg = "修改蜂鸟订单状态失败" }, JsonRequestBehavior.AllowGet));
                }

                FoodGoodsOrder foodGoodOrder = FoodGoodsOrderBLL.SingleModel.GetModel($" Id = {orderid} ");
                if (foodGoodOrder == null)
                {
                    return(Json(new { isok = false, msg = "蜂鸟配送:找不到订单" }, JsonRequestBehavior.AllowGet));
                }
                //退款接口 abel
                if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.微信支付)
                {
                    success = FoodGoodsOrderBLL.SingleModel.outOrder(foodGoodOrder, foodGoodOrder.State);
                }
                else if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.储值支付)
                {
                    SaveMoneySetUser userSaveMoney = SaveMoneySetUserBLL.SingleModel.getModelByUserId(foodGoodOrder.UserId) ?? new SaveMoneySetUser();
                    success = FoodGoodsOrderBLL.SingleModel.outOrderBySaveMoneyUser(foodGoodOrder, userSaveMoney, foodGoodOrder.State);
                }
            }

            return(Json(new { isok = true, msg = result }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 添加订单
        /// </summary>
        /// <returns></returns>
        public ActionResult AddOrder()
        {
            string  orderno = Context.GetRequest("orderno", string.Empty);
            FNOrder order   = new FNOrder();

            order.chain_store_code = "01";
            order.goods_count      = 4;
            //order.invoice = "xxx有限公司";
            //order.is_agent_payment = 0;
            //order.is_invoiced = 1;
            order.items_json = new List <elegood>()
            {
                new elegood()
                {
                    //item_id= "fresh0001",
                    item_name         = "苹果",
                    item_quantity     = 5,
                    item_price        = 10.00f,
                    item_actual_price = 9.50f,
                    //item_size= 1,
                    //item_remark="苹果,轻放",
                    //is_need_package= 1,
                    //is_agent_purchase= 0,
                    //agent_purchase_price=10.00f
                },
                new elegood()
                {
                    //item_id= "fresh0002",
                    item_name         = "香蕉",
                    item_quantity     = 1,
                    item_price        = 20.00f,
                    item_actual_price = 19.00f,
                    //item_size= 2,
                    //item_remark="香蕉,轻放",
                    //is_need_package= 1,
                    //is_agent_purchase= 0,
                    //agent_purchase_price=10.00f
                }
            };
            order.notify_url = FNApi._callbackurl;
            //order.notify_url = "http://123.100.120.22:8090";

            order.order_actual_amount = 48.00f;
            order.order_add_time      = Convert.ToInt64(FNApi.SingleModel.GetTimeStamp(90));
            //order.order_payment_method = 1;
            //order.order_payment_status = 1;
            //order.order_remark = "用户备注";
            order.order_total_amount = 50.00f;
            //order.order_type = 1;
            order.order_weight       = 1f;
            order.partner_order_code = orderno;
            //order.partner_remark = "商户备注信息";
            order.receiver_info = new FNReceiverInfo()
            {
                receiver_name          = "李明",
                receiver_primary_phone = "13900000000",
                //receiver_second_phone = "13911111111",
                receiver_address   = "广东省广州市天河区林和东路149号之八(林和东公交车站步行140米近广州东站广州体育学院)",
                receiver_longitude = 113.32,
                receiver_latitude  = 23.14501,
                //position_source = 1
            };
            //order.require_payment_pay = 50.00f;
            //order.require_receive_time = Convert.ToInt64(_eleapi.GetTimeStamp(90));
            //order.serial_number = "";
            order.transport_info = new FNStoreInfo()
            {
                transport_name      = "01测试",
                transport_address   = "广东省广州市天河区林和东路149号之八(林和东公交车站步行140米近广州东站广州体育学院)",
                transport_longitude = 113.32,
                transport_latitude  = 23.14501,
                //position_source = 1,
                transport_tel = "18718463809",
                //transport_remark = "备注"
            };
            string url    = FNApi._addorderapi;
            string result = FNApi.SingleModel.UseFNApi(order, url);

            return(Json(new { isok = true, msg = result }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 3
0
        /// <summary>
        /// 蜂鸟订单状态改变回调接口
        /// </summary>
        /// <param name="returnModel"></param>
        /// <returns></returns>
        public ActionResult FNnotis(FNApiReponseModel <string> returnModel)
        {
            if (returnModel == null || returnModel.data == null || returnModel.data.Length == 0)
            {
                LogHelper.WriteInfo(this.GetType(), "蜂鸟回调请求参数为空");
                return(Content(""));
            }

            string datajson             = HttpUtility.UrlDecode(returnModel.data);
            FNAccepterOrderModel data   = JsonConvert.DeserializeObject <FNAccepterOrderModel>(datajson);
            string urlencodedata        = returnModel.data;
            DistributionApiConfig model = DistributionApiConfigBLL.SingleModel.GetModelByRedis(FNApi._fnapi_appid);
            string signature            = FNApi.SingleModel.GetSign(model.access_token, urlencodedata, returnModel.salt);

            if (returnModel.signature != signature || data == null)
            {
                LogHelper.WriteInfo(this.GetType(), "蜂鸟配送回调签名错误json:" + JsonConvert.SerializeObject(returnModel) + ",解码后:" + datajson);
                return(Content(""));
            }

            FNOrder order = FNOrderBLL.SingleModel.GetModelByOrderNo(data.partner_order_code);

            if (order == null)
            {
                log4net.LogHelper.WriteInfo(this.GetType(), $"蜂鸟订单回调:找不到订单【{data.partner_order_code}】");
                return(Content(""));
            }

            order.state                = data.order_status;
            order.updatetime           = DateTime.Now;
            order.carrier_driver_name  = data.carrier_driver_name;
            order.carrier_driver_phone = data.carrier_driver_phone;
            order.description          = data.description;
            bool updatebool = FNOrderBLL.SingleModel.Update(order, "state,updatetime,carrier_driver_name,carrier_driver_phone,description");

            if (updatebool && data.order_status == (int)FNOrderEnum.异常)
            {
                FNOrderRelation orelationmodel = FNOrderRelationBLL.SingleModel.GetModelUOrderNo(order.partner_order_code);
                if (orelationmodel == null)
                {
                    log4net.LogHelper.WriteInfo(this.GetType(), "蜂鸟配送取消订单回调发起退款出错:找不到关联该订单的数据");
                    return(Content("success"));
                }

                bool isSuccess = false;
                switch (orelationmodel.ordertype)
                {
                case (int)TmpType.小程序餐饮模板:
                    FoodGoodsOrder foodGoodOrder = FoodGoodsOrderBLL.SingleModel.GetModel($" Id = {orelationmodel.orderid} ");    // and  OrderType ={(int)miniAppFoodOrderType.店内点餐 } ");
                    if (foodGoodOrder == null)
                    {
                        LogHelper.WriteInfo(this.GetType(), "蜂鸟配送:找不到订单");
                        return(Content("success"));
                    }
                    //退款接口 abel
                    if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.微信支付)
                    {
                        isSuccess = FoodGoodsOrderBLL.SingleModel.outOrder(foodGoodOrder, foodGoodOrder.State);
                    }
                    else if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.储值支付)
                    {
                        SaveMoneySetUser userSaveMoney = SaveMoneySetUserBLL.SingleModel.getModelByUserId(foodGoodOrder.UserId) ?? new SaveMoneySetUser();
                        isSuccess = FoodGoodsOrderBLL.SingleModel.outOrderBySaveMoneyUser(foodGoodOrder, userSaveMoney, foodGoodOrder.State);
                    }
                    break;

                case (int)TmpType.小程序专业模板:
                    EntGoodsOrder entorder = EntGoodsOrderBLL.SingleModel.GetModel(orelationmodel.orderid);
                    if (entorder == null)
                    {
                        LogHelper.WriteInfo(this.GetType(), "蜂鸟配送取消订单回调发起退款出错:找不到小程序订单数据");
                        return(Content("success"));
                    }

                    isSuccess = EntGoodsOrderBLL.SingleModel.outOrder(entorder, entorder.State, entorder.BuyMode);
                    if (!isSuccess)
                    {
                        LogHelper.WriteInfo(this.GetType(), "蜂鸟配送取消订单回调发起退款出错:执行退款服务出错");
                        return(Content("success"));
                    }

                    EntGoodsOrderLogBLL.SingleModel.AddLog(entorder.Id, 0, $"蜂鸟:将订单状态改为:{Enum.GetName(typeof(MiniAppEntOrderState), entorder.State)}");
                    break;
                }
            }

            return(Content(""));
        }