Beispiel #1
0
        ///// <summary>
        ///// 生成外部订单号
        ///// </summary>
        ///// <returns></returns>
        //private string CreateOutOrderId(string orderId)
        //{

        //    if (orderId.Length > 10)
        //    {
        //        orderId = orderId.Substring(0, 10);
        //    }
        //    return string.Format("{0}_{1}", DateTime.Now.ToString("yyyyMMddhhmmss"), orderId.PadLeft(10, '0'));

        //}

        ///// <summary>
        ///// 生成签名
        ///// </summary>
        ///// <param name="appId"></param>
        ///// <param name="timeStamp"></param>
        ///// <param name="appkey"></param>
        ///// <returns></returns>
        //public string CreateSign(string appId, string timeStamp, string appkey)
        //{
        //    string sign = ZentCloud.Common.SHA1.SHA1_Encrypt(string.Format("appid={0}&appkey={1}&timestamp={2}", appId, appkey, timeStamp)).ToUpper();
        //    return sign;

        //}


        protected void Button1_Click(object sender, EventArgs e)
        {
            BLLMall bllMall = new BLLMall();

            /// <summary>
            /// Efast
            /// </summary>
            Open.EfastSDK.Client efastClient = new Open.EfastSDK.Client();
            ProductSku           skuInfo     = bllMall.Get <ProductSku>(string.Format("SkuSN='{0}'", txtOrderId.Text));

            if (skuInfo == null)
            {
                txtOrderId.Text = string.Format("条码不存在");
                return;
            }
            var eFastSku = efastClient.GetSkuStock(9, skuInfo.OutBarCode);

            if (eFastSku != null)
            {
                if (eFastSku.sl != skuInfo.Stock)
                {
                    skuInfo.Stock = eFastSku.sl;

                    if (ZentCloud.ZCBLLEngine.BLLBase.ExecuteSql(string.Format("update ZCJ_ProductSku set Stock={0} where SkuId={1}", skuInfo.Stock, skuInfo.SkuId)) >= 0)
                    {
                        txtOrderId.Text = string.Format("同步成功,条码:{0}库存:{1}", skuInfo.OutBarCode, skuInfo.Stock);
                    }
                }
                else
                {
                    txtOrderId.Text = string.Format("库存一致,跳过 条码:{0}库存:{1}", skuInfo.OutBarCode, skuInfo.Stock);
                }
            }
            else
            {
                txtOrderId.Text = "未查到";
            }
        }
Beispiel #2
0
        /// <summary>
        /// 审核通过打款
        /// </summary>
        /// <param name="autoId">记录Id</param>
        /// <param name="userId">操作人账号</param>
        /// <param name="msg">提示信息</param>
        /// <returns></returns>
        public bool Pass(int autoId, string userId, out string msg)
        {
            msg = "";
            var record = Get(autoId);

            if (record.Status == 1)
            {
                msg = "该记录已打款";
                return(false);
            }

            switch (record.Type)
            {
                #region 分销提现
            case "DistributionWithdraw":    //分销提现
                BLLDistribution     bllDis = new BLLDistribution();
                List <WithdrawCash> list   = new List <WithdrawCash>();
                WithdrawCash        model  = Get <WithdrawCash>(string.Format("TranId='{0}'", record.TranId));
                if (model == null)
                {
                    msg = "该记录已标记为失败";
                    return(false);
                }
                list.Add(model);
                if (!bllDis.UpdateWithrawCashStatus(list, 2, out msg))
                {
                    return(false);
                }
                break;
                #endregion

                #region 商城退款
            case "MallRefund":    //退款
                BLLMall      bllMall = new BLLMall();
                WXMallRefund refund  = bllMall.Get <WXMallRefund>(string.Format("RefundId='{0}'", record.TranId));
                switch (refund.Status)
                {
                case 2:
                    msg = "未同意退款";
                    return(false);

                case 5:
                    msg = "未收到货拒绝退款";
                    return(false);

                case 7:
                    msg = "退款申请关闭";
                    return(false);

                default:
                    break;
                }
                if (!bllMall.Refund(refund.OrderDetailId, out msg))
                {
                    return(false);
                }

                break;

                #endregion
            default:
                msg = "未定义的类型";
                return(false);
            }
            record.UpdateTime  = DateTime.Now;
            record.Status      = 1;
            record.OperaUserId = userId;
            if (Update(record))
            {
                return(true);
            }
            return(false);
        }
Beispiel #3
0
        /// <summary>
        /// 冻结积分结算
        /// </summary>
        /// <param name="orderInfo"></param>
        /// <returns></returns>
        public bool SettlementOrderLockScore(WXMallOrderInfo orderInfo, out string msg)
        {
            BLLMall bllMall = new BLLMall();
            BLLWebsiteDomainInfo bllWebsiteDomain = new BLLWebsiteDomainInfo();
            BLLWeixin            bllWeixin        = new BLLWeixin();

            msg = "";
            var lockModel = GetLockScoreByOrder(orderInfo.OrderID);

            int addScore = (int)lockModel.Score;

            if (addScore > 0)
            {
                UserInfo orderUserInfo = bllUser.GetUserInfo(orderInfo.OrderUserID, orderInfo.WebsiteOwner);
                if (orderUserInfo == null)
                {
                    return(false);
                }
                WebsiteInfo websiteInfo = bllMall.Get <WebsiteInfo>(string.Format(" WebsiteOwner='{0}'", orderInfo.WebsiteOwner));

                ZentCloud.ZCBLLEngine.BLLTransaction tran = new ZentCloud.ZCBLLEngine.BLLTransaction();
                try
                {
                    UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                    scoreRecord.AddTime      = DateTime.Now;
                    scoreRecord.Score        = addScore;
                    scoreRecord.TotalScore   = orderUserInfo.TotalScore;
                    scoreRecord.ScoreType    = "OrderSuccess";
                    scoreRecord.UserID       = orderInfo.OrderUserID;
                    scoreRecord.AddNote      = "微商城-交易成功获得积分";
                    scoreRecord.WebSiteOwner = orderInfo.WebsiteOwner;
                    scoreRecord.RelationID   = orderInfo.OrderID;

                    if (!bllMall.Add(scoreRecord, tran))
                    {
                        tran.Rollback();
                        return(false);
                    }
                    if (bllUser.Update(orderUserInfo, string.Format(" TotalScore+={0},HistoryTotalScore+={0}", addScore), string.Format(" AutoID={0}", orderUserInfo.AutoID), tran) <= 0)
                    {
                        tran.Rollback();
                        return(false);
                    }

                    #region 宏巍加积分
                    if (websiteInfo.IsUnionHongware == 1)
                    {
                        Open.HongWareSDK.Client hongWareClient = new Open.HongWareSDK.Client(orderInfo.WebsiteOwner);
                        var hongWareMemberInfo = hongWareClient.GetMemberInfo(orderUserInfo.WXOpenId);
                        if (hongWareMemberInfo.member != null)
                        {
                            if (!hongWareClient.UpdateMemberScore(hongWareMemberInfo.member.mobile, orderUserInfo.WXOpenId, addScore))
                            {
                                tran.Rollback();
                                return(false);
                            }
                        }
                    }
                    #endregion

                    //积分解冻
                    if (!string.IsNullOrWhiteSpace(lockModel.Memo))
                    {
                        lockModel.Memo += ";交易成功获得积分解冻";
                    }
                    else
                    {
                        lockModel.Memo = "交易成功获得积分解冻";
                    }

                    if (Update(
                            new ScoreLockInfo(),
                            string.Format(" Memo+='{0}',LockStatus=1,UnLockTime=GETDATE() ", lockModel.Memo),
                            string.Format(" ForeignkeyId='{0}' AND LockType = 1 ", orderInfo.OrderID),
                            tran
                            ) > 0)
                    {
                        #region 微信通知
                        try
                        {
                            string url = string.Format("http://{0}/customize/shop/?v=1.0&ngroute=/myscores#/myscores", bllWebsiteDomain.GetWebsiteDoMain(orderInfo.WebsiteOwner));
                            bllWeixin.SendTemplateMessageNotifyCommTask(orderUserInfo.WXOpenId, "您有一笔积分已经到账", string.Format("积分:{0}分", (int)lockModel.Score), url, "", "", "", orderInfo.WebsiteOwner);
                        }
                        catch
                        {
                        }
                        #endregion
                    }
                    else
                    {
                        msg = string.Format("处理即将到账积分失败!订单号:{0}", orderInfo.OrderID);
                        tran.Rollback();
                        return(false);
                    }
                }
                catch (Exception ex)
                {
                    msg = ex.Message;
                    tran.Rollback();
                    return(false);
                }

                tran.Commit();
            }

            return(true);
        }
Beispiel #4
0
        /// <summary>
        /// 微信支付
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string BrandWcPayRequest(HttpContext context)
        {
            if (!bllPay.IsWeiXinBrowser)
            {
                resp.errcode = 1;
                resp.errmsg  = "请在微信中打开";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string  orderId     = context.Request["order_id"];
            decimal totalAmount = 0;                                      //订单金额
            string  appId       = "";                                     //微信AppId
            string  mchId       = "";                                     //商户号
            string  key         = "";                                     //api密钥
            string  openId      = "";                                     //openid
            string  ip          = "";                                     //ip
            string  notifyUrl   = baseUrl + "/WxPayNotify/NotifyV2.aspx"; //支付通知地址
            string  body        = "";                                     //订单内容

            if (string.IsNullOrEmpty(orderId))
            {
                resp.errcode = 1;
                resp.errmsg  = "order_id 必传";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            var orderInfo = bllMall.GetOrderInfo(orderId);

            if (orderInfo != null)
            {
                totalAmount = orderInfo.TotalAmount;
                //if (orderInfo.OrderUserID != CurrentUserInfo.UserID)
                //{
                //    resp.errcode = 1;
                //    resp.errmsg = "订单号无效";
                //    return ZentCloud.Common.JSONHelper.ObjectToJson(resp);
                //}
                if (orderInfo.PaymentStatus == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "该订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }

                //更改支付方式
                bllMall.Update(orderInfo, " PaymentType=2 ", string.Format(" (OrderID = '{0}' Or ParentOrderId='{0}') ", orderInfo.OrderID));

                //resp.errcode = 1;
                //resp.errmsg = "订单号不存在";
                //return ZentCloud.Common.JSONHelper.ObjectToJson(resp);
            }
            else
            {
                #region 众筹
                var orderInfoCrowd = bllMall.Get <CrowdFundRecord>(string.Format(" RecordID={0}", orderId));
                if (orderInfoCrowd == null)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号不存在";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.UserID != currentUserInfo.UserID)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号无效";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.Status == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                totalAmount = orderInfoCrowd.Amount;
                notifyUrl   = baseUrl + "/WxPayNotify/NotifyCrowdFundV2.aspx";
                #endregion
            }

            PayConfig payConfig = bllPay.GetPayConfig();
            if (payConfig == null)
            {
                resp.errcode = 1;
                resp.errmsg  = "该商户微信支付还没有配置";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            if ((string.IsNullOrEmpty(payConfig.WXAppId)) || (string.IsNullOrEmpty(payConfig.WXMCH_ID)) || (string.IsNullOrEmpty(payConfig.WXPartnerKey)))
            {
                resp.errcode = 1;
                resp.errmsg  = "该商户微信支付还没有配置";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            appId  = payConfig.WXAppId;
            mchId  = payConfig.WXMCH_ID;
            key    = payConfig.WXPartnerKey;
            openId = currentUserInfo.WXOpenId;
            ip     = context.Request.UserHostAddress;
            string   payReqStr   = bllPay.GetBrandWcPayRequest(orderId, totalAmount, appId, mchId, key, openId, ip, notifyUrl, body);
            WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <WXPayReq>(payReqStr);
            if (!string.IsNullOrEmpty(payReqModel.paySign))
            {
                return(ZentCloud.Common.JSONHelper.ObjectToJson(new
                {
                    errcode = 0,
                    pay_req = payReqModel
                }));
            }
            resp.errcode = 1;
            resp.errmsg  = "获取配置失败";
            return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
        }